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