1*9e0e4191SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*9e0e4191SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*9e0e4191SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*9e0e4191SAndrew Rist  * distributed with this work for additional information
6*9e0e4191SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*9e0e4191SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*9e0e4191SAndrew Rist  * "License"); you may not use this file except in compliance
9*9e0e4191SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*9e0e4191SAndrew Rist  *
11*9e0e4191SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*9e0e4191SAndrew Rist  *
13*9e0e4191SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*9e0e4191SAndrew Rist  * software distributed under the License is distributed on an
15*9e0e4191SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*9e0e4191SAndrew Rist  * KIND, either express or implied.  See the License for the
17*9e0e4191SAndrew Rist  * specific language governing permissions and limitations
18*9e0e4191SAndrew Rist  * under the License.
19*9e0e4191SAndrew Rist  *
20*9e0e4191SAndrew Rist  *************************************************************/
21*9e0e4191SAndrew Rist 
22*9e0e4191SAndrew Rist 
23cdf0e10cSrcweir #include "precompiled_reportdesign.hxx"
24cdf0e10cSrcweir #include "metadata.hxx"
25cdf0e10cSrcweir #include <svtools/localresaccess.hxx>
26cdf0e10cSrcweir #include "com/sun/star/inspection/XPropertyHandler.hpp"
27cdf0e10cSrcweir #include <tools/debug.hxx>
28cdf0e10cSrcweir #include <comphelper/extract.hxx>
29cdf0e10cSrcweir #ifndef RTPUI_REPORTDESIGN_HELPID_HRC
30cdf0e10cSrcweir #include "helpids.hrc"
31cdf0e10cSrcweir #endif
32cdf0e10cSrcweir #ifndef _RPTUI_DLGRESID_HRC
33cdf0e10cSrcweir #include "RptResId.hrc"
34cdf0e10cSrcweir #endif
35cdf0e10cSrcweir #ifndef REPORTDESIGN_SHARED_UISTRINGS_HRC
36cdf0e10cSrcweir #include "uistrings.hrc"
37cdf0e10cSrcweir #endif
38cdf0e10cSrcweir 
39cdf0e10cSrcweir #include <functional>
40cdf0e10cSrcweir #include <algorithm>
41cdf0e10cSrcweir 
42cdf0e10cSrcweir //............................................................................
43cdf0e10cSrcweir namespace rptui
44cdf0e10cSrcweir {
45cdf0e10cSrcweir //............................................................................
46cdf0e10cSrcweir 
47cdf0e10cSrcweir 	using namespace ::com::sun::star::uno;
48cdf0e10cSrcweir     using namespace ::com::sun::star;
49cdf0e10cSrcweir 
50cdf0e10cSrcweir 	//========================================================================
51cdf0e10cSrcweir 	//= OPropertyInfoImpl
52cdf0e10cSrcweir 	//========================================================================
53cdf0e10cSrcweir 	struct OPropertyInfoImpl
54cdf0e10cSrcweir 	{
55cdf0e10cSrcweir 		String			sName;
56cdf0e10cSrcweir 		String			sTranslation;
57cdf0e10cSrcweir 		rtl::OString    sHelpId;
58cdf0e10cSrcweir 		sal_Int32       nId;
59cdf0e10cSrcweir 		sal_uInt16      nPos;
60cdf0e10cSrcweir         sal_uInt32      nUIFlags;
61cdf0e10cSrcweir 
62cdf0e10cSrcweir 		OPropertyInfoImpl(
63cdf0e10cSrcweir 						const ::rtl::OUString&		rName,
64cdf0e10cSrcweir 						sal_Int32					_nId,
65cdf0e10cSrcweir 						const String&				aTranslation,
66cdf0e10cSrcweir 						sal_uInt16					nPosId,
67cdf0e10cSrcweir 						const rtl::OString&			_sHelpId,
68cdf0e10cSrcweir                         sal_uInt32                  _nUIFlags);
69cdf0e10cSrcweir 	};
70cdf0e10cSrcweir 
71cdf0e10cSrcweir 	//------------------------------------------------------------------------
OPropertyInfoImpl(const::rtl::OUString & _rName,sal_Int32 _nId,const String & aString,sal_uInt16 nP,const rtl::OString & sHid,sal_uInt32 _nUIFlags)72cdf0e10cSrcweir 	OPropertyInfoImpl::OPropertyInfoImpl(const ::rtl::OUString& _rName, sal_Int32 _nId,
73cdf0e10cSrcweir 								   const String& aString, sal_uInt16 nP, const rtl::OString& sHid, sal_uInt32 _nUIFlags)
74cdf0e10cSrcweir 	   :sName(_rName)
75cdf0e10cSrcweir 	   ,sTranslation(aString)
76cdf0e10cSrcweir 	   ,sHelpId(sHid)
77cdf0e10cSrcweir 	   ,nId(_nId)
78cdf0e10cSrcweir 	   ,nPos(nP)
79cdf0e10cSrcweir        ,nUIFlags(_nUIFlags)
80cdf0e10cSrcweir 	{
81cdf0e10cSrcweir 	}
82cdf0e10cSrcweir 
83cdf0e10cSrcweir 	//------------------------------------------------------------------------
84cdf0e10cSrcweir 	// Vergleichen von PropertyInfo
85cdf0e10cSrcweir     struct PropertyInfoLessByName : public ::std::binary_function< OPropertyInfoImpl, OPropertyInfoImpl, bool >
86cdf0e10cSrcweir     {
operator ()rptui::PropertyInfoLessByName87cdf0e10cSrcweir         bool operator()( const OPropertyInfoImpl& _lhs, const OPropertyInfoImpl& _rhs )
88cdf0e10cSrcweir         {
89cdf0e10cSrcweir             return _lhs.sName < _rhs.sName;
90cdf0e10cSrcweir         }
91cdf0e10cSrcweir     };
92cdf0e10cSrcweir 
93cdf0e10cSrcweir 	//========================================================================
94cdf0e10cSrcweir 	//= OPropertyInfoService
95cdf0e10cSrcweir 	//========================================================================
96cdf0e10cSrcweir #define DEF_INFO( ident, uinameres, helpid, flags )   \
97cdf0e10cSrcweir     OPropertyInfoImpl( PROPERTY_##ident, PROPERTY_ID_##ident, \
98cdf0e10cSrcweir             String( ModuleRes( RID_STR_##uinameres ) ), nPos++, HID_RPT_PROP_##helpid, flags )
99cdf0e10cSrcweir 
100cdf0e10cSrcweir #define DEF_INFO_1( ident, uinameres, helpid, flag1 ) \
101cdf0e10cSrcweir     DEF_INFO( ident, uinameres, helpid, PROP_FLAG_##flag1 )
102cdf0e10cSrcweir 
103cdf0e10cSrcweir #define DEF_INFO_2( ident, uinameres, helpid, flag1, flag2 ) \
104cdf0e10cSrcweir     DEF_INFO( ident, uinameres, helpid, PROP_FLAG_##flag1 | PROP_FLAG_##flag2 )
105cdf0e10cSrcweir 
106cdf0e10cSrcweir #define DEF_INFO_3( ident, uinameres, helpid, flag1, flag2, flag3 ) \
107cdf0e10cSrcweir     DEF_INFO( ident, uinameres, helpid, PROP_FLAG_##flag1 | PROP_FLAG_##flag2 | PROP_FLAG_##flag3 )
108cdf0e10cSrcweir 
109cdf0e10cSrcweir #define DEF_INFO_4( ident, uinameres, helpid, flag1, flag2, flag3, flag4 ) \
110cdf0e10cSrcweir     DEF_INFO( ident, uinameres, helpid, PROP_FLAG_##flag1 | PROP_FLAG_##flag2 | PROP_FLAG_##flag3 | PROP_FLAG_##flag4 )
111cdf0e10cSrcweir 
112cdf0e10cSrcweir #define DEF_INFO_5( ident, uinameres, helpid, flag1, flag2, flag3, flag4, flag5 ) \
113cdf0e10cSrcweir     DEF_INFO( ident, uinameres, helpid, PROP_FLAG_##flag1 | PROP_FLAG_##flag2 | PROP_FLAG_##flag3 | PROP_FLAG_##flag4 | PROP_FLAG_##flag5 )
114cdf0e10cSrcweir 
115cdf0e10cSrcweir     sal_uInt16				OPropertyInfoService::s_nCount = 0;
116cdf0e10cSrcweir 	OPropertyInfoImpl*		OPropertyInfoService::s_pPropertyInfos = NULL;
117cdf0e10cSrcweir 	//------------------------------------------------------------------------
getPropertyInfo()118cdf0e10cSrcweir 	const OPropertyInfoImpl* OPropertyInfoService::getPropertyInfo()
119cdf0e10cSrcweir 	{
120cdf0e10cSrcweir 		if ( s_pPropertyInfos )
121cdf0e10cSrcweir             return s_pPropertyInfos;
122cdf0e10cSrcweir 
123cdf0e10cSrcweir 		OModuleClient aResourceAccess;
124cdf0e10cSrcweir 		// this ensures that we have our resource file loaded
125cdf0e10cSrcweir 
126cdf0e10cSrcweir 		sal_uInt16 nPos = 1;
127cdf0e10cSrcweir         static OPropertyInfoImpl aPropertyInfos[] =
128cdf0e10cSrcweir 		{
129cdf0e10cSrcweir         /*
130cdf0e10cSrcweir         DEF_INFO_?( propname and id,   resoure id,         help id,           flags ),
131cdf0e10cSrcweir         */
132cdf0e10cSrcweir              DEF_INFO_1( FORCENEWPAGE,                  FORCENEWPAGE,               FORCENEWPAGE,               COMPOSEABLE )
133cdf0e10cSrcweir             ,DEF_INFO_1( NEWROWORCOL,                   NEWROWORCOL,                NEWROWORCOL,                COMPOSEABLE )
134cdf0e10cSrcweir             ,DEF_INFO_1( KEEPTOGETHER,                  KEEPTOGETHER,               KEEPTOGETHER,               COMPOSEABLE )
135cdf0e10cSrcweir             ,DEF_INFO_1( CANGROW,                       CANGROW,                    CANGROW,                    COMPOSEABLE )
136cdf0e10cSrcweir             ,DEF_INFO_1( CANSHRINK,                     CANSHRINK,                  CANSHRINK,                  COMPOSEABLE )
137cdf0e10cSrcweir             ,DEF_INFO_1( REPEATSECTION,                 REPEATSECTION,              REPEATSECTION,              COMPOSEABLE )
138cdf0e10cSrcweir             ,DEF_INFO_1( PRINTREPEATEDVALUES,           PRINTREPEATEDVALUES,        PRINTREPEATEDVALUES,        COMPOSEABLE )
139cdf0e10cSrcweir             ,DEF_INFO_1( CONDITIONALPRINTEXPRESSION,    CONDITIONALPRINTEXPRESSION, CONDITIONALPRINTEXPRESSION, COMPOSEABLE )
140cdf0e10cSrcweir             ,DEF_INFO_1( STARTNEWCOLUMN,                STARTNEWCOLUMN,             STARTNEWCOLUMN,             COMPOSEABLE )
141cdf0e10cSrcweir             ,DEF_INFO_1( RESETPAGENUMBER,               RESETPAGENUMBER,            RESETPAGENUMBER,            COMPOSEABLE )
142cdf0e10cSrcweir             ,DEF_INFO_1( PRINTWHENGROUPCHANGE,          PRINTWHENGROUPCHANGE,       PRINTWHENGROUPCHANGE,       COMPOSEABLE )
143cdf0e10cSrcweir             ,DEF_INFO_1( VISIBLE,                       VISIBLE,                    VISIBLE,                    COMPOSEABLE )
144cdf0e10cSrcweir             ,DEF_INFO_1( GROUPKEEPTOGETHER,             GROUPKEEPTOGETHER,          GROUPKEEPTOGETHER,          COMPOSEABLE )
145cdf0e10cSrcweir             ,DEF_INFO_1( PAGEHEADEROPTION,              PAGEHEADEROPTION,           PAGEHEADEROPTION,           COMPOSEABLE )
146cdf0e10cSrcweir             ,DEF_INFO_1( PAGEFOOTEROPTION,              PAGEFOOTEROPTION,           PAGEFOOTEROPTION,           COMPOSEABLE )
147cdf0e10cSrcweir             ,DEF_INFO_1( POSITIONX,                     POSITIONX,                  RPT_POSITIONX,              COMPOSEABLE )
148cdf0e10cSrcweir             ,DEF_INFO_1( POSITIONY,                     POSITIONY,                  RPT_POSITIONY,              COMPOSEABLE )
149cdf0e10cSrcweir             ,DEF_INFO_1( WIDTH,                         WIDTH,                      RPT_WIDTH,                  COMPOSEABLE )
150cdf0e10cSrcweir             ,DEF_INFO_1( HEIGHT,                        HEIGHT,                     RPT_HEIGHT,                 COMPOSEABLE )
151cdf0e10cSrcweir             ,DEF_INFO_1( FONT,                          FONT,                       RPT_FONT,                   COMPOSEABLE )
152cdf0e10cSrcweir             ,DEF_INFO_1( PREEVALUATED,                  PREEVALUATED,               PREEVALUATED,               COMPOSEABLE )
153cdf0e10cSrcweir             ,DEF_INFO_1( DEEPTRAVERSING,                DEEPTRAVERSING,             DEEPTRAVERSING,             COMPOSEABLE )
154cdf0e10cSrcweir             ,DEF_INFO_1( FORMULA,                       FORMULA,                    FORMULA,                    COMPOSEABLE )
155cdf0e10cSrcweir             ,DEF_INFO_1( INITIALFORMULA,                INITIALFORMULA,             INITIALFORMULA,             COMPOSEABLE )
156cdf0e10cSrcweir             ,DEF_INFO_2( TYPE,                          TYPE,                       TYPE,                       COMPOSEABLE,DATA_PROPERTY )
157cdf0e10cSrcweir             ,DEF_INFO_2( DATAFIELD,                     DATAFIELD,                  DATAFIELD,                  COMPOSEABLE,DATA_PROPERTY )
158cdf0e10cSrcweir             ,DEF_INFO_2( FORMULALIST,                   FORMULALIST,                FORMULALIST,                COMPOSEABLE,DATA_PROPERTY )
159cdf0e10cSrcweir             ,DEF_INFO_2( SCOPE,                         SCOPE,                      SCOPE,                      COMPOSEABLE,DATA_PROPERTY )
160cdf0e10cSrcweir             ,DEF_INFO_1( PRESERVEIRI,                   PRESERVEIRI,                PRESERVEIRI,                COMPOSEABLE )
161cdf0e10cSrcweir             ,DEF_INFO_1( BACKCOLOR,                     BACKCOLOR,                  BACKCOLOR,                  COMPOSEABLE )
162cdf0e10cSrcweir             ,DEF_INFO_1( CONTROLBACKGROUND,             BACKCOLOR,                  BACKCOLOR,                  COMPOSEABLE )
163cdf0e10cSrcweir             ,DEF_INFO_1( BACKTRANSPARENT,               BACKTRANSPARENT,            BACKTRANSPARENT,            COMPOSEABLE )
164cdf0e10cSrcweir             ,DEF_INFO_1( CONTROLBACKGROUNDTRANSPARENT,  CONTROLBACKGROUNDTRANSPARENT
165cdf0e10cSrcweir                                                                     ,CONTROLBACKGROUNDTRANSPARENT, COMPOSEABLE )
166cdf0e10cSrcweir             ,DEF_INFO_1( CHARTTYPE,                     CHARTTYPE,                  CHARTTYPE,                  COMPOSEABLE )
167cdf0e10cSrcweir             ,DEF_INFO_1( PREVIEW_COUNT,                 PREVIEW_COUNT,              PREVIEW_COUNT,              COMPOSEABLE )
168cdf0e10cSrcweir             ,DEF_INFO_2( MASTERFIELDS,                  MASTERFIELDS,               MASTERFIELDS,               COMPOSEABLE,DATA_PROPERTY )
169cdf0e10cSrcweir             ,DEF_INFO_2( DETAILFIELDS,                  DETAILFIELDS,               DETAILFIELDS,               COMPOSEABLE,DATA_PROPERTY)
170cdf0e10cSrcweir             ,DEF_INFO_1( AREA,                          AREA,                       AREA,                       COMPOSEABLE )
171cdf0e10cSrcweir             ,DEF_INFO_2( MIMETYPE,                      MIMETYPE,                   MIMETYPE,                   COMPOSEABLE,DATA_PROPERTY )
172cdf0e10cSrcweir             ,DEF_INFO_1( PARAADJUST,                    PARAADJUST,                 PARAADJUST,                 COMPOSEABLE )
173cdf0e10cSrcweir             ,DEF_INFO_1( VERTICALALIGN,                 VERTICALALIGN,              VERTICALALIGN,              COMPOSEABLE )
174cdf0e10cSrcweir 		};
175cdf0e10cSrcweir 
176cdf0e10cSrcweir 		s_pPropertyInfos = aPropertyInfos;
177cdf0e10cSrcweir 		s_nCount = sizeof(aPropertyInfos) / sizeof(OPropertyInfoImpl);
178cdf0e10cSrcweir 
179cdf0e10cSrcweir         ::std::sort( aPropertyInfos, aPropertyInfos + s_nCount, PropertyInfoLessByName() );
180cdf0e10cSrcweir 
181cdf0e10cSrcweir         return s_pPropertyInfos;
182cdf0e10cSrcweir 	}
183cdf0e10cSrcweir 
184cdf0e10cSrcweir 	//------------------------------------------------------------------------
getPropertyId(const String & _rName) const185cdf0e10cSrcweir 	sal_Int32 OPropertyInfoService::getPropertyId(const String& _rName) const
186cdf0e10cSrcweir 	{
187cdf0e10cSrcweir 		const OPropertyInfoImpl* pInfo = getPropertyInfo(_rName);
188cdf0e10cSrcweir 		return pInfo ? pInfo->nId : -1;
189cdf0e10cSrcweir 	}
190cdf0e10cSrcweir 
191cdf0e10cSrcweir 	//------------------------------------------------------------------------
getPropertyTranslation(sal_Int32 _nId) const192cdf0e10cSrcweir 	String OPropertyInfoService::getPropertyTranslation(sal_Int32 _nId) const
193cdf0e10cSrcweir 	{
194cdf0e10cSrcweir 		const OPropertyInfoImpl* pInfo = getPropertyInfo(_nId);
195cdf0e10cSrcweir 		return (pInfo) ? pInfo->sTranslation : String();
196cdf0e10cSrcweir 	}
197cdf0e10cSrcweir 
198cdf0e10cSrcweir 	//------------------------------------------------------------------------
getPropertyHelpId(sal_Int32 _nId) const199cdf0e10cSrcweir 	rtl::OString OPropertyInfoService::getPropertyHelpId(sal_Int32 _nId) const
200cdf0e10cSrcweir 	{
201cdf0e10cSrcweir 		const OPropertyInfoImpl* pInfo = getPropertyInfo(_nId);
202cdf0e10cSrcweir 		return (pInfo) ? pInfo->sHelpId : rtl::OString();
203cdf0e10cSrcweir 	}
204cdf0e10cSrcweir 
205cdf0e10cSrcweir 	//------------------------------------------------------------------------
getPropertyUIFlags(sal_Int32 _nId) const206cdf0e10cSrcweir 	sal_uInt32 OPropertyInfoService::getPropertyUIFlags(sal_Int32 _nId) const
207cdf0e10cSrcweir 	{
208cdf0e10cSrcweir 		const OPropertyInfoImpl* pInfo = getPropertyInfo(_nId);
209cdf0e10cSrcweir 		return (pInfo) ? pInfo->nUIFlags : 0;
210cdf0e10cSrcweir 	}
211cdf0e10cSrcweir 
212cdf0e10cSrcweir 	//------------------------------------------------------------------------
getPropertyInfo(const String & _rName)213cdf0e10cSrcweir 	const OPropertyInfoImpl* OPropertyInfoService::getPropertyInfo(const String& _rName)
214cdf0e10cSrcweir 	{
215cdf0e10cSrcweir 		// intialisierung
216cdf0e10cSrcweir 		if(!s_pPropertyInfos)
217cdf0e10cSrcweir 			getPropertyInfo();
218cdf0e10cSrcweir 		OPropertyInfoImpl  aSearch(_rName, 0L, String(), 0, "", 0);
219cdf0e10cSrcweir 
220cdf0e10cSrcweir 		const OPropertyInfoImpl* pPropInfo = ::std::lower_bound(
221cdf0e10cSrcweir             s_pPropertyInfos, s_pPropertyInfos + s_nCount, aSearch, PropertyInfoLessByName() );
222cdf0e10cSrcweir 
223cdf0e10cSrcweir         if ( ( pPropInfo < s_pPropertyInfos + s_nCount ) && pPropInfo->sName == _rName )
224cdf0e10cSrcweir             return pPropInfo;
225cdf0e10cSrcweir 
226cdf0e10cSrcweir 		return NULL;
227cdf0e10cSrcweir 	}
228cdf0e10cSrcweir 
229cdf0e10cSrcweir 
230cdf0e10cSrcweir 	//------------------------------------------------------------------------
getPropertyInfo(sal_Int32 _nId)231cdf0e10cSrcweir 	const OPropertyInfoImpl* OPropertyInfoService::getPropertyInfo(sal_Int32 _nId)
232cdf0e10cSrcweir 	{
233cdf0e10cSrcweir 		// intialisierung
234cdf0e10cSrcweir 		if(!s_pPropertyInfos)
235cdf0e10cSrcweir 			getPropertyInfo();
236cdf0e10cSrcweir 
237cdf0e10cSrcweir 		// TODO: a real structure which allows quick access by name as well as by id
238cdf0e10cSrcweir 		for (sal_uInt16 i = 0; i < s_nCount; i++)
239cdf0e10cSrcweir 			if (s_pPropertyInfos[i].nId == _nId)
240cdf0e10cSrcweir 				return &s_pPropertyInfos[i];
241cdf0e10cSrcweir 
242cdf0e10cSrcweir 		return NULL;
243cdf0e10cSrcweir 	}
244cdf0e10cSrcweir 
245cdf0e10cSrcweir     //------------------------------------------------------------------------
isComposable(const::rtl::OUString & _rPropertyName,const::com::sun::star::uno::Reference<::com::sun::star::inspection::XPropertyHandler> & _rxFormComponentHandler)246cdf0e10cSrcweir     bool OPropertyInfoService::isComposable( const ::rtl::OUString& _rPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::inspection::XPropertyHandler >& _rxFormComponentHandler )
247cdf0e10cSrcweir     {
248cdf0e10cSrcweir         sal_Int32 nId = getPropertyId( _rPropertyName );
249cdf0e10cSrcweir         if ( nId != -1 )
250cdf0e10cSrcweir         {
251cdf0e10cSrcweir             sal_uInt32 nFlags = getPropertyUIFlags( nId );
252cdf0e10cSrcweir             return ( nFlags & PROP_FLAG_COMPOSEABLE ) != 0;
253cdf0e10cSrcweir         }
254cdf0e10cSrcweir 
255cdf0e10cSrcweir         return _rxFormComponentHandler->isComposable( _rPropertyName );
256cdf0e10cSrcweir     }
257cdf0e10cSrcweir 
258cdf0e10cSrcweir     //------------------------------------------------------------------------
getExcludeProperties(::std::vector<beans::Property> & _rExcludeProperties,const::com::sun::star::uno::Reference<::com::sun::star::inspection::XPropertyHandler> & _xFormComponentHandler)259cdf0e10cSrcweir     void OPropertyInfoService::getExcludeProperties(::std::vector< beans::Property >& _rExcludeProperties,const ::com::sun::star::uno::Reference< ::com::sun::star::inspection::XPropertyHandler >& _xFormComponentHandler)
260cdf0e10cSrcweir     {
261cdf0e10cSrcweir         uno::Sequence< beans::Property > aProps = _xFormComponentHandler->getSupportedProperties();
262cdf0e10cSrcweir         static const ::rtl::OUString pExcludeProperties[] =
263cdf0e10cSrcweir         {
264cdf0e10cSrcweir                 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Enabled")),
265cdf0e10cSrcweir                 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Printable")),
266cdf0e10cSrcweir                 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("WordBreak")),
267cdf0e10cSrcweir                 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MultiLine")),
268cdf0e10cSrcweir                 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Tag")),
269cdf0e10cSrcweir                 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HelpText")),
270cdf0e10cSrcweir                 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HelpURL")),
271cdf0e10cSrcweir                 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MaxTextLen")),
272cdf0e10cSrcweir                 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ReadOnly")),
273cdf0e10cSrcweir                 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Tabstop")),
274cdf0e10cSrcweir                 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("TabIndex")),
275cdf0e10cSrcweir                 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ValueMin")),
276cdf0e10cSrcweir                 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ValueMax")),
277cdf0e10cSrcweir                 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Spin")),
278cdf0e10cSrcweir                 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SpinValue")),
279cdf0e10cSrcweir                 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SpinValueMin")),
280cdf0e10cSrcweir                 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SpinValueMax")),
281cdf0e10cSrcweir                 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultSpinValue")),
282cdf0e10cSrcweir                 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SpinIncrement")),
283cdf0e10cSrcweir                 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Repeat")),
284cdf0e10cSrcweir                 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("RepeatDelay")),
285cdf0e10cSrcweir                 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ControlLabel")), /// TODO: has to be checked
286cdf0e10cSrcweir                 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("LabelControl")),
287cdf0e10cSrcweir                 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Title")), // comment this out if you want to have title feature for charts
288cdf0e10cSrcweir                 PROPERTY_MAXTEXTLEN,
289cdf0e10cSrcweir                 PROPERTY_EFFECTIVEDEFAULT,
290cdf0e10cSrcweir                 PROPERTY_EFFECTIVEMAX,
291cdf0e10cSrcweir                 PROPERTY_EFFECTIVEMIN,
292cdf0e10cSrcweir                 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HideInactiveSelection")),
293cdf0e10cSrcweir                 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SubmitAction")),
294cdf0e10cSrcweir                 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("InputRequired")),
295cdf0e10cSrcweir                 ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("VerticalAlign")),
296cdf0e10cSrcweir                 PROPERTY_ALIGN,
297cdf0e10cSrcweir                 PROPERTY_EMPTY_IS_NULL,
298cdf0e10cSrcweir                 PROPERTY_FILTERPROPOSAL
299cdf0e10cSrcweir                 ,PROPERTY_POSITIONX
300cdf0e10cSrcweir                 ,PROPERTY_POSITIONY
301cdf0e10cSrcweir                 ,PROPERTY_WIDTH
302cdf0e10cSrcweir                 ,PROPERTY_HEIGHT
303cdf0e10cSrcweir                 ,PROPERTY_FONT
304cdf0e10cSrcweir                 ,PROPERTY_LABEL
305cdf0e10cSrcweir                 ,PROPERTY_LINECOLOR
306cdf0e10cSrcweir                 ,PROPERTY_BORDER
307cdf0e10cSrcweir                 ,PROPERTY_BORDERCOLOR
308cdf0e10cSrcweir                 ,PROPERTY_BACKTRANSPARENT
309cdf0e10cSrcweir                 ,PROPERTY_CONTROLBACKGROUND
310cdf0e10cSrcweir                 ,PROPERTY_BACKGROUNDCOLOR
311cdf0e10cSrcweir                 ,PROPERTY_CONTROLBACKGROUNDTRANSPARENT
312cdf0e10cSrcweir                 ,PROPERTY_FORMULALIST
313cdf0e10cSrcweir                 ,PROPERTY_SCOPE
314cdf0e10cSrcweir                 ,PROPERTY_TYPE
315cdf0e10cSrcweir                 ,PROPERTY_DATASOURCENAME
316cdf0e10cSrcweir                 ,PROPERTY_VERTICALALIGN
317cdf0e10cSrcweir         };
318cdf0e10cSrcweir 
319cdf0e10cSrcweir         beans::Property* pPropsIter = aProps.getArray();
320cdf0e10cSrcweir         beans::Property* pPropsEnd = pPropsIter + aProps.getLength();
321cdf0e10cSrcweir         for (; pPropsIter != pPropsEnd; ++pPropsIter)
322cdf0e10cSrcweir         {
323cdf0e10cSrcweir             size_t nPos = 0;
324cdf0e10cSrcweir             for (; nPos < sizeof(pExcludeProperties)/sizeof(pExcludeProperties[0]) && pExcludeProperties[nPos] != pPropsIter->Name;++nPos )
325cdf0e10cSrcweir                 ;
326cdf0e10cSrcweir             if ( nPos == sizeof(pExcludeProperties)/sizeof(pExcludeProperties[0]) )
327cdf0e10cSrcweir                 _rExcludeProperties.push_back(*pPropsIter);
328cdf0e10cSrcweir         }
329cdf0e10cSrcweir     }
330cdf0e10cSrcweir 
331cdf0e10cSrcweir 
332cdf0e10cSrcweir //............................................................................
333cdf0e10cSrcweir } // namespace pcr
334cdf0e10cSrcweir //............................................................................
335cdf0e10cSrcweir 
336