xref: /AOO41X/main/extensions/source/propctrlr/formmetadata.hxx (revision 46dbaceef8c12a09e4905feda473ecab36e10d03)
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 _EXTENSIONS_PROPCTRLR_FORMMETADATA_HXX_
25 #define _EXTENSIONS_PROPCTRLR_FORMMETADATA_HXX_
26 
27 #include "propertyinfo.hxx"
28 #ifndef _EXTENSIONS_PROPCTRLR_MODULEPRC_HXX_
29 #include "modulepcr.hxx"
30 #endif
31 #include "enumrepresentation.hxx"
32 #include <comphelper/composedprops.hxx>
33 
34 //............................................................................
35 namespace pcr
36 {
37 //............................................................................
38 
39     struct OPropertyInfoImpl;
40 
41     //========================================================================
42     //= OPropertyInfoService
43     //========================================================================
44     class OPropertyInfoService
45                 :public IPropertyInfoService
46                 ,public ::comphelper::IPropertySetComposerCallback
47                 ,public PcrClient
48     {
49     protected:
50         static sal_uInt16               s_nCount;
51         static OPropertyInfoImpl*       s_pPropertyInfos;
52         // TODO: a real structure which allows quick access by name as well as by id
53 
54     public:
55         // IPropertyInfoService
56         virtual sal_Int32                           getPropertyId(const String& _rName) const;
57         virtual String                              getPropertyTranslation(sal_Int32 _nId) const;
58         virtual rtl::OString                        getPropertyHelpId(sal_Int32 _nId) const;
59         virtual sal_Int16                           getPropertyPos(sal_Int32 _nId) const;
60         virtual sal_uInt32                          getPropertyUIFlags(sal_Int32 _nId) const;
61         virtual ::std::vector< ::rtl::OUString >    getPropertyEnumRepresentations(sal_Int32 _nId) const;
62         virtual String                              getPropertyName( sal_Int32 _nPropId );
63 
64         // IPropertySetComposerCallback
65         virtual sal_Bool                isComposeable( const ::rtl::OUString& _rPropertyName ) const;
66 
67     protected:
68         static const OPropertyInfoImpl* getPropertyInfo();
69 
70         static const OPropertyInfoImpl* getPropertyInfo(const String& _rName);
71         static const OPropertyInfoImpl* getPropertyInfo(sal_Int32 _nId);
72     };
73 
74     //========================================================================
75     //= DefaultEnumRepresentation
76     //========================================================================
77     /** an implementation of the IPropertyEnumRepresentation
78 
79         To be used with properties which, in formmetadata.cxx, are declared as ENUM.
80     */
81     class DefaultEnumRepresentation : public IPropertyEnumRepresentation
82     {
83     private:
84         oslInterlockedCount         m_refCount;
85         const IPropertyInfoService& m_rMetaData;
86         ::com::sun::star::uno::Type m_aType;
87         const sal_Int32             m_nPropertyId;
88 
89     public:
90         /** constructs an instance
91 
92             @param _rInfo
93                 An instance implementing IPropertyInfoService. Must live at least as
94                 long as the DefaultEnumRepresentation should live.
95         */
96         DefaultEnumRepresentation( const IPropertyInfoService& _rInfo, const ::com::sun::star::uno::Type& _rType, sal_Int32 _nPropertyId );
97 
98     protected:
99         ~DefaultEnumRepresentation();
100 
101     protected:
102         // IPropertyEnumRepresentation implementqation
103         virtual ::std::vector< ::rtl::OUString >
104                                     SAL_CALL getDescriptions() const;
105         virtual void                SAL_CALL getValueFromDescription( const ::rtl::OUString& _rDescription, ::com::sun::star::uno::Any& _out_rValue ) const;
106         virtual ::rtl::OUString     SAL_CALL getDescriptionForValue( const ::com::sun::star::uno::Any& _rEnumValue ) const;
107 
108         // IReference implementqation
109         virtual oslInterlockedCount SAL_CALL acquire();
110         virtual oslInterlockedCount SAL_CALL release();
111 
112     private:
113         DefaultEnumRepresentation();                                                // never implemented
114         DefaultEnumRepresentation( const DefaultEnumRepresentation& );              // never implemented
115         DefaultEnumRepresentation& operator=( const DefaultEnumRepresentation& );   // never implemented
116     };
117 
118     //========================================================================
119     //= UI flags (for all browseable properties)
120     //========================================================================
121 
122 #define PROP_FLAG_NONE              0x00000000  // no special flag
123 #define PROP_FLAG_FORM_VISIBLE      0x00000001  // the property is visible when inspecting a form object
124 #define PROP_FLAG_DIALOG_VISIBLE    0x00000002  // the property is visible when inspecting a dialog object
125 #define PROP_FLAG_DATA_PROPERTY     0x00000004  // the property is to appear on the "Data" page
126 #define PROP_FLAG_ENUM              0x00000020  // the property is some kind of enum property, i.e. its
127                                                 // value is chosen from a fixed list of possible values
128 #define PROP_FLAG_ENUM_ONE          0x00000060  // the property is an enum property starting with 1
129                                                 //  (note that this includes PROP_FLAG_ENUM)
130 #define PROP_FLAG_COMPOSEABLE       0x00000080  // the property is "composeable", i.e. an intersection of property
131                                                 //  sets should expose it, if all elements do
132 #define PROP_FLAG_EXPERIMENTAL      0x00000100  // the property is experimental, i.e. should not appear in the
133                                                 // UI, unless experimental properties are enabled by a configuraiton
134                                                 // option
135 
136     //========================================================================
137     //= property ids (for all browseable properties)
138     //========================================================================
139 
140     #define PROPERTY_ID_NAME                  1
141     #define PROPERTY_ID_LABEL                 2
142     #define PROPERTY_ID_CONTROLLABEL          3
143     #define PROPERTY_ID_MAXTEXTLEN            4
144     #define PROPERTY_ID_EDITMASK              5
145     #define PROPERTY_ID_LITERALMASK           6
146     #define PROPERTY_ID_STRICTFORMAT          7
147     #define PROPERTY_ID_ENABLED               8
148     #define PROPERTY_ID_READONLY              9
149     #define PROPERTY_ID_PRINTABLE            10
150     #define PROPERTY_ID_CONTROLSOURCE        11
151     #define PROPERTY_ID_TABSTOP              12
152     #define PROPERTY_ID_TABINDEX             13
153     #define PROPERTY_ID_DATASOURCE           14
154     #define PROPERTY_ID_COMMAND              15
155     #define PROPERTY_ID_COMMANDTYPE          16
156     #define PROPERTY_ID_FILTER               17
157     #define PROPERTY_ID_SORT                 18
158     #define PROPERTY_ID_INSERTONLY           19
159     #define PROPERTY_ID_ALLOWADDITIONS       20
160     #define PROPERTY_ID_ALLOWEDITS           21
161     #define PROPERTY_ID_ALLOWDELETIONS       22
162     #define PROPERTY_ID_NAVIGATION           24
163     #define PROPERTY_ID_CYCLE                25
164     #define PROPERTY_ID_HIDDEN_VALUE         26
165     #define PROPERTY_ID_VALUEMIN             27
166     #define PROPERTY_ID_VALUEMAX             28
167     #define PROPERTY_ID_VALUESTEP            29
168     #define PROPERTY_ID_DEFAULT_VALUE        30
169     #define PROPERTY_ID_DECIMAL_ACCURACY     31
170     #define PROPERTY_ID_SHOWTHOUSANDSEP      32
171     #define PROPERTY_ID_REFVALUE             33
172     #define PROPERTY_ID_CURRENCYSYMBOL       34
173     #define PROPERTY_ID_CURRSYM_POSITION     35
174     #define PROPERTY_ID_DATEMIN              36
175     #define PROPERTY_ID_DATEMAX              37
176     #define PROPERTY_ID_DATEFORMAT           38
177     #define PROPERTY_ID_SELECTEDITEMS        39
178     #define PROPERTY_ID_DEFAULT_DATE         40
179     #define PROPERTY_ID_TIMEMIN              41
180     #define PROPERTY_ID_TIMEMAX              42
181     #define PROPERTY_ID_TIMEFORMAT           43
182     #define PROPERTY_ID_DEFAULT_TIME         44
183     #define PROPERTY_ID_EFFECTIVE_MIN        45
184     #define PROPERTY_ID_EFFECTIVE_MAX        46
185     #define PROPERTY_ID_EFFECTIVE_DEFAULT    47
186     #define PROPERTY_ID_FORMATKEY            48
187     #define PROPERTY_ID_CLASSID              50
188     #define PROPERTY_ID_HEIGHT               51
189     #define PROPERTY_ID_WIDTH                52
190     #define PROPERTY_ID_BOUNDCOLUMN          53
191     #define PROPERTY_ID_LISTSOURCETYPE       54
192     #define PROPERTY_ID_LISTSOURCE           55
193     #define PROPERTY_ID_LISTINDEX            56
194     #define PROPERTY_ID_STRINGITEMLIST       57
195     #define PROPERTY_ID_DEFAULT_TEXT         58
196     #define PROPERTY_ID_FONT                 59
197     #define PROPERTY_ID_ALIGN                60
198     #define PROPERTY_ID_ROWHEIGHT            61
199     #define PROPERTY_ID_BACKGROUNDCOLOR      62
200     #define PROPERTY_ID_FILLCOLOR            63
201     #define PROPERTY_ID_ESCAPE_PROCESSING    64
202     #define PROPERTY_ID_LINECOLOR            65
203     #define PROPERTY_ID_BORDER               66
204     #define PROPERTY_ID_DROPDOWN             67
205     #define PROPERTY_ID_AUTOCOMPLETE         68
206     #define PROPERTY_ID_LINECOUNT            69
207     #define PROPERTY_ID_WORDBREAK            70
208     #define PROPERTY_ID_MULTILINE            71
209     #define PROPERTY_ID_MULTISELECTION       72
210     #define PROPERTY_ID_AUTOLINEBREAK        73
211     #define PROPERTY_ID_HSCROLL              74
212     #define PROPERTY_ID_VSCROLL              75
213     #define PROPERTY_ID_SPIN                 76
214     #define PROPERTY_ID_BUTTONTYPE           77
215     #define PROPERTY_ID_TARGET_URL           78
216     #define PROPERTY_ID_TARGET_FRAME         79
217     #define PROPERTY_ID_SUBMIT_ACTION        80
218     #define PROPERTY_ID_SUBMIT_TARGET        81
219     #define PROPERTY_ID_SUBMIT_METHOD        82
220     #define PROPERTY_ID_SUBMIT_ENCODING      83
221     #define PROPERTY_ID_DEFAULT_STATE        84
222     #define PROPERTY_ID_DEFAULTBUTTON        85
223     #define PROPERTY_ID_IMAGE_URL            86
224     #define PROPERTY_ID_DEFAULT_SELECT_SEQ   87
225     #define PROPERTY_ID_ECHO_CHAR            88
226     #define PROPERTY_ID_EMPTY_IS_NULL        89
227     #define PROPERTY_ID_TRISTATE             90
228     #define PROPERTY_ID_MASTERFIELDS         91
229     #define PROPERTY_ID_DETAILFIELDS         92
230     #define PROPERTY_ID_RECORDMARKER         93
231     #define PROPERTY_ID_FILTERPROPOSAL       94
232     #define PROPERTY_ID_TAG                  95
233     #define PROPERTY_ID_HELPTEXT             96
234     #define PROPERTY_ID_HELPURL              97
235     #define PROPERTY_ID_HASNAVIGATION        98
236     #define PROPERTY_ID_POSITIONX            99
237     #define PROPERTY_ID_POSITIONY            100
238     #define PROPERTY_ID_TITLE                101
239     #define PROPERTY_ID_STEP                 102
240     #define PROPERTY_ID_PROGRESSVALUE        103
241     #define PROPERTY_ID_PROGRESSVALUE_MIN    104
242     #define PROPERTY_ID_PROGRESSVALUE_MAX    105
243     #define PROPERTY_ID_SCROLLVALUE          106
244     #define PROPERTY_ID_SCROLLVALUE_MAX      107
245     #define PROPERTY_ID_LINEINCREMENT        108
246     #define PROPERTY_ID_BLOCKINCREMENT       109
247     #define PROPERTY_ID_VISIBLESIZE          110
248     #define PROPERTY_ID_ORIENTATION          111
249     #define PROPERTY_ID_IMAGEPOSITION        112
250     #define PROPERTY_ID_DATE                 113
251     #define PROPERTY_ID_STATE                114
252     #define PROPERTY_ID_TIME                 115
253     #define PROPERTY_ID_VALUE                116
254     #define PROPERTY_ID_SCALEIMAGE           117
255     #define PROPERTY_ID_PUSHBUTTONTYPE       118
256     #define PROPERTY_ID_EFFECTIVE_VALUE      119
257     #define PROPERTY_ID_TEXT                 120
258     #define PROPERTY_ID_BOUND_CELL           121
259     #define PROPERTY_ID_LIST_CELL_RANGE      122
260     #define PROPERTY_ID_CELL_EXCHANGE_TYPE   123
261     #define PROPERTY_ID_SCROLLVALUE_MIN      124
262     #define PROPERTY_ID_DEFAULT_SCROLLVALUE  125
263     #define PROPERTY_ID_REPEAT_DELAY         126
264     #define PROPERTY_ID_SYMBOLCOLOR          127
265     #define PROPERTY_ID_SPINVALUE            128
266     #define PROPERTY_ID_SPINVALUE_MIN        129
267     #define PROPERTY_ID_SPINVALUE_MAX        130
268     #define PROPERTY_ID_DEFAULT_SPINVALUE    131
269     #define PROPERTY_ID_SPININCREMENT        132
270     #define PROPERTY_ID_REPEAT               133
271     #define PROPERTY_ID_SHOW_SCROLLBARS      134
272     #define PROPERTY_ID_ICONSIZE             135
273     #define PROPERTY_ID_SHOW_POSITION        136
274     #define PROPERTY_ID_SHOW_NAVIGATION      137
275     #define PROPERTY_ID_SHOW_RECORDACTIONS   138
276     #define PROPERTY_ID_SHOW_FILTERSORT      139
277     #define PROPERTY_ID_TEXTTYPE             140
278     #define PROPERTY_ID_LINEEND_FORMAT       141
279     #define PROPERTY_ID_TOGGLE               142
280     #define PROPERTY_ID_FOCUSONCLICK         143
281     #define PROPERTY_ID_HIDEINACTIVESELECTION 144
282     #define PROPERTY_ID_VISUALEFFECT         145
283     #define PROPERTY_ID_BORDERCOLOR          146
284     #define PROPERTY_ID_XML_DATA_MODEL       147
285     #define PROPERTY_ID_BIND_EXPRESSION      148
286     #define PROPERTY_ID_XSD_REQUIRED         149
287     #define PROPERTY_ID_XSD_RELEVANT         150
288     #define PROPERTY_ID_XSD_READONLY         151
289     #define PROPERTY_ID_XSD_CONSTRAINT       152
290     #define PROPERTY_ID_XSD_CALCULATION      153
291     #define PROPERTY_ID_XSD_DATA_TYPE        154
292     #define PROPERTY_ID_XSD_WHITESPACES      155
293     #define PROPERTY_ID_XSD_PATTERN          156
294     #define PROPERTY_ID_XSD_LENGTH           157
295     #define PROPERTY_ID_XSD_MIN_LENGTH       158
296     #define PROPERTY_ID_XSD_MAX_LENGTH       159
297     #define PROPERTY_ID_XSD_TOTAL_DIGITS     160
298     #define PROPERTY_ID_XSD_FRACTION_DIGITS  161
299     #define PROPERTY_ID_XSD_MAX_INCLUSIVE_INT        162
300     #define PROPERTY_ID_XSD_MAX_EXCLUSIVE_INT        163
301     #define PROPERTY_ID_XSD_MIN_INCLUSIVE_INT        164
302     #define PROPERTY_ID_XSD_MIN_EXCLUSIVE_INT        165
303     #define PROPERTY_ID_XSD_MAX_INCLUSIVE_DOUBLE     166
304     #define PROPERTY_ID_XSD_MAX_EXCLUSIVE_DOUBLE     167
305     #define PROPERTY_ID_XSD_MIN_INCLUSIVE_DOUBLE     168
306     #define PROPERTY_ID_XSD_MIN_EXCLUSIVE_DOUBLE     169
307     #define PROPERTY_ID_XSD_MAX_INCLUSIVE_DATE       170
308     #define PROPERTY_ID_XSD_MAX_EXCLUSIVE_DATE       171
309     #define PROPERTY_ID_XSD_MIN_INCLUSIVE_DATE       172
310     #define PROPERTY_ID_XSD_MIN_EXCLUSIVE_DATE       173
311     #define PROPERTY_ID_XSD_MAX_INCLUSIVE_TIME       174
312     #define PROPERTY_ID_XSD_MAX_EXCLUSIVE_TIME       175
313     #define PROPERTY_ID_XSD_MIN_INCLUSIVE_TIME       176
314     #define PROPERTY_ID_XSD_MIN_EXCLUSIVE_TIME       177
315     #define PROPERTY_ID_XSD_MAX_INCLUSIVE_DATE_TIME  178
316     #define PROPERTY_ID_XSD_MAX_EXCLUSIVE_DATE_TIME  179
317     #define PROPERTY_ID_XSD_MIN_INCLUSIVE_DATE_TIME  180
318     #define PROPERTY_ID_XSD_MIN_EXCLUSIVE_DATE_TIME  181
319     #define PROPERTY_ID_UNCHECKEDREFVALUE           182
320     #define PROPERTY_ID_SUBMISSION_ID               183
321     #define PROPERTY_ID_XFORMS_BUTTONTYPE           184
322     #define PROPERTY_ID_LIST_BINDING                185
323     #define PROPERTY_ID_VERTICAL_ALIGN              186
324     #define PROPERTY_ID_BINDING_NAME                187
325     #define PROPERTY_ID_DECORATION                  188
326     #define PROPERTY_ID_SELECTION_TYPE              189
327     #define PROPERTY_ID_ROOT_DISPLAYED              190
328     #define PROPERTY_ID_SHOWS_HANDLES               191
329     #define PROPERTY_ID_SHOWS_ROOT_HANDLES          192
330     #define PROPERTY_ID_EDITABLE                    193
331     #define PROPERTY_ID_INVOKES_STOP_NOT_EDITING    194
332     #define PROPERTY_ID_NOLABEL                     195
333     #define PROPERTY_ID_SCALE_MODE                  196
334     #define PROPERTY_ID_INPUT_REQUIRED              197
335     #define PROPERTY_ID_WRITING_MODE                198
336     #define PROPERTY_ID_ENABLE_VISIBLE              199
337     #define PROPERTY_ID_WHEEL_BEHAVIOR              200
338     #define PROPERTY_ID_TEXT_ANCHOR_TYPE            201
339     #define PROPERTY_ID_SHEET_ANCHOR_TYPE           202
340 
341 //............................................................................
342 } // namespace pcr
343 //............................................................................
344 
345 #endif // _EXTENSIONS_PROPCTRLR_FORMMETADATA_HXX_
346 
347