blob: c79ea7889f3175b3d36a8bc68b1c404c71469962 [file] [log] [blame]
/**************************************************************
*
* 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_XObjectInspectorModel_idl__
#define __com_sun_star_inspection_XObjectInspectorModel_idl__
#ifndef __com_sun_star_uno_XInterface_idl__
#include <com/sun/star/uno/XInterface.idl>
#endif
#ifndef __com_sun_star_inspection_PropertyCategoryDescriptor_idl__
#include <com/sun/star/inspection/PropertyCategoryDescriptor.idl>
#endif
//=============================================================================
module com { module sun { module star { module inspection {
interface XPropertyHandler;
//-----------------------------------------------------------------------------
/** describes the model of an <type>ObjectInspector</type>
@see ObjectInspector
@since OpenOffice 2.0.3
*/
published interface XObjectInspectorModel
{
/** describes a set of factories for creating <type>XPropertyHandler</type>s
<p>Every element of the sequence must contain information to create a
<type>XPropertyHandler</type> instance. Two ways are currently supported:
<ul>
<li>A sevice name:</br>
If a sequence element contains a string, this string is interpreted
as service name, and an <type scope="com::sun::star::lang">XMultiComponentFactory</type>
is asked to create an instance of this service.</li>
<li>A factory:<br/>
If a sequence element contains an instance implementing the
<type scope="com::sun::star::lang">XSingleComponentFactory</type> interface, this factory
is used to create a property handler.</li>
</ul></p>
<p>This attribute is usually only evaluated by the <type>ObjectInspector</type> instance
which the model is currently bound to.</p>
<p>The order of factories is important: If two property handlers declare themself responsible
for the same property, the one whose factory is listed <strong>last</strong> wins. Also,
if a handler <code>B</code> wants to supersede a property of another handler <code>A</code>,
<code>A</code>'s factory must precede the factory of <code>B</code>.</p>
@see XPropertyHandler::getSupportedProperties
@see XPropertyHandler::getSupersededProperties
*/
[attribute, readonly] sequence< any > HandlerFactories;
/** describes the property categories used by the property handlers.
<p>Properties can be sorted into different categories, described by the <member>LineDescriptor::Category</member>
attribute, which is filled in <member>XPropertyHandler::describePropertyLine</member>
method of your property handler.<br/>
Those names provided by the handlers are programmatic names. All other information
about categories is part of the <type>PropertyCategoryDescriptor</type>, and
<member>describeCategories</member> assembles information about all categories which
all property handlers provided by the model use.</p>
@return
a sequence of category descriptors. Their relative ordering also describes
the relative ordering of the categories in the <type>ObjectInspector</type>'s
user interface.<br/>
The sequence must not contain two entries with the same programmatic name.<br/>
<br/>
The model implementation might return an empty sequence here, in this case, the ObjectInspector
automatically builds its category information from the categories provided by the
property handlers.
@see PropertyCategoryDescriptor
@see LineDescriptor::Category
*/
sequence< PropertyCategoryDescriptor > describeCategories();
/** retrieves an index in a global property ordering, for a given property name
<p>In the user interface of an ObjectInspector, single properties are represented by
single lines, and those lines are displayed successively. To determine an order of
the property lines, the inspector model can associate an "order index" with each property.
The <type>ObjectInspector</type> will then sort the property lines in a way that they
have the same relative ordering as the "order indexes" of their properties.</p>
<p>Note that the concrete value the model returns for a given property does not
matter. All what matters is that if you want a certain property <code>Foo</code>
to be displayed after another property <code>Bar</code>, then the order index
of <code>Foo</code> should be greater than the order index of <code>Bar</code>.
<p>If for two different properties the same order index is returned, the
<type>ObjectInspector</type> will assume the order in which those properties
were provided by the respective property handler
(<member>XPropertyHandler::getSupportedProperties</member>).<br/>
If two such properties originate from different handlers, they will be ordered according
to the order of the handlers, as provided in the <member>HandlerFactories</member> attribute.</p>
@param PropertyName
the property whose global order index should be retrieved
@return
the global order index of <arg>PropertyName</arg>.
*/
long getPropertyOrderIndex( [in] string PropertyName );
/** indicates that the object inspector should have a help section.
<p>The object inspector displays lines of property/values, optionally grouped
into categories, as described by the property handlers.<br/>
Additionally, the inspector can optionally display a section dedicated to help
texts. Clients could use this section to display context-sensitive help, for
instance short texts explaining the currently selected property.</p>
@since OpenOffice 2.2
*/
[attribute, readonly] boolean HasHelpSection;
/** denotes the minimum number of lines of text to be reserved for the help
section.
<p>This property is ignored by the <type>ObjectInspector</type> if
<member>HasHelpSection</member> is <FALSE/>.</p>
<p>The layout of the <type>ObjectInspector</type> is undefined if
<member>MinHelpTextLines</member> is larger than
<member>MaxHelpTextLines</member>.</p>
@since OpenOffice 2.2
*/
[attribute, readonly] long MinHelpTextLines;
/** denotes the maximum number of lines of text to be reserved for the help
section.
<p>This property is ignored by the <type>ObjectInspector</type> if
<member>HasHelpSection</member> is <FALSE/>.</p>
<p>The layout of the <type>ObjectInspector</type> is undefined if
<member>MaxHelpTextLines</member> is smaller than
<member>MinHelpTextLines</member>.</p>
@since OpenOffice 2.2
*/
[attribute, readonly] long MaxHelpTextLines;
/** determines whether the object inspector's UI should be read-only.
<p>In this case, the user is able to browse through all properties, but cannot
change any of them.</p>
<p>In a read-only object inspector, the property controls are readonly or
disabled themself, and the primary and secondary buttons of a property line
are both disabled.</p>
@see XPropertyControl
@see LineDescriptor
*/
[attribute, bound] boolean IsReadOnly;
};
//=============================================================================
}; }; }; };
#endif