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