Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*************************************************************************
3 : : *
4 : : * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 : : *
6 : : * Copyright 2000, 2010 Oracle and/or its affiliates.
7 : : *
8 : : * OpenOffice.org - a multi-platform office productivity suite
9 : : *
10 : : * This file is part of OpenOffice.org.
11 : : *
12 : : * OpenOffice.org is free software: you can redistribute it and/or modify
13 : : * it under the terms of the GNU Lesser General Public License version 3
14 : : * only, as published by the Free Software Foundation.
15 : : *
16 : : * OpenOffice.org is distributed in the hope that it will be useful,
17 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 : : * GNU Lesser General Public License version 3 for more details
20 : : * (a copy is included in the LICENSE file that accompanied this code).
21 : : *
22 : : * You should have received a copy of the GNU Lesser General Public License
23 : : * version 3 along with OpenOffice.org. If not, see
24 : : * <http://www.openoffice.org/license.html>
25 : : * for a copy of the LGPLv3 License.
26 : : *
27 : : ************************************************************************/
28 : :
29 : : #ifndef _EXTENSIONS_PROPCTRLR_FORMMETADATA_HXX_
30 : : #define _EXTENSIONS_PROPCTRLR_FORMMETADATA_HXX_
31 : :
32 : : #include "propertyinfo.hxx"
33 : : #include "modulepcr.hxx"
34 : : #include "enumrepresentation.hxx"
35 : :
36 : : //............................................................................
37 : : namespace pcr
38 : : {
39 : : //............................................................................
40 : :
41 : : struct OPropertyInfoImpl;
42 : :
43 : : //========================================================================
44 : : //= OPropertyInfoService
45 : : //========================================================================
46 : 0 : class OPropertyInfoService
47 : : :public IPropertyInfoService
48 : : ,public PcrClient
49 : : {
50 : : protected:
51 : : static sal_uInt16 s_nCount;
52 : : static OPropertyInfoImpl* s_pPropertyInfos;
53 : : // TODO: a real structure which allows quick access by name as well as by id
54 : :
55 : : public:
56 : : // IPropertyInfoService
57 : : virtual sal_Int32 getPropertyId(const String& _rName) const;
58 : : virtual String getPropertyTranslation(sal_Int32 _nId) const;
59 : : virtual rtl::OString getPropertyHelpId(sal_Int32 _nId) const;
60 : : virtual sal_Int16 getPropertyPos(sal_Int32 _nId) const;
61 : : virtual sal_uInt32 getPropertyUIFlags(sal_Int32 _nId) const;
62 : : virtual ::std::vector< ::rtl::OUString > getPropertyEnumRepresentations(sal_Int32 _nId) const;
63 : : virtual String getPropertyName( sal_Int32 _nPropId );
64 : :
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_GROUP_NAME 23
163 : : #define PROPERTY_ID_NAVIGATION 24
164 : : #define PROPERTY_ID_CYCLE 25
165 : : #define PROPERTY_ID_HIDDEN_VALUE 26
166 : : #define PROPERTY_ID_VALUEMIN 27
167 : : #define PROPERTY_ID_VALUEMAX 28
168 : : #define PROPERTY_ID_VALUESTEP 29
169 : : #define PROPERTY_ID_DEFAULT_VALUE 30
170 : : #define PROPERTY_ID_DECIMAL_ACCURACY 31
171 : : #define PROPERTY_ID_SHOWTHOUSANDSEP 32
172 : : #define PROPERTY_ID_REFVALUE 33
173 : : #define PROPERTY_ID_CURRENCYSYMBOL 34
174 : : #define PROPERTY_ID_CURRSYM_POSITION 35
175 : : #define PROPERTY_ID_DATEMIN 36
176 : : #define PROPERTY_ID_DATEMAX 37
177 : : #define PROPERTY_ID_DATEFORMAT 38
178 : : #define PROPERTY_ID_SELECTEDITEMS 39
179 : : #define PROPERTY_ID_DEFAULT_DATE 40
180 : : #define PROPERTY_ID_TIMEMIN 41
181 : : #define PROPERTY_ID_TIMEMAX 42
182 : : #define PROPERTY_ID_TIMEFORMAT 43
183 : : #define PROPERTY_ID_DEFAULT_TIME 44
184 : : #define PROPERTY_ID_EFFECTIVE_MIN 45
185 : : #define PROPERTY_ID_EFFECTIVE_MAX 46
186 : : #define PROPERTY_ID_EFFECTIVE_DEFAULT 47
187 : : #define PROPERTY_ID_FORMATKEY 48
188 : : #define PROPERTY_ID_CLASSID 50
189 : : #define PROPERTY_ID_HEIGHT 51
190 : : #define PROPERTY_ID_WIDTH 52
191 : : #define PROPERTY_ID_BOUNDCOLUMN 53
192 : : #define PROPERTY_ID_LISTSOURCETYPE 54
193 : : #define PROPERTY_ID_LISTSOURCE 55
194 : : #define PROPERTY_ID_LISTINDEX 56
195 : : #define PROPERTY_ID_STRINGITEMLIST 57
196 : : #define PROPERTY_ID_DEFAULT_TEXT 58
197 : : #define PROPERTY_ID_FONT 59
198 : : #define PROPERTY_ID_ALIGN 60
199 : : #define PROPERTY_ID_ROWHEIGHT 61
200 : : #define PROPERTY_ID_BACKGROUNDCOLOR 62
201 : : #define PROPERTY_ID_FILLCOLOR 63
202 : : #define PROPERTY_ID_ESCAPE_PROCESSING 64
203 : : #define PROPERTY_ID_LINECOLOR 65
204 : : #define PROPERTY_ID_BORDER 66
205 : : #define PROPERTY_ID_DROPDOWN 67
206 : : #define PROPERTY_ID_AUTOCOMPLETE 68
207 : : #define PROPERTY_ID_LINECOUNT 69
208 : : #define PROPERTY_ID_WORDBREAK 70
209 : : #define PROPERTY_ID_MULTILINE 71
210 : : #define PROPERTY_ID_MULTISELECTION 72
211 : : #define PROPERTY_ID_AUTOLINEBREAK 73
212 : : #define PROPERTY_ID_HSCROLL 74
213 : : #define PROPERTY_ID_VSCROLL 75
214 : : #define PROPERTY_ID_SPIN 76
215 : : #define PROPERTY_ID_BUTTONTYPE 77
216 : : #define PROPERTY_ID_TARGET_URL 78
217 : : #define PROPERTY_ID_TARGET_FRAME 79
218 : : #define PROPERTY_ID_SUBMIT_ACTION 80
219 : : #define PROPERTY_ID_SUBMIT_TARGET 81
220 : : #define PROPERTY_ID_SUBMIT_METHOD 82
221 : : #define PROPERTY_ID_SUBMIT_ENCODING 83
222 : : #define PROPERTY_ID_DEFAULT_STATE 84
223 : : #define PROPERTY_ID_DEFAULTBUTTON 85
224 : : #define PROPERTY_ID_IMAGE_URL 86
225 : : #define PROPERTY_ID_DEFAULT_SELECT_SEQ 87
226 : : #define PROPERTY_ID_ECHO_CHAR 88
227 : : #define PROPERTY_ID_EMPTY_IS_NULL 89
228 : : #define PROPERTY_ID_TRISTATE 90
229 : : #define PROPERTY_ID_MASTERFIELDS 91
230 : : #define PROPERTY_ID_DETAILFIELDS 92
231 : : #define PROPERTY_ID_RECORDMARKER 93
232 : : #define PROPERTY_ID_FILTERPROPOSAL 94
233 : : #define PROPERTY_ID_TAG 95
234 : : #define PROPERTY_ID_HELPTEXT 96
235 : : #define PROPERTY_ID_HELPURL 97
236 : : #define PROPERTY_ID_HASNAVIGATION 98
237 : : #define PROPERTY_ID_POSITIONX 99
238 : : #define PROPERTY_ID_POSITIONY 100
239 : : #define PROPERTY_ID_TITLE 101
240 : : #define PROPERTY_ID_STEP 102
241 : : #define PROPERTY_ID_PROGRESSVALUE 103
242 : : #define PROPERTY_ID_PROGRESSVALUE_MIN 104
243 : : #define PROPERTY_ID_PROGRESSVALUE_MAX 105
244 : : #define PROPERTY_ID_SCROLLVALUE 106
245 : : #define PROPERTY_ID_SCROLLVALUE_MAX 107
246 : : #define PROPERTY_ID_LINEINCREMENT 108
247 : : #define PROPERTY_ID_BLOCKINCREMENT 109
248 : : #define PROPERTY_ID_VISIBLESIZE 110
249 : : #define PROPERTY_ID_ORIENTATION 111
250 : : #define PROPERTY_ID_IMAGEPOSITION 112
251 : : #define PROPERTY_ID_DATE 113
252 : : #define PROPERTY_ID_STATE 114
253 : : #define PROPERTY_ID_TIME 115
254 : : #define PROPERTY_ID_VALUE 116
255 : : #define PROPERTY_ID_SCALEIMAGE 117
256 : : #define PROPERTY_ID_PUSHBUTTONTYPE 118
257 : : #define PROPERTY_ID_EFFECTIVE_VALUE 119
258 : : #define PROPERTY_ID_TEXT 120
259 : : #define PROPERTY_ID_BOUND_CELL 121
260 : : #define PROPERTY_ID_LIST_CELL_RANGE 122
261 : : #define PROPERTY_ID_CELL_EXCHANGE_TYPE 123
262 : : #define PROPERTY_ID_SCROLLVALUE_MIN 124
263 : : #define PROPERTY_ID_DEFAULT_SCROLLVALUE 125
264 : : #define PROPERTY_ID_REPEAT_DELAY 126
265 : : #define PROPERTY_ID_SYMBOLCOLOR 127
266 : : #define PROPERTY_ID_SPINVALUE 128
267 : : #define PROPERTY_ID_SPINVALUE_MIN 129
268 : : #define PROPERTY_ID_SPINVALUE_MAX 130
269 : : #define PROPERTY_ID_DEFAULT_SPINVALUE 131
270 : : #define PROPERTY_ID_SPININCREMENT 132
271 : : #define PROPERTY_ID_REPEAT 133
272 : : #define PROPERTY_ID_SHOW_SCROLLBARS 134
273 : : #define PROPERTY_ID_ICONSIZE 135
274 : : #define PROPERTY_ID_SHOW_POSITION 136
275 : : #define PROPERTY_ID_SHOW_NAVIGATION 137
276 : : #define PROPERTY_ID_SHOW_RECORDACTIONS 138
277 : : #define PROPERTY_ID_SHOW_FILTERSORT 139
278 : : #define PROPERTY_ID_TEXTTYPE 140
279 : : #define PROPERTY_ID_LINEEND_FORMAT 141
280 : : #define PROPERTY_ID_TOGGLE 142
281 : : #define PROPERTY_ID_FOCUSONCLICK 143
282 : : #define PROPERTY_ID_HIDEINACTIVESELECTION 144
283 : : #define PROPERTY_ID_VISUALEFFECT 145
284 : : #define PROPERTY_ID_BORDERCOLOR 146
285 : : #define PROPERTY_ID_XML_DATA_MODEL 147
286 : : #define PROPERTY_ID_BIND_EXPRESSION 148
287 : : #define PROPERTY_ID_XSD_REQUIRED 149
288 : : #define PROPERTY_ID_XSD_RELEVANT 150
289 : : #define PROPERTY_ID_XSD_READONLY 151
290 : : #define PROPERTY_ID_XSD_CONSTRAINT 152
291 : : #define PROPERTY_ID_XSD_CALCULATION 153
292 : : #define PROPERTY_ID_XSD_DATA_TYPE 154
293 : : #define PROPERTY_ID_XSD_WHITESPACES 155
294 : : #define PROPERTY_ID_XSD_PATTERN 156
295 : : #define PROPERTY_ID_XSD_LENGTH 157
296 : : #define PROPERTY_ID_XSD_MIN_LENGTH 158
297 : : #define PROPERTY_ID_XSD_MAX_LENGTH 159
298 : : #define PROPERTY_ID_XSD_TOTAL_DIGITS 160
299 : : #define PROPERTY_ID_XSD_FRACTION_DIGITS 161
300 : : #define PROPERTY_ID_XSD_MAX_INCLUSIVE_INT 162
301 : : #define PROPERTY_ID_XSD_MAX_EXCLUSIVE_INT 163
302 : : #define PROPERTY_ID_XSD_MIN_INCLUSIVE_INT 164
303 : : #define PROPERTY_ID_XSD_MIN_EXCLUSIVE_INT 165
304 : : #define PROPERTY_ID_XSD_MAX_INCLUSIVE_DOUBLE 166
305 : : #define PROPERTY_ID_XSD_MAX_EXCLUSIVE_DOUBLE 167
306 : : #define PROPERTY_ID_XSD_MIN_INCLUSIVE_DOUBLE 168
307 : : #define PROPERTY_ID_XSD_MIN_EXCLUSIVE_DOUBLE 169
308 : : #define PROPERTY_ID_XSD_MAX_INCLUSIVE_DATE 170
309 : : #define PROPERTY_ID_XSD_MAX_EXCLUSIVE_DATE 171
310 : : #define PROPERTY_ID_XSD_MIN_INCLUSIVE_DATE 172
311 : : #define PROPERTY_ID_XSD_MIN_EXCLUSIVE_DATE 173
312 : : #define PROPERTY_ID_XSD_MAX_INCLUSIVE_TIME 174
313 : : #define PROPERTY_ID_XSD_MAX_EXCLUSIVE_TIME 175
314 : : #define PROPERTY_ID_XSD_MIN_INCLUSIVE_TIME 176
315 : : #define PROPERTY_ID_XSD_MIN_EXCLUSIVE_TIME 177
316 : : #define PROPERTY_ID_XSD_MAX_INCLUSIVE_DATE_TIME 178
317 : : #define PROPERTY_ID_XSD_MAX_EXCLUSIVE_DATE_TIME 179
318 : : #define PROPERTY_ID_XSD_MIN_INCLUSIVE_DATE_TIME 180
319 : : #define PROPERTY_ID_XSD_MIN_EXCLUSIVE_DATE_TIME 181
320 : : #define PROPERTY_ID_UNCHECKEDREFVALUE 182
321 : : #define PROPERTY_ID_SUBMISSION_ID 183
322 : : #define PROPERTY_ID_XFORMS_BUTTONTYPE 184
323 : : #define PROPERTY_ID_LIST_BINDING 185
324 : : #define PROPERTY_ID_VERTICAL_ALIGN 186
325 : : #define PROPERTY_ID_BINDING_NAME 187
326 : : #define PROPERTY_ID_DECORATION 188
327 : : #define PROPERTY_ID_SELECTION_TYPE 189
328 : : #define PROPERTY_ID_ROOT_DISPLAYED 190
329 : : #define PROPERTY_ID_SHOWS_HANDLES 191
330 : : #define PROPERTY_ID_SHOWS_ROOT_HANDLES 192
331 : : #define PROPERTY_ID_EDITABLE 193
332 : : #define PROPERTY_ID_INVOKES_STOP_NOT_EDITING 194
333 : : #define PROPERTY_ID_NOLABEL 195
334 : : #define PROPERTY_ID_SCALE_MODE 196
335 : : #define PROPERTY_ID_INPUT_REQUIRED 197
336 : : #define PROPERTY_ID_WRITING_MODE 198
337 : : #define PROPERTY_ID_ENABLE_VISIBLE 199
338 : : #define PROPERTY_ID_WHEEL_BEHAVIOR 200
339 : : #define PROPERTY_ID_TEXT_ANCHOR_TYPE 201
340 : : #define PROPERTY_ID_SHEET_ANCHOR_TYPE 202
341 : :
342 : : //............................................................................
343 : : } // namespace pcr
344 : : //............................................................................
345 : :
346 : : #endif // _EXTENSIONS_PROPCTRLR_FORMMETADATA_HXX_
347 : :
348 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|