/**************************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 *************************************************************/



#ifndef __com_sun_star_inspection_XPropertyControlFactory_idl__
#define __com_sun_star_inspection_XPropertyControlFactory_idl__

#ifndef __com_sun_star_lang_IllegalArgumentException_idl__
#include <com/sun/star/lang/IllegalArgumentException.idl>
#endif

//=============================================================================
module com {  module sun {  module star {  module inspection {

published interface XPropertyControl;

//-----------------------------------------------------------------------------
/** a factory for <type>XPropertyControl</type>s

    @since OpenOffice 2.0.3
*/
published interface XPropertyControlFactory
{
    /** creates a <type>XPropertyControl</type>

        <p>A <type>XPropertyControlFactory</type> can create any of the control types denoted by
        the <type>PropertyControlType</type> constants.</p>

        @param ControlType
            the type of the requested control

        @param CreateReadOnly
            determines whether the newly created control should be readonly.

            <p>If this argument is <TRUE/>, this does not necessarily mean that the property cannot be
            changed at all in the <type>ObjectInspector</type>. Instead, an <type>XPropertyHandler</type>
            can still decide that there is a dedicated UI for entering the property value,
            which is usually triggered by a <member>LineDescriptor::PrimaryButton</member>.</p>

            <p>Note that this parameter might be ignored if the <member>XObjectInspectorModel::IsReadOnly</member>
            attribute is <TRUE/>, in which case all created property controls must be readonly.</p>

        @returns
            a control of the given type.

        @throws com::sun::star::lang::IllegalArgumentException
            if the given <arg>ControlType</arg> is not a value <type>PropertyControlType</type>
    */
    XPropertyControl    createPropertyControl( [in] short ControlType, [in] boolean CreateReadOnly )
        raises ( com::sun::star::lang::IllegalArgumentException );
};

//=============================================================================

}; }; }; };

#endif

