1*24acc546SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*24acc546SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*24acc546SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*24acc546SAndrew Rist  * distributed with this work for additional information
6*24acc546SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*24acc546SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*24acc546SAndrew Rist  * "License"); you may not use this file except in compliance
9*24acc546SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*24acc546SAndrew Rist  *
11*24acc546SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*24acc546SAndrew Rist  *
13*24acc546SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*24acc546SAndrew Rist  * software distributed under the License is distributed on an
15*24acc546SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*24acc546SAndrew Rist  * KIND, either express or implied.  See the License for the
17*24acc546SAndrew Rist  * specific language governing permissions and limitations
18*24acc546SAndrew Rist  * under the License.
19*24acc546SAndrew Rist  *
20*24acc546SAndrew Rist  *************************************************************/
21*24acc546SAndrew Rist 
22*24acc546SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_forms.hxx"
26cdf0e10cSrcweir #include "EditBase.hxx"
27cdf0e10cSrcweir #include "property.hxx"
28cdf0e10cSrcweir #ifndef _FRM_PROPERTY_HRC_
29cdf0e10cSrcweir #include "property.hrc"
30cdf0e10cSrcweir #endif
31cdf0e10cSrcweir #include "services.hxx"
32cdf0e10cSrcweir #include <tools/debug.hxx>
33cdf0e10cSrcweir #include <comphelper/basicio.hxx>
34cdf0e10cSrcweir #include <cppuhelper/queryinterface.hxx>
35cdf0e10cSrcweir #include "frm_resource.hxx"
36cdf0e10cSrcweir #ifndef _FRM_RESOURCE_HRC_
37cdf0e10cSrcweir #include "frm_resource.hrc"
38cdf0e10cSrcweir #endif
39cdf0e10cSrcweir 
40cdf0e10cSrcweir //.........................................................................
41cdf0e10cSrcweir namespace frm
42cdf0e10cSrcweir {
43cdf0e10cSrcweir using namespace ::com::sun::star::uno;
44cdf0e10cSrcweir using namespace ::com::sun::star::sdb;
45cdf0e10cSrcweir using namespace ::com::sun::star::sdbc;
46cdf0e10cSrcweir using namespace ::com::sun::star::sdbcx;
47cdf0e10cSrcweir using namespace ::com::sun::star::beans;
48cdf0e10cSrcweir using namespace ::com::sun::star::container;
49cdf0e10cSrcweir using namespace ::com::sun::star::form;
50cdf0e10cSrcweir using namespace ::com::sun::star::awt;
51cdf0e10cSrcweir using namespace ::com::sun::star::io;
52cdf0e10cSrcweir using namespace ::com::sun::star::lang;
53cdf0e10cSrcweir using namespace ::com::sun::star::util;
54cdf0e10cSrcweir 
55cdf0e10cSrcweir const sal_uInt16 DEFAULT_LONG	 =	0x0001;
56cdf0e10cSrcweir const sal_uInt16 DEFAULT_DOUBLE  =	0x0002;
57cdf0e10cSrcweir const sal_uInt16 FILTERPROPOSAL  =	0x0004;
58cdf0e10cSrcweir 
DBG_NAME(OEditBaseModel)59cdf0e10cSrcweir DBG_NAME( OEditBaseModel )
60cdf0e10cSrcweir //------------------------------------------------------------------
61cdf0e10cSrcweir OEditBaseModel::OEditBaseModel( const Reference< XMultiServiceFactory >& _rxFactory, const ::rtl::OUString& rUnoControlModelName,
62cdf0e10cSrcweir 		const ::rtl::OUString& rDefault, const sal_Bool _bSupportExternalBinding, const sal_Bool _bSupportsValidation )
63cdf0e10cSrcweir 	:OBoundControlModel( _rxFactory, rUnoControlModelName, rDefault, sal_True, _bSupportExternalBinding, _bSupportsValidation )
64cdf0e10cSrcweir 	,m_nLastReadVersion(0)
65cdf0e10cSrcweir 	,m_bEmptyIsNull(sal_True)
66cdf0e10cSrcweir 	,m_bFilterProposal(sal_False)
67cdf0e10cSrcweir {
68cdf0e10cSrcweir 	DBG_CTOR( OEditBaseModel, NULL );
69cdf0e10cSrcweir }
70cdf0e10cSrcweir 
71cdf0e10cSrcweir //------------------------------------------------------------------
OEditBaseModel(const OEditBaseModel * _pOriginal,const Reference<XMultiServiceFactory> & _rxFactory)72cdf0e10cSrcweir OEditBaseModel::OEditBaseModel( const OEditBaseModel* _pOriginal, const Reference< XMultiServiceFactory >& _rxFactory )
73cdf0e10cSrcweir 	 :OBoundControlModel( _pOriginal, _rxFactory )
74cdf0e10cSrcweir 	 ,m_nLastReadVersion(0)
75cdf0e10cSrcweir {
76cdf0e10cSrcweir 	DBG_CTOR( OEditBaseModel, NULL );
77cdf0e10cSrcweir 
78cdf0e10cSrcweir 	m_bFilterProposal = _pOriginal->m_bFilterProposal;
79cdf0e10cSrcweir 	m_bEmptyIsNull = _pOriginal->m_bEmptyIsNull;
80cdf0e10cSrcweir 	m_aDefault = _pOriginal->m_aDefault;
81cdf0e10cSrcweir 	m_aDefaultText = _pOriginal->m_aDefaultText;
82cdf0e10cSrcweir }
83cdf0e10cSrcweir 
84cdf0e10cSrcweir //------------------------------------------------------------------
~OEditBaseModel()85cdf0e10cSrcweir OEditBaseModel::~OEditBaseModel( )
86cdf0e10cSrcweir {
87cdf0e10cSrcweir 	DBG_DTOR( OEditBaseModel, NULL );
88cdf0e10cSrcweir }
89cdf0e10cSrcweir 
90cdf0e10cSrcweir // XPersist
91cdf0e10cSrcweir //------------------------------------------------------------------------------
write(const Reference<XObjectOutputStream> & _rxOutStream)92cdf0e10cSrcweir void OEditBaseModel::write(const Reference<XObjectOutputStream>& _rxOutStream) throw ( ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException)
93cdf0e10cSrcweir {
94cdf0e10cSrcweir 	OBoundControlModel::write(_rxOutStream);
95cdf0e10cSrcweir 
96cdf0e10cSrcweir 	// Version
97cdf0e10cSrcweir 	sal_uInt16 nVersionId = 0x0005;
98cdf0e10cSrcweir 	DBG_ASSERT((getPersistenceFlags() & ~PF_SPECIAL_FLAGS) == 0,
99cdf0e10cSrcweir 		"OEditBaseModel::write : invalid special version flags !");
100cdf0e10cSrcweir 		// please don't use other flags, older versions can't interpret them !
101cdf0e10cSrcweir 
102cdf0e10cSrcweir 	nVersionId |= getPersistenceFlags();
103cdf0e10cSrcweir 	_rxOutStream->writeShort(nVersionId);
104cdf0e10cSrcweir 
105cdf0e10cSrcweir 	// Name
106cdf0e10cSrcweir 	_rxOutStream->writeShort(0);	// obsolete
107cdf0e10cSrcweir 	_rxOutStream << m_aDefaultText;
108cdf0e10cSrcweir 
109cdf0e10cSrcweir 	// Maskierung fuer any
110cdf0e10cSrcweir 	sal_uInt16 nAnyMask = 0;
111cdf0e10cSrcweir 	if (m_aDefault.getValueType().getTypeClass() == TypeClass_LONG)
112cdf0e10cSrcweir 		nAnyMask |= DEFAULT_LONG;
113cdf0e10cSrcweir 	else if (m_aDefault.getValueType().getTypeClass() == TypeClass_DOUBLE)
114cdf0e10cSrcweir 		nAnyMask |= DEFAULT_DOUBLE;
115cdf0e10cSrcweir 
116cdf0e10cSrcweir 	if (m_bFilterProposal)	// da boolean, kein Wert speichern
117cdf0e10cSrcweir 		nAnyMask |= FILTERPROPOSAL;
118cdf0e10cSrcweir 
119cdf0e10cSrcweir 	_rxOutStream->writeBoolean(m_bEmptyIsNull);
120cdf0e10cSrcweir 	_rxOutStream->writeShort(nAnyMask);
121cdf0e10cSrcweir 
122cdf0e10cSrcweir 	if ((nAnyMask & DEFAULT_LONG) == DEFAULT_LONG)
123cdf0e10cSrcweir 		_rxOutStream->writeLong(getINT32(m_aDefault));
124cdf0e10cSrcweir 	else if ((nAnyMask & DEFAULT_DOUBLE) == DEFAULT_DOUBLE)
125cdf0e10cSrcweir 		_rxOutStream->writeDouble(getDouble(m_aDefault));
126cdf0e10cSrcweir 
127cdf0e10cSrcweir 	// since version 5 we write the help text
128cdf0e10cSrcweir 	writeHelpTextCompatibly(_rxOutStream);
129cdf0e10cSrcweir 	// (that's potentially bad : at the time I added the above line we had two derived classes : OEditModel and
130cdf0e10cSrcweir 	// OFormattedModel. The first one does not have an own version handling, so it can't write the help text itself,
131cdf0e10cSrcweir 	// the second one does it's own writing (reading) after calling our method, so normally we shouldn't write any
132cdf0e10cSrcweir 	// additional members as this is not compatible to older office versions.
133cdf0e10cSrcweir 	// We decided to place the writing of the help text here as it seems the less worse alternative. There is no delivered
134cdf0e10cSrcweir 	// office version including formatted controls (and thus the OFormattedModel), and the OFormattedModel::read seems
135cdf0e10cSrcweir 	// robust against this change (as it will read a wrong and unknown file version and thus set it's members to defaults).
136cdf0e10cSrcweir 
137cdf0e10cSrcweir 	if ((nVersionId & PF_HANDLE_COMMON_PROPS) != 0)
138cdf0e10cSrcweir 		writeCommonEditProperties(_rxOutStream);
139cdf0e10cSrcweir 
140cdf0e10cSrcweir 	// !!! properties common to all OEditBaseModel derived classes should be written in writeCommonEditProperties !!!
141cdf0e10cSrcweir }
142cdf0e10cSrcweir 
143cdf0e10cSrcweir //------------------------------------------------------------------------------
getPersistenceFlags() const144cdf0e10cSrcweir sal_uInt16 OEditBaseModel::getPersistenceFlags() const
145cdf0e10cSrcweir {
146cdf0e10cSrcweir 	return PF_HANDLE_COMMON_PROPS;
147cdf0e10cSrcweir }
148cdf0e10cSrcweir 
149cdf0e10cSrcweir //------------------------------------------------------------------------------
read(const Reference<XObjectInputStream> & _rxInStream)150cdf0e10cSrcweir void OEditBaseModel::read(const Reference<XObjectInputStream>& _rxInStream) throw ( ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException)
151cdf0e10cSrcweir {
152cdf0e10cSrcweir 	OBoundControlModel::read(_rxInStream);
153cdf0e10cSrcweir 	::osl::MutexGuard aGuard(m_aMutex);
154cdf0e10cSrcweir 
155cdf0e10cSrcweir 	// Version eigene Versionsnummer
156cdf0e10cSrcweir 	sal_uInt16 nVersion = _rxInStream->readShort();
157cdf0e10cSrcweir 	m_nLastReadVersion = nVersion;
158cdf0e10cSrcweir 
159cdf0e10cSrcweir 	sal_Bool bHandleCommonProps = (nVersion & PF_HANDLE_COMMON_PROPS) != 0;
160cdf0e10cSrcweir 	nVersion = nVersion & ~PF_SPECIAL_FLAGS;
161cdf0e10cSrcweir 
162cdf0e10cSrcweir     // obsolete
163cdf0e10cSrcweir 	_rxInStream->readShort();
164cdf0e10cSrcweir 
165cdf0e10cSrcweir 	_rxInStream >> m_aDefaultText;
166cdf0e10cSrcweir 
167cdf0e10cSrcweir 	if (nVersion >= 0x0003)
168cdf0e10cSrcweir 	{
169cdf0e10cSrcweir 		m_bEmptyIsNull = _rxInStream->readBoolean();
170cdf0e10cSrcweir 
171cdf0e10cSrcweir 		sal_uInt16 nAnyMask = _rxInStream->readShort();
172cdf0e10cSrcweir 		if ((nAnyMask & DEFAULT_LONG) == DEFAULT_LONG)
173cdf0e10cSrcweir 		{
174cdf0e10cSrcweir 			sal_Int32 nValue = _rxInStream->readLong();
175cdf0e10cSrcweir 			m_aDefault <<= (sal_Int32)nValue;
176cdf0e10cSrcweir 		}
177cdf0e10cSrcweir 		else if ((nAnyMask & DEFAULT_DOUBLE) == DEFAULT_DOUBLE)
178cdf0e10cSrcweir 		{
179cdf0e10cSrcweir 			double fValue = _rxInStream->readDouble();
180cdf0e10cSrcweir 			m_aDefault <<= (double)fValue;
181cdf0e10cSrcweir 		}
182cdf0e10cSrcweir 
183cdf0e10cSrcweir 		if ((nAnyMask & FILTERPROPOSAL) == FILTERPROPOSAL)
184cdf0e10cSrcweir 			m_bFilterProposal = sal_True;
185cdf0e10cSrcweir 	}
186cdf0e10cSrcweir 
187cdf0e10cSrcweir 	if (nVersion > 4)
188cdf0e10cSrcweir 		readHelpTextCompatibly(_rxInStream);
189cdf0e10cSrcweir 
190cdf0e10cSrcweir 	if (bHandleCommonProps)
191cdf0e10cSrcweir 		readCommonEditProperties(_rxInStream);
192cdf0e10cSrcweir 
193cdf0e10cSrcweir 	// Nach dem Lesen die Defaultwerte anzeigen
194cdf0e10cSrcweir 	if ( getControlSource().getLength() )
195cdf0e10cSrcweir 		// (not if we don't have a control source - the "State" property acts like it is persistent, then)
196cdf0e10cSrcweir 		resetNoBroadcast();
197cdf0e10cSrcweir };
198cdf0e10cSrcweir 
199cdf0e10cSrcweir //------------------------------------------------------------------------------
defaultCommonEditProperties()200cdf0e10cSrcweir void OEditBaseModel::defaultCommonEditProperties()
201cdf0e10cSrcweir {
202cdf0e10cSrcweir 	OBoundControlModel::defaultCommonProperties();
203cdf0e10cSrcweir 	// no own common properties at the moment
204cdf0e10cSrcweir }
205cdf0e10cSrcweir 
206cdf0e10cSrcweir //------------------------------------------------------------------------------
readCommonEditProperties(const Reference<XObjectInputStream> & _rxInStream)207cdf0e10cSrcweir void OEditBaseModel::readCommonEditProperties(const Reference<XObjectInputStream>& _rxInStream)
208cdf0e10cSrcweir {
209cdf0e10cSrcweir 	sal_Int32 nLen = _rxInStream->readLong();
210cdf0e10cSrcweir 
211cdf0e10cSrcweir 	Reference<XMarkableStream>	xMark(_rxInStream, UNO_QUERY);
212cdf0e10cSrcweir 	DBG_ASSERT(xMark.is(), "OBoundControlModel::readCommonProperties : can only work with markable streams !");
213cdf0e10cSrcweir 	sal_Int32 nMark = xMark->createMark();
214cdf0e10cSrcweir 
215cdf0e10cSrcweir 	// read properties common to all OBoundControlModels
216cdf0e10cSrcweir 	OBoundControlModel::readCommonProperties(_rxInStream);
217cdf0e10cSrcweir 
218cdf0e10cSrcweir 	// read properties common to all OEditBaseModels
219cdf0e10cSrcweir 
220cdf0e10cSrcweir 	// skip the remaining bytes
221cdf0e10cSrcweir 	xMark->jumpToMark(nMark);
222cdf0e10cSrcweir 	_rxInStream->skipBytes(nLen);
223cdf0e10cSrcweir 	xMark->deleteMark(nMark);
224cdf0e10cSrcweir }
225cdf0e10cSrcweir 
226cdf0e10cSrcweir //------------------------------------------------------------------------------
writeCommonEditProperties(const Reference<XObjectOutputStream> & _rxOutStream)227cdf0e10cSrcweir void OEditBaseModel::writeCommonEditProperties(const Reference<XObjectOutputStream>& _rxOutStream)
228cdf0e10cSrcweir {
229cdf0e10cSrcweir 	Reference<XMarkableStream>	xMark(_rxOutStream, UNO_QUERY);
230cdf0e10cSrcweir 	DBG_ASSERT(xMark.is(), "OEditBaseModel::writeCommonProperties : can only work with markable streams !");
231cdf0e10cSrcweir 	sal_Int32 nMark = xMark->createMark();
232cdf0e10cSrcweir 
233cdf0e10cSrcweir 	// a placeholder where we will write the overall length (later in this method)
234cdf0e10cSrcweir 	sal_Int32 nLen = 0;
235cdf0e10cSrcweir 	_rxOutStream->writeLong(nLen);
236cdf0e10cSrcweir 
237cdf0e10cSrcweir 	// write properties common to all OBoundControlModels
238cdf0e10cSrcweir 	OBoundControlModel::writeCommonProperties(_rxOutStream);
239cdf0e10cSrcweir 
240cdf0e10cSrcweir 	// write properties common to all OEditBaseModels
241cdf0e10cSrcweir 
242cdf0e10cSrcweir 	// close the block - write the correct length at the beginning
243cdf0e10cSrcweir 	nLen = xMark->offsetToMark(nMark) - sizeof(nLen);
244cdf0e10cSrcweir 	xMark->jumpToMark(nMark);
245cdf0e10cSrcweir 	_rxOutStream->writeLong(nLen);
246cdf0e10cSrcweir 	xMark->jumpToFurthest();
247cdf0e10cSrcweir 	xMark->deleteMark(nMark);
248cdf0e10cSrcweir }
249cdf0e10cSrcweir 
250cdf0e10cSrcweir //------------------------------------------------------------------------------
getFastPropertyValue(Any & rValue,sal_Int32 nHandle) const251cdf0e10cSrcweir void OEditBaseModel::getFastPropertyValue( Any& rValue, sal_Int32 nHandle ) const
252cdf0e10cSrcweir {
253cdf0e10cSrcweir 	switch (nHandle)
254cdf0e10cSrcweir 	{
255cdf0e10cSrcweir 		case PROPERTY_ID_EMPTY_IS_NULL:
256cdf0e10cSrcweir 			rValue <<= (sal_Bool)m_bEmptyIsNull;
257cdf0e10cSrcweir 			break;
258cdf0e10cSrcweir 		case PROPERTY_ID_FILTERPROPOSAL:
259cdf0e10cSrcweir 			rValue <<= (sal_Bool)m_bFilterProposal;
260cdf0e10cSrcweir 			break;
261cdf0e10cSrcweir 		case PROPERTY_ID_DEFAULT_TEXT:
262cdf0e10cSrcweir 			rValue <<= m_aDefaultText;
263cdf0e10cSrcweir 			break;
264cdf0e10cSrcweir 		case PROPERTY_ID_DEFAULT_VALUE:
265cdf0e10cSrcweir 		case PROPERTY_ID_DEFAULT_DATE:
266cdf0e10cSrcweir 		case PROPERTY_ID_DEFAULT_TIME:
267cdf0e10cSrcweir 			rValue = m_aDefault;
268cdf0e10cSrcweir 			break;
269cdf0e10cSrcweir 		default:
270cdf0e10cSrcweir 			OBoundControlModel::getFastPropertyValue(rValue, nHandle);
271cdf0e10cSrcweir 	}
272cdf0e10cSrcweir }
273cdf0e10cSrcweir 
274cdf0e10cSrcweir //------------------------------------------------------------------------------
convertFastPropertyValue(Any & rConvertedValue,Any & rOldValue,sal_Int32 nHandle,const Any & rValue)275cdf0e10cSrcweir sal_Bool OEditBaseModel::convertFastPropertyValue( Any& rConvertedValue, Any& rOldValue,
276cdf0e10cSrcweir 											sal_Int32 nHandle, const Any& rValue ) throw( IllegalArgumentException )
277cdf0e10cSrcweir {
278cdf0e10cSrcweir 	sal_Bool bModified(sal_False);
279cdf0e10cSrcweir 	switch (nHandle)
280cdf0e10cSrcweir 	{
281cdf0e10cSrcweir 		case PROPERTY_ID_EMPTY_IS_NULL:
282cdf0e10cSrcweir 			bModified = tryPropertyValue(rConvertedValue, rOldValue, rValue, m_bEmptyIsNull);
283cdf0e10cSrcweir 			break;
284cdf0e10cSrcweir 		case PROPERTY_ID_FILTERPROPOSAL:
285cdf0e10cSrcweir 			bModified = tryPropertyValue(rConvertedValue, rOldValue, rValue, m_bFilterProposal);
286cdf0e10cSrcweir 			break;
287cdf0e10cSrcweir 		case PROPERTY_ID_DEFAULT_TEXT:
288cdf0e10cSrcweir 			bModified = tryPropertyValue(rConvertedValue, rOldValue, rValue, m_aDefaultText);
289cdf0e10cSrcweir 			break;
290cdf0e10cSrcweir 		case PROPERTY_ID_DEFAULT_VALUE:
291cdf0e10cSrcweir 			bModified = tryPropertyValue(rConvertedValue, rOldValue, rValue, m_aDefault, ::getCppuType((const double*)0));
292cdf0e10cSrcweir 			break;
293cdf0e10cSrcweir 		case PROPERTY_ID_DEFAULT_DATE:
294cdf0e10cSrcweir 		case PROPERTY_ID_DEFAULT_TIME:
295cdf0e10cSrcweir 			bModified = tryPropertyValue(rConvertedValue, rOldValue, rValue, m_aDefault, ::getCppuType((const sal_Int32*)0));
296cdf0e10cSrcweir 			break;
297cdf0e10cSrcweir 		default:
298cdf0e10cSrcweir 			bModified = OBoundControlModel::convertFastPropertyValue(
299cdf0e10cSrcweir 											rConvertedValue,
300cdf0e10cSrcweir 											rOldValue,
301cdf0e10cSrcweir 											nHandle,
302cdf0e10cSrcweir 											rValue);
303cdf0e10cSrcweir 	}
304cdf0e10cSrcweir 	return bModified;
305cdf0e10cSrcweir }
306cdf0e10cSrcweir 
307cdf0e10cSrcweir //------------------------------------------------------------------------------
setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,const Any & rValue)308cdf0e10cSrcweir void OEditBaseModel::setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const Any& rValue ) throw ( ::com::sun::star::uno::Exception)
309cdf0e10cSrcweir {
310cdf0e10cSrcweir 	switch (nHandle)
311cdf0e10cSrcweir 	{
312cdf0e10cSrcweir 		case PROPERTY_ID_EMPTY_IS_NULL:
313cdf0e10cSrcweir 			DBG_ASSERT(rValue.getValueType().getTypeClass() == TypeClass_BOOLEAN, "invalid type" );
314cdf0e10cSrcweir 			m_bEmptyIsNull = getBOOL(rValue);
315cdf0e10cSrcweir 			break;
316cdf0e10cSrcweir 		case PROPERTY_ID_FILTERPROPOSAL:
317cdf0e10cSrcweir 			DBG_ASSERT(rValue.getValueType().getTypeClass() == TypeClass_BOOLEAN, "invalid type" );
318cdf0e10cSrcweir 			m_bFilterProposal = getBOOL(rValue);
319cdf0e10cSrcweir 			break;
320cdf0e10cSrcweir 		// Aenderung der defaultwerte fuehrt zu reset
321cdf0e10cSrcweir 		case PROPERTY_ID_DEFAULT_TEXT:
322cdf0e10cSrcweir 			DBG_ASSERT(rValue.getValueType().getTypeClass() == TypeClass_STRING, "invalid type" );
323cdf0e10cSrcweir 			rValue >>= m_aDefaultText;
324cdf0e10cSrcweir 			resetNoBroadcast();
325cdf0e10cSrcweir 			break;
326cdf0e10cSrcweir 		case PROPERTY_ID_DEFAULT_VALUE:
327cdf0e10cSrcweir 		case PROPERTY_ID_DEFAULT_DATE:
328cdf0e10cSrcweir 		case PROPERTY_ID_DEFAULT_TIME:
329cdf0e10cSrcweir 			m_aDefault = rValue;
330cdf0e10cSrcweir 			resetNoBroadcast();
331cdf0e10cSrcweir 			break;
332cdf0e10cSrcweir 		default:
333cdf0e10cSrcweir 			OBoundControlModel::setFastPropertyValue_NoBroadcast(nHandle, rValue );
334cdf0e10cSrcweir 	}
335cdf0e10cSrcweir }
336cdf0e10cSrcweir 
337cdf0e10cSrcweir //XPropertyState
338cdf0e10cSrcweir //------------------------------------------------------------------------------
getPropertyDefaultByHandle(sal_Int32 nHandle) const339cdf0e10cSrcweir Any OEditBaseModel::getPropertyDefaultByHandle( sal_Int32 nHandle ) const
340cdf0e10cSrcweir {
341cdf0e10cSrcweir 	switch (nHandle)
342cdf0e10cSrcweir 	{
343cdf0e10cSrcweir 		case PROPERTY_ID_DEFAULT_TEXT:
344cdf0e10cSrcweir 			return makeAny(::rtl::OUString());
345cdf0e10cSrcweir 		case PROPERTY_ID_FILTERPROPOSAL:
346cdf0e10cSrcweir 			return Any(makeAny((sal_Bool)sal_False));
347cdf0e10cSrcweir 		case PROPERTY_ID_DEFAULT_VALUE:
348cdf0e10cSrcweir 		case PROPERTY_ID_DEFAULT_DATE:
349cdf0e10cSrcweir 		case PROPERTY_ID_DEFAULT_TIME:
350cdf0e10cSrcweir 			return Any();
351cdf0e10cSrcweir 		default:
352cdf0e10cSrcweir 			return OBoundControlModel::getPropertyDefaultByHandle(nHandle);
353cdf0e10cSrcweir 	}
354cdf0e10cSrcweir }
355cdf0e10cSrcweir 
356cdf0e10cSrcweir //.........................................................................
357cdf0e10cSrcweir }
358cdf0e10cSrcweir //.........................................................................
359cdf0e10cSrcweir 
360