update dev300-m58
[ooovba.git] / forms / source / component / Columns.cxx
blob2c17f67bf7099591a7d5638ef7b6aae1a6b29fd5
1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: Columns.cxx,v $
10 * $Revision: 1.27 $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 // MARKER(update_precomp.py): autogen include statement, do not remove
32 #include "precompiled_forms.hxx"
33 #include "Columns.hxx"
34 #ifndef _FRM_PROPERTY_HRC_
35 #include "property.hrc"
36 #endif
37 #include "property.hxx"
38 #include "ids.hxx"
39 #include "findpos.hxx"
40 #include <com/sun/star/io/XPersistObject.hpp>
41 #include <com/sun/star/io/XObjectOutputStream.hpp>
42 #include <com/sun/star/io/XObjectInputStream.hpp>
43 #include <com/sun/star/io/XMarkableStream.hpp>
44 #include <com/sun/star/form/XFormComponent.hpp>
45 #include <com/sun/star/lang/XServiceInfo.hpp>
46 #include <com/sun/star/form/binding/XBindableValue.hpp>
47 #include <com/sun/star/beans/XPropertyContainer.hpp>
48 #include <comphelper/sequence.hxx>
49 #include <comphelper/property.hxx>
50 #include <comphelper/basicio.hxx>
51 #include "services.hxx"
52 #ifndef _FRM_RESOURCE_HRC_
53 #include "frm_resource.hrc"
54 #endif
55 #include <tools/debug.hxx>
56 #include <rtl/uuid.h>
57 #include <rtl/memory.h>
59 //.........................................................................
60 namespace frm
62 //.........................................................................
63 using namespace ::com::sun::star::uno;
64 using namespace ::com::sun::star::beans;
65 using namespace ::com::sun::star::container;
66 using namespace ::com::sun::star::form;
67 using namespace ::com::sun::star::awt;
68 using namespace ::com::sun::star::io;
69 using namespace ::com::sun::star::lang;
70 using namespace ::com::sun::star::util;
71 using namespace ::com::sun::star::form::binding;
73 const sal_uInt16 WIDTH = 0x0001;
74 const sal_uInt16 ALIGN = 0x0002;
75 const sal_uInt16 OLD_HIDDEN = 0x0004;
76 const sal_uInt16 COMPATIBLE_HIDDEN = 0x0008;
78 //------------------------------------------------------------------------------
79 const StringSequence& getColumnTypes()
81 static StringSequence aColumnTypes(10);
82 if (!aColumnTypes.getConstArray()[0].getLength())
84 ::rtl::OUString* pNames = aColumnTypes.getArray();
85 pNames[TYPE_CHECKBOX] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CheckBox" ) );
86 pNames[TYPE_COMBOBOX] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ComboBox" ) );
87 pNames[TYPE_CURRENCYFIELD] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CurrencyField" ) );
88 pNames[TYPE_DATEFIELD] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DateField" ) );
89 pNames[TYPE_FORMATTEDFIELD] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "FormattedField" ) );
90 pNames[TYPE_LISTBOX] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ListBox" ) );
91 pNames[TYPE_NUMERICFIELD] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "NumericField" ) );
92 pNames[TYPE_PATTERNFIELD] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PatternField" ) );
93 pNames[TYPE_TEXTFIELD] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "TextField" ) );
94 pNames[TYPE_TIMEFIELD] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "TimeField" ) );
96 return aColumnTypes;
99 //------------------------------------------------------------------------------
100 sal_Int32 getColumnTypeByModelName(const ::rtl::OUString& aModelName)
102 const ::rtl::OUString aModelPrefix = ::rtl::OUString::createFromAscii("com.sun.star.form.component.");
103 const ::rtl::OUString aCompatibleModelPrefix = ::rtl::OUString::createFromAscii("stardiv.one.form.component.");
105 sal_Int32 nTypeId = -1;
106 if (aModelName == FRM_COMPONENT_EDIT)
107 nTypeId = TYPE_TEXTFIELD;
108 else
110 sal_Int32 nPrefixPos = aModelName.indexOf(aModelPrefix);
111 #ifdef DBG_UTIL
112 sal_Int32 nCompatiblePrefixPos = aModelName.indexOf(aCompatibleModelPrefix);
113 #endif
114 DBG_ASSERT( (nPrefixPos != -1) || (nCompatiblePrefixPos != -1),
115 "::getColumnTypeByModelName() : wrong servivce !");
117 ::rtl::OUString aColumnType = (nPrefixPos != -1)
118 ? aModelName.copy(aModelPrefix.getLength())
119 : aModelName.copy(aCompatibleModelPrefix.getLength());
121 const StringSequence& rColumnTypes = getColumnTypes();
122 nTypeId = ::detail::findPos(aColumnType, rColumnTypes);
124 return nTypeId;
127 /*************************************************************************/
129 //------------------------------------------------------------------
130 const Sequence<sal_Int8>& OGridColumn::getUnoTunnelImplementationId()
132 static Sequence< sal_Int8 > * pSeq = 0;
133 if( !pSeq )
135 ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
136 if( !pSeq )
138 static Sequence< sal_Int8 > aSeq( 16 );
139 rtl_createUuid( (sal_uInt8*)aSeq.getArray(), 0, sal_True );
140 pSeq = &aSeq;
143 return *pSeq;
146 //------------------------------------------------------------------
147 sal_Int64 SAL_CALL OGridColumn::getSomething( const Sequence<sal_Int8>& _rIdentifier) throw(RuntimeException)
149 sal_Int64 nReturn(0);
151 if ( (_rIdentifier.getLength() == 16)
152 && (0 == rtl_compareMemory( getUnoTunnelImplementationId().getConstArray(), _rIdentifier.getConstArray(), 16 ))
155 nReturn = reinterpret_cast<sal_Int64>(this);
157 else
159 Reference< XUnoTunnel > xAggTunnel;
160 if ( query_aggregation( m_xAggregate, xAggTunnel ) )
161 return xAggTunnel->getSomething( _rIdentifier );
163 return nReturn;
166 //------------------------------------------------------------------
167 Sequence<sal_Int8> SAL_CALL OGridColumn::getImplementationId() throw(RuntimeException)
169 return OImplementationIds::getImplementationId(getTypes());
172 //------------------------------------------------------------------
173 Sequence<Type> SAL_CALL OGridColumn::getTypes() throw(RuntimeException)
175 Reference<XTypeProvider> xProv;
177 if (query_aggregation(m_xAggregate, xProv))
178 return concatSequences(OGridColumn_BASE::getTypes(), xProv->getTypes());
179 return OGridColumn_BASE::getTypes();
182 //------------------------------------------------------------------
183 Any SAL_CALL OGridColumn::queryAggregation( const Type& _rType ) throw (RuntimeException)
185 Any aReturn;
186 // some functionality at our aggregate cannot be reasonably fullfilled here.
187 if ( _rType.equals(::getCppuType(static_cast< Reference< XFormComponent >* >(NULL)))
188 || _rType.equals(::getCppuType(static_cast< Reference< XServiceInfo >* >(NULL)))
189 || _rType.equals(::getCppuType(static_cast< Reference< XBindableValue >* >(NULL)))
190 || _rType.equals(::getCppuType(static_cast< Reference< XPropertyContainer >* >(NULL)))
192 return aReturn;
194 aReturn = OGridColumn_BASE::queryAggregation(_rType);
195 if (!aReturn.hasValue())
197 aReturn = OPropertySetAggregationHelper::queryInterface(_rType);
198 if (!aReturn.hasValue() && m_xAggregate.is())
199 aReturn = m_xAggregate->queryAggregation(_rType);
202 return aReturn;
205 DBG_NAME(OGridColumn);
206 //------------------------------------------------------------------------------
207 OGridColumn::OGridColumn( const comphelper::ComponentContext& _rContext, const ::rtl::OUString& _sModelName )
208 :OGridColumn_BASE(m_aMutex)
209 ,OPropertySetAggregationHelper(OGridColumn_BASE::rBHelper)
210 ,m_aHidden( makeAny( sal_False ) )
211 ,m_aContext( _rContext )
212 ,m_aModelName(_sModelName)
214 DBG_CTOR(OGridColumn,NULL);
216 // Anlegen des UnoControlModels
217 if ( m_aModelName.getLength() ) // is there a to-be-aggregated model?
219 increment( m_refCount );
222 m_xAggregate.set( m_aContext.createComponent( m_aModelName ), UNO_QUERY );
223 setAggregation( m_xAggregate );
226 if ( m_xAggregate.is() )
227 { // don't omit those brackets - they ensure that the following temporary is properly deleted
228 m_xAggregate->setDelegator( static_cast< ::cppu::OWeakObject* >( this ) );
231 // Refcount wieder bei NULL
232 decrement( m_refCount );
236 //------------------------------------------------------------------------------
237 OGridColumn::OGridColumn( const OGridColumn* _pOriginal )
238 :OGridColumn_BASE( m_aMutex )
239 ,OPropertySetAggregationHelper( OGridColumn_BASE::rBHelper )
240 ,m_aContext( _pOriginal->m_aContext )
242 DBG_CTOR(OGridColumn,NULL);
244 m_aWidth = _pOriginal->m_aWidth;
245 m_aAlign = _pOriginal->m_aAlign;
246 m_aHidden = _pOriginal->m_aHidden;
247 m_aModelName = _pOriginal->m_aModelName;
248 m_aLabel = _pOriginal->m_aLabel;
250 increment( m_refCount );
253 m_xAggregate = createAggregateClone( _pOriginal );
254 setAggregation( m_xAggregate );
257 if ( m_xAggregate.is() )
258 { // don't omit this brackets - they ensure that the following temporary is properly deleted
259 m_xAggregate->setDelegator( static_cast< ::cppu::OWeakObject* >( this ) );
262 decrement( m_refCount );
265 //------------------------------------------------------------------------------
266 OGridColumn::~OGridColumn()
268 if (!OGridColumn_BASE::rBHelper.bDisposed)
270 acquire();
271 dispose();
274 // freigeben der Agg
275 if (m_xAggregate.is())
277 InterfaceRef xIface;
278 m_xAggregate->setDelegator(xIface);
281 DBG_DTOR(OGridColumn,NULL);
284 // XEventListener
285 //------------------------------------------------------------------------------
286 void SAL_CALL OGridColumn::disposing(const EventObject& _rSource) throw(RuntimeException)
288 OPropertySetAggregationHelper::disposing(_rSource);
290 Reference<XEventListener> xEvtLstner;
291 if (query_aggregation(m_xAggregate, xEvtLstner))
292 xEvtLstner->disposing(_rSource);
295 // OGridColumn_BASE
296 //-----------------------------------------------------------------------------
297 void OGridColumn::disposing()
299 OGridColumn_BASE::disposing();
300 OPropertySetAggregationHelper::disposing();
302 Reference<XComponent> xComp;
303 if (query_aggregation(m_xAggregate, xComp))
304 xComp->dispose();
307 //------------------------------------------------------------------------------
308 void OGridColumn::clearAggregateProperties( Sequence< Property >& _rProps, sal_Bool bAllowDropDown )
310 // some properties are not to be exposed to the outer world
311 ::std::set< ::rtl::OUString > aForbiddenProperties;
312 aForbiddenProperties.insert( PROPERTY_ALIGN );
313 aForbiddenProperties.insert( PROPERTY_AUTOCOMPLETE );
314 aForbiddenProperties.insert( PROPERTY_BACKGROUNDCOLOR );
315 aForbiddenProperties.insert( PROPERTY_BORDER );
316 aForbiddenProperties.insert( PROPERTY_BORDERCOLOR );
317 aForbiddenProperties.insert( PROPERTY_ECHO_CHAR );
318 aForbiddenProperties.insert( PROPERTY_FILLCOLOR );
319 aForbiddenProperties.insert( PROPERTY_FONT );
320 aForbiddenProperties.insert( PROPERTY_FONT_NAME );
321 aForbiddenProperties.insert( PROPERTY_FONT_STYLENAME );
322 aForbiddenProperties.insert( PROPERTY_FONT_FAMILY );
323 aForbiddenProperties.insert( PROPERTY_FONT_CHARSET );
324 aForbiddenProperties.insert( PROPERTY_FONT_HEIGHT );
325 aForbiddenProperties.insert( PROPERTY_FONT_WEIGHT );
326 aForbiddenProperties.insert( PROPERTY_FONT_SLANT );
327 aForbiddenProperties.insert( PROPERTY_FONT_UNDERLINE );
328 aForbiddenProperties.insert( PROPERTY_FONT_STRIKEOUT );
329 aForbiddenProperties.insert( PROPERTY_FONT_WORDLINEMODE );
330 aForbiddenProperties.insert( PROPERTY_TEXTLINECOLOR );
331 aForbiddenProperties.insert( PROPERTY_FONTEMPHASISMARK );
332 aForbiddenProperties.insert( PROPERTY_FONTRELIEF );
333 aForbiddenProperties.insert( PROPERTY_HARDLINEBREAKS );
334 aForbiddenProperties.insert( PROPERTY_HSCROLL );
335 aForbiddenProperties.insert( PROPERTY_LABEL );
336 aForbiddenProperties.insert( PROPERTY_LINECOLOR );
337 aForbiddenProperties.insert( PROPERTY_MULTISELECTION );
338 aForbiddenProperties.insert( PROPERTY_PRINTABLE );
339 aForbiddenProperties.insert( PROPERTY_TABINDEX );
340 aForbiddenProperties.insert( PROPERTY_TABSTOP );
341 aForbiddenProperties.insert( PROPERTY_TEXTCOLOR );
342 aForbiddenProperties.insert( PROPERTY_VSCROLL );
343 aForbiddenProperties.insert( PROPERTY_CONTROLLABEL );
344 aForbiddenProperties.insert( PROPERTY_RICH_TEXT );
345 aForbiddenProperties.insert( PROPERTY_VERTICALALIGN );
346 aForbiddenProperties.insert( PROPERTY_IMAGE_URL );
347 aForbiddenProperties.insert( PROPERTY_IMAGE_POSITION );
348 aForbiddenProperties.insert( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "EnableVisible" ) ) );
349 if ( !bAllowDropDown )
350 aForbiddenProperties.insert( PROPERTY_DROPDOWN );
352 Sequence< Property > aNewProps( _rProps.getLength() );
353 Property* pNewProps = aNewProps.getArray();
355 const Property* pProps = _rProps.getConstArray();
356 const Property* pPropsEnd = pProps + _rProps.getLength();
357 for ( ; pProps != pPropsEnd; ++pProps )
359 if ( aForbiddenProperties.find( pProps->Name ) == aForbiddenProperties.end() )
360 *pNewProps++ = *pProps;
363 aNewProps.realloc( pNewProps - aNewProps.getArray() );
364 _rProps = aNewProps;
367 //------------------------------------------------------------------------------
368 void OGridColumn::setOwnProperties(Sequence<Property>& aDescriptor)
370 aDescriptor.realloc(5);
371 Property* pProperties = aDescriptor.getArray();
372 DECL_PROP1(LABEL, ::rtl::OUString, BOUND);
373 DECL_PROP3(WIDTH, sal_Int32, BOUND, MAYBEVOID, MAYBEDEFAULT);
374 DECL_PROP3(ALIGN, sal_Int16, BOUND, MAYBEVOID, MAYBEDEFAULT);
375 DECL_BOOL_PROP2(HIDDEN, BOUND, MAYBEDEFAULT);
376 DECL_PROP1(COLUMNSERVICENAME, ::rtl::OUString, READONLY);
379 // Reference<XPropertySet>
380 //------------------------------------------------------------------------------
381 void OGridColumn::getFastPropertyValue(Any& rValue, sal_Int32 nHandle ) const
383 switch (nHandle)
385 case PROPERTY_ID_COLUMNSERVICENAME:
386 rValue <<= m_aModelName;
387 break;
388 case PROPERTY_ID_LABEL:
389 rValue <<= m_aLabel;
390 break;
391 case PROPERTY_ID_WIDTH:
392 rValue = m_aWidth;
393 break;
394 case PROPERTY_ID_ALIGN:
395 rValue = m_aAlign;
396 break;
397 case PROPERTY_ID_HIDDEN:
398 rValue = m_aHidden;
399 break;
400 default:
401 OPropertySetAggregationHelper::getFastPropertyValue(rValue, nHandle);
405 //------------------------------------------------------------------------------
406 sal_Bool OGridColumn::convertFastPropertyValue( Any& rConvertedValue, Any& rOldValue,
407 sal_Int32 nHandle, const Any& rValue )throw( IllegalArgumentException )
409 sal_Bool bModified(sal_False);
410 switch (nHandle)
412 case PROPERTY_ID_LABEL:
413 bModified = tryPropertyValue(rConvertedValue, rOldValue, rValue, m_aLabel);
414 break;
415 case PROPERTY_ID_WIDTH:
416 bModified = tryPropertyValue(rConvertedValue, rOldValue, rValue, m_aWidth, ::getCppuType((const sal_Int32*)NULL));
417 break;
418 case PROPERTY_ID_ALIGN:
421 bModified = tryPropertyValue(rConvertedValue, rOldValue, rValue, m_aAlign, ::getCppuType((const sal_Int16*)NULL));
423 catch(starlang::IllegalArgumentException&)
425 OSL_ENSURE(0,"OGridColumn::convertFastPropertyValue: TextAlign must be casted to sal_Int16!");
426 throw;
428 break;
429 case PROPERTY_ID_HIDDEN:
430 bModified = tryPropertyValue(rConvertedValue, rOldValue, rValue, getBOOL(m_aHidden));
431 break;
433 return bModified;
436 //------------------------------------------------------------------------------
437 void OGridColumn::setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const Any& rValue ) throw (::com::sun::star::uno::Exception)
439 switch (nHandle)
441 case PROPERTY_ID_LABEL:
442 DBG_ASSERT(rValue.getValueType().getTypeClass() == TypeClass_STRING, "invalid type" );
443 rValue >>= m_aLabel;
444 break;
445 case PROPERTY_ID_WIDTH:
446 m_aWidth = rValue;
447 break;
448 case PROPERTY_ID_ALIGN:
449 m_aAlign = rValue;
450 break;
451 case PROPERTY_ID_HIDDEN:
452 m_aHidden = rValue;
453 break;
458 // XPropertyState
459 //------------------------------------------------------------------------------
460 Any OGridColumn::getPropertyDefaultByHandle( sal_Int32 nHandle ) const
462 switch (nHandle)
464 case PROPERTY_ID_WIDTH:
465 case PROPERTY_ID_ALIGN:
466 return Any();
467 case PROPERTY_ID_HIDDEN:
468 return makeAny((sal_Bool)sal_False);
469 default:
470 return OPropertySetAggregationHelper::getPropertyDefaultByHandle(nHandle);
474 // XCloneable
475 //------------------------------------------------------------------------------
476 Reference< XCloneable > SAL_CALL OGridColumn::createClone( ) throw (RuntimeException)
478 OGridColumn* pNewColumn = createCloneColumn();
479 return pNewColumn;
482 //XPersistObject
483 //------------------------------------------------------------------------------
484 void SAL_CALL OGridColumn::write(const Reference<XObjectOutputStream>& _rxOutStream)
486 // 1. Schreiben des UnoControls
487 Reference<XMarkableStream> xMark(_rxOutStream, UNO_QUERY);
488 sal_Int32 nMark = xMark->createMark();
490 sal_Int32 nLen = 0;
491 _rxOutStream->writeLong(nLen);
493 Reference<XPersistObject> xPersist;
494 if (query_aggregation(m_xAggregate, xPersist))
495 xPersist->write(_rxOutStream);
497 // feststellen der Laenge
498 nLen = xMark->offsetToMark(nMark) - 4;
499 xMark->jumpToMark(nMark);
500 _rxOutStream->writeLong(nLen);
501 xMark->jumpToFurthest();
502 xMark->deleteMark(nMark);
504 // 2. Schreiben einer VersionsNummer
505 _rxOutStream->writeShort(0x0002);
507 sal_uInt16 nAnyMask = 0;
508 if (m_aWidth.getValueType().getTypeClass() == TypeClass_LONG)
509 nAnyMask |= WIDTH;
511 if (m_aAlign.getValueTypeClass() == TypeClass_SHORT)
512 nAnyMask |= ALIGN;
514 nAnyMask |= COMPATIBLE_HIDDEN;
516 _rxOutStream->writeShort(nAnyMask);
518 if (nAnyMask & WIDTH)
519 _rxOutStream->writeLong(getINT32(m_aWidth));
520 if (nAnyMask & ALIGN)
521 _rxOutStream->writeShort(getINT16(m_aAlign));
523 // Name
524 _rxOutStream << m_aLabel;
526 // the new place for the hidden flag : after m_aLabel, so older office version read the correct label, too
527 if (nAnyMask & COMPATIBLE_HIDDEN)
528 _rxOutStream->writeBoolean(getBOOL(m_aHidden));
531 //------------------------------------------------------------------------------
532 void SAL_CALL OGridColumn::read(const Reference<XObjectInputStream>& _rxInStream)
534 // 1. Lesen des UnoControls
535 sal_Int32 nLen = _rxInStream->readLong();
536 if (nLen)
538 Reference<XMarkableStream> xMark(_rxInStream, UNO_QUERY);
539 sal_Int32 nMark = xMark->createMark();
540 Reference<XPersistObject> xPersist;
541 if (query_aggregation(m_xAggregate, xPersist))
542 xPersist->read(_rxInStream);
544 xMark->jumpToMark(nMark);
545 _rxInStream->skipBytes(nLen);
546 xMark->deleteMark(nMark);
549 // 2. Lesen des Versionsnummer
550 sal_uInt16 nVersion = _rxInStream->readShort(); (void)nVersion;
551 sal_uInt16 nAnyMask = _rxInStream->readShort();
553 if (nAnyMask & WIDTH)
555 sal_Int32 nValue = _rxInStream->readLong();
556 m_aWidth <<= (sal_Int32)nValue;
559 if (nAnyMask & ALIGN)
561 sal_Int16 nValue = _rxInStream->readShort();
562 m_aAlign <<= nValue;
564 if (nAnyMask & OLD_HIDDEN)
566 sal_Bool bValue = _rxInStream->readBoolean();
567 m_aHidden <<= (sal_Bool)bValue;
570 // Name
571 _rxInStream >> m_aLabel;
573 if (nAnyMask & COMPATIBLE_HIDDEN)
575 sal_Bool bValue = _rxInStream->readBoolean();
576 m_aHidden <<= (sal_Bool)bValue;
580 //------------------------------------------------------------------------------
581 IMPL_COLUMN(TextFieldColumn, FRM_SUN_COMPONENT_TEXTFIELD, sal_False);
582 IMPL_COLUMN(PatternFieldColumn, FRM_SUN_COMPONENT_PATTERNFIELD, sal_False);
583 IMPL_COLUMN(DateFieldColumn, FRM_SUN_COMPONENT_DATEFIELD, sal_True);
584 IMPL_COLUMN(TimeFieldColumn, FRM_SUN_COMPONENT_TIMEFIELD, sal_False);
585 IMPL_COLUMN(NumericFieldColumn, FRM_SUN_COMPONENT_NUMERICFIELD, sal_False);
586 IMPL_COLUMN(CurrencyFieldColumn, FRM_SUN_COMPONENT_CURRENCYFIELD, sal_False);
587 IMPL_COLUMN(CheckBoxColumn, FRM_SUN_COMPONENT_CHECKBOX, sal_False);
588 IMPL_COLUMN(ComboBoxColumn, FRM_SUN_COMPONENT_COMBOBOX, sal_False);
589 IMPL_COLUMN(ListBoxColumn, FRM_SUN_COMPONENT_LISTBOX, sal_False);
590 IMPL_COLUMN(FormattedFieldColumn, FRM_SUN_COMPONENT_FORMATTEDFIELD, sal_False);
592 //.........................................................................
593 } // namespace frm
594 //.........................................................................