| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| #ifndef _EXTENSIONS_PROPCTRLR_FORMMETADATA_HXX_ |
| #define _EXTENSIONS_PROPCTRLR_FORMMETADATA_HXX_ |
| |
| #include "propertyinfo.hxx" |
| #ifndef _EXTENSIONS_PROPCTRLR_MODULEPRC_HXX_ |
| #include "modulepcr.hxx" |
| #endif |
| #include "enumrepresentation.hxx" |
| #include <comphelper/composedprops.hxx> |
| |
| //............................................................................ |
| namespace pcr |
| { |
| //............................................................................ |
| |
| struct OPropertyInfoImpl; |
| |
| //======================================================================== |
| //= OPropertyInfoService |
| //======================================================================== |
| class OPropertyInfoService |
| :public IPropertyInfoService |
| ,public ::comphelper::IPropertySetComposerCallback |
| ,public PcrClient |
| { |
| protected: |
| static sal_uInt16 s_nCount; |
| static OPropertyInfoImpl* s_pPropertyInfos; |
| // TODO: a real structure which allows quick access by name as well as by id |
| |
| public: |
| // IPropertyInfoService |
| virtual sal_Int32 getPropertyId(const String& _rName) const; |
| virtual String getPropertyTranslation(sal_Int32 _nId) const; |
| virtual rtl::OString getPropertyHelpId(sal_Int32 _nId) const; |
| virtual sal_Int16 getPropertyPos(sal_Int32 _nId) const; |
| virtual sal_uInt32 getPropertyUIFlags(sal_Int32 _nId) const; |
| virtual ::std::vector< ::rtl::OUString > getPropertyEnumRepresentations(sal_Int32 _nId) const; |
| virtual String getPropertyName( sal_Int32 _nPropId ); |
| |
| // IPropertySetComposerCallback |
| virtual sal_Bool isComposeable( const ::rtl::OUString& _rPropertyName ) const; |
| |
| protected: |
| static const OPropertyInfoImpl* getPropertyInfo(); |
| |
| static const OPropertyInfoImpl* getPropertyInfo(const String& _rName); |
| static const OPropertyInfoImpl* getPropertyInfo(sal_Int32 _nId); |
| }; |
| |
| //======================================================================== |
| //= DefaultEnumRepresentation |
| //======================================================================== |
| /** an implementation of the IPropertyEnumRepresentation |
| |
| To be used with properties which, in formmetadata.cxx, are declared as ENUM. |
| */ |
| class DefaultEnumRepresentation : public IPropertyEnumRepresentation |
| { |
| private: |
| oslInterlockedCount m_refCount; |
| const IPropertyInfoService& m_rMetaData; |
| ::com::sun::star::uno::Type m_aType; |
| const sal_Int32 m_nPropertyId; |
| |
| public: |
| /** constructs an instance |
| |
| @param _rInfo |
| An instance implementing IPropertyInfoService. Must live at least as |
| long as the DefaultEnumRepresentation should live. |
| */ |
| DefaultEnumRepresentation( const IPropertyInfoService& _rInfo, const ::com::sun::star::uno::Type& _rType, sal_Int32 _nPropertyId ); |
| |
| protected: |
| ~DefaultEnumRepresentation(); |
| |
| protected: |
| // IPropertyEnumRepresentation implementqation |
| virtual ::std::vector< ::rtl::OUString > |
| SAL_CALL getDescriptions() const; |
| virtual void SAL_CALL getValueFromDescription( const ::rtl::OUString& _rDescription, ::com::sun::star::uno::Any& _out_rValue ) const; |
| virtual ::rtl::OUString SAL_CALL getDescriptionForValue( const ::com::sun::star::uno::Any& _rEnumValue ) const; |
| |
| // IReference implementqation |
| virtual oslInterlockedCount SAL_CALL acquire(); |
| virtual oslInterlockedCount SAL_CALL release(); |
| |
| private: |
| DefaultEnumRepresentation(); // never implemented |
| DefaultEnumRepresentation( const DefaultEnumRepresentation& ); // never implemented |
| DefaultEnumRepresentation& operator=( const DefaultEnumRepresentation& ); // never implemented |
| }; |
| |
| //======================================================================== |
| //= UI flags (for all browseable properties) |
| //======================================================================== |
| |
| #define PROP_FLAG_NONE 0x00000000 // no special flag |
| #define PROP_FLAG_FORM_VISIBLE 0x00000001 // the property is visible when inspecting a form object |
| #define PROP_FLAG_DIALOG_VISIBLE 0x00000002 // the property is visible when inspecting a dialog object |
| #define PROP_FLAG_DATA_PROPERTY 0x00000004 // the property is to appear on the "Data" page |
| #define PROP_FLAG_ENUM 0x00000020 // the property is some kind of enum property, i.e. its |
| // value is chosen from a fixed list of possible values |
| #define PROP_FLAG_ENUM_ONE 0x00000060 // the property is an enum property starting with 1 |
| // (note that this includes PROP_FLAG_ENUM) |
| #define PROP_FLAG_COMPOSEABLE 0x00000080 // the property is "composeable", i.e. an intersection of property |
| // sets should expose it, if all elements do |
| #define PROP_FLAG_EXPERIMENTAL 0x00000100 // the property is experimental, i.e. should not appear in the |
| // UI, unless experimental properties are enabled by a configuraiton |
| // option |
| |
| //======================================================================== |
| //= property ids (for all browseable properties) |
| //======================================================================== |
| |
| #define PROPERTY_ID_NAME 1 |
| #define PROPERTY_ID_LABEL 2 |
| #define PROPERTY_ID_CONTROLLABEL 3 |
| #define PROPERTY_ID_MAXTEXTLEN 4 |
| #define PROPERTY_ID_EDITMASK 5 |
| #define PROPERTY_ID_LITERALMASK 6 |
| #define PROPERTY_ID_STRICTFORMAT 7 |
| #define PROPERTY_ID_ENABLED 8 |
| #define PROPERTY_ID_READONLY 9 |
| #define PROPERTY_ID_PRINTABLE 10 |
| #define PROPERTY_ID_CONTROLSOURCE 11 |
| #define PROPERTY_ID_TABSTOP 12 |
| #define PROPERTY_ID_TABINDEX 13 |
| #define PROPERTY_ID_DATASOURCE 14 |
| #define PROPERTY_ID_COMMAND 15 |
| #define PROPERTY_ID_COMMANDTYPE 16 |
| #define PROPERTY_ID_FILTER 17 |
| #define PROPERTY_ID_SORT 18 |
| #define PROPERTY_ID_INSERTONLY 19 |
| #define PROPERTY_ID_ALLOWADDITIONS 20 |
| #define PROPERTY_ID_ALLOWEDITS 21 |
| #define PROPERTY_ID_ALLOWDELETIONS 22 |
| #define PROPERTY_ID_NAVIGATION 24 |
| #define PROPERTY_ID_CYCLE 25 |
| #define PROPERTY_ID_HIDDEN_VALUE 26 |
| #define PROPERTY_ID_VALUEMIN 27 |
| #define PROPERTY_ID_VALUEMAX 28 |
| #define PROPERTY_ID_VALUESTEP 29 |
| #define PROPERTY_ID_DEFAULT_VALUE 30 |
| #define PROPERTY_ID_DECIMAL_ACCURACY 31 |
| #define PROPERTY_ID_SHOWTHOUSANDSEP 32 |
| #define PROPERTY_ID_REFVALUE 33 |
| #define PROPERTY_ID_CURRENCYSYMBOL 34 |
| #define PROPERTY_ID_CURRSYM_POSITION 35 |
| #define PROPERTY_ID_DATEMIN 36 |
| #define PROPERTY_ID_DATEMAX 37 |
| #define PROPERTY_ID_DATEFORMAT 38 |
| #define PROPERTY_ID_SELECTEDITEMS 39 |
| #define PROPERTY_ID_DEFAULT_DATE 40 |
| #define PROPERTY_ID_TIMEMIN 41 |
| #define PROPERTY_ID_TIMEMAX 42 |
| #define PROPERTY_ID_TIMEFORMAT 43 |
| #define PROPERTY_ID_DEFAULT_TIME 44 |
| #define PROPERTY_ID_EFFECTIVE_MIN 45 |
| #define PROPERTY_ID_EFFECTIVE_MAX 46 |
| #define PROPERTY_ID_EFFECTIVE_DEFAULT 47 |
| #define PROPERTY_ID_FORMATKEY 48 |
| #define PROPERTY_ID_CLASSID 50 |
| #define PROPERTY_ID_HEIGHT 51 |
| #define PROPERTY_ID_WIDTH 52 |
| #define PROPERTY_ID_BOUNDCOLUMN 53 |
| #define PROPERTY_ID_LISTSOURCETYPE 54 |
| #define PROPERTY_ID_LISTSOURCE 55 |
| #define PROPERTY_ID_LISTINDEX 56 |
| #define PROPERTY_ID_STRINGITEMLIST 57 |
| #define PROPERTY_ID_DEFAULT_TEXT 58 |
| #define PROPERTY_ID_FONT 59 |
| #define PROPERTY_ID_ALIGN 60 |
| #define PROPERTY_ID_ROWHEIGHT 61 |
| #define PROPERTY_ID_BACKGROUNDCOLOR 62 |
| #define PROPERTY_ID_FILLCOLOR 63 |
| #define PROPERTY_ID_ESCAPE_PROCESSING 64 |
| #define PROPERTY_ID_LINECOLOR 65 |
| #define PROPERTY_ID_BORDER 66 |
| #define PROPERTY_ID_DROPDOWN 67 |
| #define PROPERTY_ID_AUTOCOMPLETE 68 |
| #define PROPERTY_ID_LINECOUNT 69 |
| #define PROPERTY_ID_WORDBREAK 70 |
| #define PROPERTY_ID_MULTILINE 71 |
| #define PROPERTY_ID_MULTISELECTION 72 |
| #define PROPERTY_ID_AUTOLINEBREAK 73 |
| #define PROPERTY_ID_HSCROLL 74 |
| #define PROPERTY_ID_VSCROLL 75 |
| #define PROPERTY_ID_SPIN 76 |
| #define PROPERTY_ID_BUTTONTYPE 77 |
| #define PROPERTY_ID_TARGET_URL 78 |
| #define PROPERTY_ID_TARGET_FRAME 79 |
| #define PROPERTY_ID_SUBMIT_ACTION 80 |
| #define PROPERTY_ID_SUBMIT_TARGET 81 |
| #define PROPERTY_ID_SUBMIT_METHOD 82 |
| #define PROPERTY_ID_SUBMIT_ENCODING 83 |
| #define PROPERTY_ID_DEFAULT_STATE 84 |
| #define PROPERTY_ID_DEFAULTBUTTON 85 |
| #define PROPERTY_ID_IMAGE_URL 86 |
| #define PROPERTY_ID_DEFAULT_SELECT_SEQ 87 |
| #define PROPERTY_ID_ECHO_CHAR 88 |
| #define PROPERTY_ID_EMPTY_IS_NULL 89 |
| #define PROPERTY_ID_TRISTATE 90 |
| #define PROPERTY_ID_MASTERFIELDS 91 |
| #define PROPERTY_ID_DETAILFIELDS 92 |
| #define PROPERTY_ID_RECORDMARKER 93 |
| #define PROPERTY_ID_FILTERPROPOSAL 94 |
| #define PROPERTY_ID_TAG 95 |
| #define PROPERTY_ID_HELPTEXT 96 |
| #define PROPERTY_ID_HELPURL 97 |
| #define PROPERTY_ID_HASNAVIGATION 98 |
| #define PROPERTY_ID_POSITIONX 99 |
| #define PROPERTY_ID_POSITIONY 100 |
| #define PROPERTY_ID_TITLE 101 |
| #define PROPERTY_ID_STEP 102 |
| #define PROPERTY_ID_PROGRESSVALUE 103 |
| #define PROPERTY_ID_PROGRESSVALUE_MIN 104 |
| #define PROPERTY_ID_PROGRESSVALUE_MAX 105 |
| #define PROPERTY_ID_SCROLLVALUE 106 |
| #define PROPERTY_ID_SCROLLVALUE_MAX 107 |
| #define PROPERTY_ID_LINEINCREMENT 108 |
| #define PROPERTY_ID_BLOCKINCREMENT 109 |
| #define PROPERTY_ID_VISIBLESIZE 110 |
| #define PROPERTY_ID_ORIENTATION 111 |
| #define PROPERTY_ID_IMAGEPOSITION 112 |
| #define PROPERTY_ID_DATE 113 |
| #define PROPERTY_ID_STATE 114 |
| #define PROPERTY_ID_TIME 115 |
| #define PROPERTY_ID_VALUE 116 |
| #define PROPERTY_ID_SCALEIMAGE 117 |
| #define PROPERTY_ID_PUSHBUTTONTYPE 118 |
| #define PROPERTY_ID_EFFECTIVE_VALUE 119 |
| #define PROPERTY_ID_TEXT 120 |
| #define PROPERTY_ID_BOUND_CELL 121 |
| #define PROPERTY_ID_LIST_CELL_RANGE 122 |
| #define PROPERTY_ID_CELL_EXCHANGE_TYPE 123 |
| #define PROPERTY_ID_SCROLLVALUE_MIN 124 |
| #define PROPERTY_ID_DEFAULT_SCROLLVALUE 125 |
| #define PROPERTY_ID_REPEAT_DELAY 126 |
| #define PROPERTY_ID_SYMBOLCOLOR 127 |
| #define PROPERTY_ID_SPINVALUE 128 |
| #define PROPERTY_ID_SPINVALUE_MIN 129 |
| #define PROPERTY_ID_SPINVALUE_MAX 130 |
| #define PROPERTY_ID_DEFAULT_SPINVALUE 131 |
| #define PROPERTY_ID_SPININCREMENT 132 |
| #define PROPERTY_ID_REPEAT 133 |
| #define PROPERTY_ID_SHOW_SCROLLBARS 134 |
| #define PROPERTY_ID_ICONSIZE 135 |
| #define PROPERTY_ID_SHOW_POSITION 136 |
| #define PROPERTY_ID_SHOW_NAVIGATION 137 |
| #define PROPERTY_ID_SHOW_RECORDACTIONS 138 |
| #define PROPERTY_ID_SHOW_FILTERSORT 139 |
| #define PROPERTY_ID_TEXTTYPE 140 |
| #define PROPERTY_ID_LINEEND_FORMAT 141 |
| #define PROPERTY_ID_TOGGLE 142 |
| #define PROPERTY_ID_FOCUSONCLICK 143 |
| #define PROPERTY_ID_HIDEINACTIVESELECTION 144 |
| #define PROPERTY_ID_VISUALEFFECT 145 |
| #define PROPERTY_ID_BORDERCOLOR 146 |
| #define PROPERTY_ID_XML_DATA_MODEL 147 |
| #define PROPERTY_ID_BIND_EXPRESSION 148 |
| #define PROPERTY_ID_XSD_REQUIRED 149 |
| #define PROPERTY_ID_XSD_RELEVANT 150 |
| #define PROPERTY_ID_XSD_READONLY 151 |
| #define PROPERTY_ID_XSD_CONSTRAINT 152 |
| #define PROPERTY_ID_XSD_CALCULATION 153 |
| #define PROPERTY_ID_XSD_DATA_TYPE 154 |
| #define PROPERTY_ID_XSD_WHITESPACES 155 |
| #define PROPERTY_ID_XSD_PATTERN 156 |
| #define PROPERTY_ID_XSD_LENGTH 157 |
| #define PROPERTY_ID_XSD_MIN_LENGTH 158 |
| #define PROPERTY_ID_XSD_MAX_LENGTH 159 |
| #define PROPERTY_ID_XSD_TOTAL_DIGITS 160 |
| #define PROPERTY_ID_XSD_FRACTION_DIGITS 161 |
| #define PROPERTY_ID_XSD_MAX_INCLUSIVE_INT 162 |
| #define PROPERTY_ID_XSD_MAX_EXCLUSIVE_INT 163 |
| #define PROPERTY_ID_XSD_MIN_INCLUSIVE_INT 164 |
| #define PROPERTY_ID_XSD_MIN_EXCLUSIVE_INT 165 |
| #define PROPERTY_ID_XSD_MAX_INCLUSIVE_DOUBLE 166 |
| #define PROPERTY_ID_XSD_MAX_EXCLUSIVE_DOUBLE 167 |
| #define PROPERTY_ID_XSD_MIN_INCLUSIVE_DOUBLE 168 |
| #define PROPERTY_ID_XSD_MIN_EXCLUSIVE_DOUBLE 169 |
| #define PROPERTY_ID_XSD_MAX_INCLUSIVE_DATE 170 |
| #define PROPERTY_ID_XSD_MAX_EXCLUSIVE_DATE 171 |
| #define PROPERTY_ID_XSD_MIN_INCLUSIVE_DATE 172 |
| #define PROPERTY_ID_XSD_MIN_EXCLUSIVE_DATE 173 |
| #define PROPERTY_ID_XSD_MAX_INCLUSIVE_TIME 174 |
| #define PROPERTY_ID_XSD_MAX_EXCLUSIVE_TIME 175 |
| #define PROPERTY_ID_XSD_MIN_INCLUSIVE_TIME 176 |
| #define PROPERTY_ID_XSD_MIN_EXCLUSIVE_TIME 177 |
| #define PROPERTY_ID_XSD_MAX_INCLUSIVE_DATE_TIME 178 |
| #define PROPERTY_ID_XSD_MAX_EXCLUSIVE_DATE_TIME 179 |
| #define PROPERTY_ID_XSD_MIN_INCLUSIVE_DATE_TIME 180 |
| #define PROPERTY_ID_XSD_MIN_EXCLUSIVE_DATE_TIME 181 |
| #define PROPERTY_ID_UNCHECKEDREFVALUE 182 |
| #define PROPERTY_ID_SUBMISSION_ID 183 |
| #define PROPERTY_ID_XFORMS_BUTTONTYPE 184 |
| #define PROPERTY_ID_LIST_BINDING 185 |
| #define PROPERTY_ID_VERTICAL_ALIGN 186 |
| #define PROPERTY_ID_BINDING_NAME 187 |
| #define PROPERTY_ID_DECORATION 188 |
| #define PROPERTY_ID_SELECTION_TYPE 189 |
| #define PROPERTY_ID_ROOT_DISPLAYED 190 |
| #define PROPERTY_ID_SHOWS_HANDLES 191 |
| #define PROPERTY_ID_SHOWS_ROOT_HANDLES 192 |
| #define PROPERTY_ID_EDITABLE 193 |
| #define PROPERTY_ID_INVOKES_STOP_NOT_EDITING 194 |
| #define PROPERTY_ID_NOLABEL 195 |
| #define PROPERTY_ID_SCALE_MODE 196 |
| #define PROPERTY_ID_INPUT_REQUIRED 197 |
| #define PROPERTY_ID_WRITING_MODE 198 |
| #define PROPERTY_ID_ENABLE_VISIBLE 199 |
| #define PROPERTY_ID_WHEEL_BEHAVIOR 200 |
| #define PROPERTY_ID_TEXT_ANCHOR_TYPE 201 |
| #define PROPERTY_ID_SHEET_ANCHOR_TYPE 202 |
| |
| //............................................................................ |
| } // namespace pcr |
| //............................................................................ |
| |
| #endif // _EXTENSIONS_PROPCTRLR_FORMMETADATA_HXX_ |
| |