1/************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24#ifndef __com_sun_star_inspection_XObjectInspectorModel_idl__ 25#define __com_sun_star_inspection_XObjectInspectorModel_idl__ 26 27#ifndef __com_sun_star_uno_XInterface_idl__ 28#include <com/sun/star/uno/XInterface.idl> 29#endif 30#ifndef __com_sun_star_inspection_PropertyCategoryDescriptor_idl__ 31#include <com/sun/star/inspection/PropertyCategoryDescriptor.idl> 32#endif 33 34//============================================================================= 35module com { module sun { module star { module inspection { 36 37interface XPropertyHandler; 38 39//----------------------------------------------------------------------------- 40/** describes the model of an <type>ObjectInspector</type> 41 42 @see ObjectInspector 43 44 @since OpenOffice 2.0.3 45*/ 46published interface XObjectInspectorModel 47{ 48 /** describes a set of factories for creating <type>XPropertyHandler</type>s 49 50 <p>Every element of the sequence must contain information to create a 51 <type>XPropertyHandler</type> instance. Two ways are currently supported: 52 <ul> 53 <li>A sevice name:</br> 54 If a sequence element contains a string, this string is interpreted 55 as service name, and an <type scope="com::sun::star::lang">XMultiComponentFactory</type> 56 is asked to create an instance of this service.</li> 57 <li>A factory:<br/> 58 If a sequence element contains an instance implementing the 59 <type scope="com::sun::star::lang">XSingleComponentFactory</type> interface, this factory 60 is used to create a property handler.</li> 61 </ul></p> 62 63 <p>This attribute is usually only evaluated by the <type>ObjectInspector</type> instance 64 which the model is currently bound to.</p> 65 66 <p>The order of factories is important: If two property handlers declare themself responsible 67 for the same property, the one whose factory is listed <strong>last</strong> wins. Also, 68 if a handler <code>B</code> wants to supersede a property of another handler <code>A</code>, 69 <code>A</code>'s factory must precede the factory of <code>B</code>.</p> 70 71 @see XPropertyHandler::getSupportedProperties 72 @see XPropertyHandler::getSupersededProperties 73 */ 74 [attribute, readonly] sequence< any > HandlerFactories; 75 76 /** describes the property categories used by the property handlers. 77 78 <p>Properties can be sorted into different categories, described by the <member>LineDescriptor::Category</member> 79 attribute, which is filled in <member>XPropertyHandler::describePropertyLine</member> 80 method of your property handler.<br/> 81 Those names provided by the handlers are programmatic names. All other information 82 about categories is part of the <type>PropertyCategoryDescriptor</type>, and 83 <member>describeCategories</member> assembles information about all categories which 84 all property handlers provided by the model use.</p> 85 86 @return 87 a sequence of category descriptors. Their relative ordering also describes 88 the relative ordering of the categories in the <type>ObjectInspector</type>'s 89 user interface.<br/> 90 The sequence must not contain two entries with the same programmatic name.<br/> 91 <br/> 92 The model implementation might return an empty sequence here, in this case, the ObjectInspector 93 automatically builds its category information from the categories provided by the 94 property handlers. 95 @see PropertyCategoryDescriptor 96 @see LineDescriptor::Category 97 */ 98 sequence< PropertyCategoryDescriptor > describeCategories(); 99 100 /** retrieves an index in a global property ordering, for a given property name 101 102 <p>In the user interface of an ObjectInspector, single properties are represented by 103 single lines, and those lines are displayed successively. To determine an order of 104 the property lines, the inspector model can associate an "order index" with each property. 105 The <type>ObjectInspector</type> will then sort the property lines in a way that they 106 have the same relative ordering as the "order indexes" of their properties.</p> 107 108 <p>Note that the concrete value the model returns for a given property does not 109 matter. All what matters is that if you want a certain property <code>Foo</code> 110 to be displayed after another property <code>Bar</code>, then the order index 111 of <code>Foo</code> should be greater than the order index of <code>Bar</code>. 112 113 <p>If for two different properties the same order index is returned, the 114 <type>ObjectInspector</type> will assume the order in which those properties 115 were provided by the respective property handler 116 (<member>XPropertyHandler::getSupportedProperties</member>).<br/> 117 If two such properties originate from different handlers, they will be ordered according 118 to the order of the handlers, as provided in the <member>HandlerFactories</member> attribute.</p> 119 120 @param PropertyName 121 the property whose global order index should be retrieved 122 @return 123 the global order index of <arg>PropertyName</arg>. 124 */ 125 long getPropertyOrderIndex( [in] string PropertyName ); 126 127 /** indicates that the object inspector should have a help section. 128 129 <p>The object inspector displays lines of property/values, optionally grouped 130 into categories, as described by the property handlers.<br/> 131 Additionally, the inspector can optionally display a section dedicated to help 132 texts. Clients could use this section to display context-sensitive help, for 133 instance short texts explaining the currently selected property.</p> 134 135 @since OpenOffice 2.2 136 */ 137 [attribute, readonly] boolean HasHelpSection; 138 139 /** denotes the minimum number of lines of text to be reserved for the help 140 section. 141 142 <p>This property is ignored by the <type>ObjectInspector</type> if 143 <member>HasHelpSection</member> is <FALSE/>.</p> 144 145 <p>The layout of the <type>ObjectInspector</type> is undefined if 146 <member>MinHelpTextLines</member> is larger than 147 <member>MaxHelpTextLines</member>.</p> 148 149 @since OpenOffice 2.2 150 */ 151 [attribute, readonly] long MinHelpTextLines; 152 153 /** denotes the maximum number of lines of text to be reserved for the help 154 section. 155 156 <p>This property is ignored by the <type>ObjectInspector</type> if 157 <member>HasHelpSection</member> is <FALSE/>.</p> 158 159 <p>The layout of the <type>ObjectInspector</type> is undefined if 160 <member>MaxHelpTextLines</member> is smaller than 161 <member>MinHelpTextLines</member>.</p> 162 163 @since OpenOffice 2.2 164 */ 165 [attribute, readonly] long MaxHelpTextLines; 166 167 /** determines whether the object inspector's UI should be read-only. 168 169 <p>In this case, the user is able to browse through all properties, but cannot 170 change any of them.</p> 171 172 <p>In a read-only object inspector, the property controls are readonly or 173 disabled themself, and the primary and secondary buttons of a property line 174 are both disabled.</p> 175 176 @see XPropertyControl 177 @see LineDescriptor 178 */ 179 [attribute, bound] boolean IsReadOnly; 180}; 181 182//============================================================================= 183 184}; }; }; }; 185 186#endif 187 188 189