1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef _SVX_GRIDCELL_HXX
21 #define _SVX_GRIDCELL_HXX
23 #include <svx/gridctrl.hxx>
25 #include "sqlparserclient.hxx"
26 #include "typeconversionclient.hxx"
28 #include <com/sun/star/sdb/XColumn.hpp>
29 #include <com/sun/star/form/XBoundControl.hpp>
30 #include <com/sun/star/awt/XTextComponent.hpp>
31 #include <com/sun/star/awt/XListBox.hpp>
32 #include <com/sun/star/awt/XComboBox.hpp>
33 #include <com/sun/star/awt/TextAlign.hpp>
34 #include <com/sun/star/awt/XControlModel.hpp>
35 #include <com/sun/star/awt/XControl.hpp>
36 #include <com/sun/star/awt/XCheckBox.hpp>
37 #include <com/sun/star/awt/XButton.hpp>
38 #include <com/sun/star/beans/XFastPropertySet.hpp>
39 #include <com/sun/star/lang/XUnoTunnel.hpp>
40 #include <com/sun/star/form/XChangeBroadcaster.hpp>
41 #include <com/sun/star/awt/XWindow.hpp>
43 #include <comphelper/propmultiplex.hxx>
44 #include <comphelper/componentcontext.hxx>
45 #include <cppuhelper/component.hxx>
46 #include <cppuhelper/implbase1.hxx>
47 #include <cppuhelper/implbase2.hxx>
48 #include <tools/diagnose_ex.h>
49 #include <tools/rtti.hxx>
55 //==================================================================
57 //==================================================================
61 ::osl::Mutex m_aMutex
;
64 //==================================================================
65 // DbGridColumn, Spaltenbeschreibung
66 //==================================================================
69 friend class DbGridControl
;
71 ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
> m_xModel
;
72 ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
> m_xField
; // Verbindung zum Datenbankfeld
73 ::svt::CellControllerRef m_xController
; // Struktur zum Verwalten der Controls fuer eine Spalte
74 // diese wird von der DbBrowseBox auf die jeweiligen Zellen
75 // einer Spalte positioniert
79 DbGridControl
& m_rParent
;
82 sal_Int32 m_nLastVisibleWidth
; // nur gueltig, wenn m_bHidden == sal_True
83 sal_Int32 m_nFormatKey
;
84 sal_Int16 m_nFieldType
;
87 sal_Int16 m_nFieldPos
;
88 sal_Int16 m_nAlign
; // wird mit TXT_ALIGN_LEFT .... angegeben
89 sal_Bool m_bReadOnly
: 1;
90 sal_Bool m_bAutoValue
: 1;
91 sal_Bool m_bInSave
: 1;
92 sal_Bool m_bNumeric
: 1;
93 sal_Bool m_bObject
: 1; // Verweist die Column auf ein Object Datentyp?
94 sal_Bool m_bHidden
: 1;
95 sal_Bool m_bLocked
: 1;
96 sal_Bool m_bDateTime
: 1;
98 static ::svt::CellControllerRef s_xEmptyController
;
99 // used by locked columns
101 DbGridColumn(sal_uInt16 _nId
, DbGridControl
& rParent
)
104 ,m_nLastVisibleWidth(-1)
110 ,m_nAlign(::com::sun::star::awt::TextAlign::LEFT
)
111 ,m_bReadOnly(sal_False
)
112 ,m_bAutoValue(sal_False
)
113 ,m_bInSave(sal_False
)
114 ,m_bNumeric(sal_False
)
115 ,m_bObject(sal_False
)
116 ,m_bHidden(sal_False
)
117 ,m_bLocked(sal_False
)
118 ,m_bDateTime(sal_False
)
124 const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
>& getModel() const { return m_xModel
; }
125 void setModel(::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
> _xModel
);
128 sal_uInt16
GetId() const {return m_nId
;}
129 sal_Bool
IsReadOnly() const {return m_bReadOnly
;}
130 sal_Bool
IsAutoValue() const {return m_bAutoValue
;}
131 sal_Bool
IsUpdating() const {return m_bInSave
;}
132 sal_Int16
GetAlignment() const {return m_nAlign
;}
133 sal_Int16
GetType() const {return m_nFieldType
;}
134 sal_Int16
GetFieldPos() const {return m_nFieldPos
; }
135 sal_Bool
IsNumeric() const {return m_bNumeric
;}
136 sal_Bool
IsDateTime() const {return m_bDateTime
;}
137 sal_Bool
IsObject() const {return m_bObject
;}
138 sal_Bool
IsHidden() const {return m_bHidden
;}
139 sal_Int32
GetKey() const {return m_nFormatKey
;}
140 const ::svt::CellControllerRef
& GetController() const {return m_bLocked
? s_xEmptyController
: m_xController
;}
141 const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
>& GetField() const {return m_xField
;}
142 DbGridControl
& GetParent() const {return m_rParent
;}
143 FmXGridCell
* GetCell() const {return m_pCell
;}
145 ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
> GetCurrentFieldValue() const;
147 // Zeichnen eines Feldes an einer Position, ist ein ::com::sun::star::sdbcx::View gesetzt
148 // uebernimmt dieser das Zeichnen, z.B. fuer CheckBoxen
149 void Paint(OutputDevice
& rDev
,
150 const Rectangle
& rRect
,
151 const DbGridRow
* pRow
,
152 const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
);
155 // Inititialierung im alive mode
156 // Ist kein ColumnController gesetzt, wird eine DefaultInitialisierung
158 void CreateControl(sal_Int32 _nFieldPos
, const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
>& xField
, sal_Int32 nTypeId
);
161 ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
> xField(m_xField
);
162 CreateControl(m_nFieldPos
, xField
, m_nTypeId
);
165 // Editieren einer Zelle
166 void UpdateFromField(const DbGridRow
* pRow
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
);
169 // freigeben aller Daten, die fuer den AliveMode noetig sind
172 OUString
GetCellText(const DbGridRow
* pRow
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
) const;
173 OUString
GetCellText(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& xField
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
) const;
175 void SetReadOnly(sal_Bool bRead
){m_bReadOnly
= bRead
;}
176 void SetObject(sal_Int16 nPos
) {m_bObject
= m_bReadOnly
= sal_True
; m_nFieldPos
= nPos
;}
178 void ImplInitWindow( Window
& rParent
, const InitWindowFacet _eInitWhat
);
180 // Properties, die auf den ::com::sun::star::frame::Controller durchschlagen koennen
181 sal_Int16
SetAlignment(sal_Int16 _nAlign
);
182 // if _nAlign is -1, the alignment is calculated from the type of the field we are bound to
183 // the value really set is returned
184 sal_Int16
SetAlignmentFromModel(sal_Int16 nStandardAlign
);
185 // set the alignment according to the "Align"-property of m_xModel, use the given standard
186 // alignment if the property if void, return the really set alignment
189 sal_Bool
isLocked() const { return m_bLocked
; }
190 void setLock(sal_Bool _bLock
);
193 /** attaches or detaches our cell object to the SctriptEventAttacherManager implemented
194 by our model's parent
196 void impl_toggleScriptManager_nothrow( bool _bAttach
);
199 //==================================================================
200 // DbCellControl, liefert die Daten fuer einen CellController
201 // wird in der Regel nur für komplexe Controls wie z.B ComboBoxen
203 //==================================================================
205 :public ::svxform::OTypeConversionClient
206 ,public ::svxform::OStaticDataAccessTools
207 ,public FmMutexHelper
// _before_ the listener, so the listener is to be destroyed first!
208 ,public ::comphelper::OPropertyChangeListener
211 ::comphelper::OPropertyChangeMultiplexer
* m_pModelChangeBroadcaster
;
212 ::comphelper::OPropertyChangeMultiplexer
* m_pFieldChangeBroadcaster
;
215 sal_Bool m_bTransparent
: 1;
216 sal_Bool m_bAlignedController
: 1;
217 sal_Bool m_bAccessingValueProperty
: 1;
219 ::com::sun::star::uno::Reference
< ::com::sun::star::sdbc::XRowSet
>
223 DbGridColumn
& m_rColumn
;
229 const ::com::sun::star::uno::Reference
< ::com::sun::star::sdbc::XRowSet
>& getCursor() const { return m_xCursor
; }
231 // control transparency
232 inline sal_Bool
isTransparent( ) const { return m_bTransparent
; }
233 inline void setTransparent( sal_Bool _bSet
) { m_bTransparent
= _bSet
; }
236 inline void setAlignedController( sal_Bool _bAlign
= sal_True
) { m_bAlignedController
= _bAlign
; }
239 /** determined whether or not the value property is locked
240 @see lockValueProperty
242 inline sal_Bool
isValuePropertyLocked() const;
244 /** locks the listening at the value property.
245 <p>This means that every subsequent change now done on the value property of the model ("Text", or "Value",
246 or whatever) is then ignored.<br/>
247 This base class uses this setting in <method>Commit</method>.</p>
249 Value locking can't be nested
250 @see unlockValueProperty
252 inline void lockValueProperty();
253 /** unlocks the listening at the value property
254 @see lockValueProperty
256 inline void unlockValueProperty();
259 // adds the given property to the list of properties which we listen for
260 void doPropertyListening( const OUString
& _rPropertyName
);
262 // called whenever a property which affects field settings in general is called
263 // you should overwrite this method for every property you add yourself as listener to
264 // with doPropertyListening
265 virtual void implAdjustGenericFieldSetting( const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
>& _rxModel
);
267 // called by _propertyChanged if a property which denotes the column value has changed
268 void implValuePropertyChanged( );
273 DbCellControl(DbGridColumn
& _rColumn
, sal_Bool _bText
= sal_True
);
274 virtual ~DbCellControl();
277 Window
& GetWindow() const
279 ENSURE_OR_THROW( m_pWindow
, "no window" );
284 inline sal_Bool
isAlignedController() const { return m_bAlignedController
; }
285 void AlignControl(sal_Int16 nAlignment
);
287 void SetTextLineColor();
288 void SetTextLineColor(const Color
& _rColor
);
290 // Initialisieren bevor ein Control angezeigt wird
291 virtual void Init( Window
& rParent
, const ::com::sun::star::uno::Reference
< ::com::sun::star::sdbc::XRowSet
>& xCursor
);
292 virtual ::svt::CellControllerRef
CreateController() const = 0;
294 // Schreiben des Wertes in das Model
297 // Formatting the field data to output text
298 virtual OUString
GetFormatText(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
, Color
** ppColor
= NULL
) = 0;
300 virtual void Update(){}
301 // Refresh the control by the field data
302 virtual void UpdateFromField(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
) = 0;
304 // Painten eines Zellinhalts im vorgegeben Rechteck
305 virtual void PaintFieldToCell( OutputDevice
& rDev
, const Rectangle
& rRect
, const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
);
306 virtual void PaintCell( OutputDevice
& _rDev
, const Rectangle
& _rRect
);
308 void ImplInitWindow( Window
& rParent
, const InitWindowFacet _eInitWhat
);
310 double GetValue(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
) const;
313 void invalidatedController();
315 /** commits the content of the control (e.g. the text of an edit field) into the column model
316 (e.g. the "Text" property of the model).
317 <p>To be overwritten in derived classes.</p>
320 virtual sal_Bool
commitControl( ) = 0;
322 /** updates the current content of the control (e.g. the text of an edit field) from the column model
323 (e.g. the "Text" property of the model).
324 <p>To be overwritten in derived classes.</p>
332 virtual void updateFromModel( ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
> _rxModel
) = 0;
335 // OPropertyChangeListener
336 virtual void _propertyChanged(const ::com::sun::star::beans::PropertyChangeEvent
& evt
) throw(::com::sun::star::uno::RuntimeException
);
339 void implDoPropertyListening( const OUString
& _rPropertyName
, sal_Bool _bWarnIfNotExistent
= sal_True
);
341 /// updates the "readonly" setting on m_pWindow, according to the respective property value in the given model
342 void implAdjustReadOnly( const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
>& _rxModel
,bool i_bReadOnly
);
344 /// updates the "enabled" setting on m_pWindow, according to the respective property value in the given model
345 void implAdjustEnabled( const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
>& _rxModel
);
348 //==================================================================
349 //------------------------------------------------------------------
350 inline sal_Bool
DbCellControl::isValuePropertyLocked() const
352 return m_bAccessingValueProperty
;
355 //------------------------------------------------------------------
356 inline void DbCellControl::lockValueProperty()
358 OSL_ENSURE( !isValuePropertyLocked(), "DbCellControl::lockValueProperty: not to be nested!" );
359 m_bAccessingValueProperty
= sal_True
;
362 //------------------------------------------------------------------
363 inline void DbCellControl::unlockValueProperty()
365 OSL_ENSURE( isValuePropertyLocked(), "DbCellControl::lockValueProperty: not locked so far!" );
366 m_bAccessingValueProperty
= sal_False
;
369 //==================================================================
370 /** a field which is bound to a column which supports the MaxTextLen property
372 class DbLimitedLengthField
: public DbCellControl
378 DbLimitedLengthField( DbGridColumn
& _rColumn
);
382 virtual void implAdjustGenericFieldSetting( const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
>& _rxModel
);
385 inline void implSetMaxTextLen( sal_Int16 _nMaxLen
)
387 implSetEffectiveMaxTextLen( _nMaxLen
? _nMaxLen
: EDIT_NOLIMIT
);
389 virtual void implSetEffectiveMaxTextLen( sal_Int16 _nMaxLen
);
392 //==================================================================
393 class DbTextField
: public DbLimitedLengthField
395 ::svt::IEditImplementation
* m_pEdit
;
396 ::svt::IEditImplementation
* m_pPainterImplementation
;
397 sal_Int16 m_nKeyType
;
398 sal_Bool m_bIsSimpleEdit
;
405 DbTextField(DbGridColumn
& _rColumn
);
407 ::svt::IEditImplementation
* GetEditImplementation() { return m_pEdit
; }
408 sal_Bool
IsSimpleEdit() const { return m_bIsSimpleEdit
; }
410 virtual void Init( Window
& rParent
, const ::com::sun::star::uno::Reference
< ::com::sun::star::sdbc::XRowSet
>& xCursor
);
411 virtual OUString
GetFormatText(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
, Color
** ppColor
= NULL
);
412 virtual void UpdateFromField(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
);
413 virtual ::svt::CellControllerRef
CreateController() const;
414 virtual void PaintFieldToCell( OutputDevice
& _rDev
, const Rectangle
& _rRect
,
415 const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
,
416 const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& _rxFormatter
);
420 virtual sal_Bool
commitControl( );
421 virtual void updateFromModel( ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
> _rxModel
);
422 // DbLimitedLengthField
423 virtual void implSetEffectiveMaxTextLen( sal_Int16 _nMaxLen
);
426 //==================================================================
427 class DbFormattedField
: public DbLimitedLengthField
430 ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatsSupplier
> m_xSupplier
;
431 sal_Int16 m_nKeyType
;
436 DbFormattedField(DbGridColumn
& _rColumn
);
437 virtual ~DbFormattedField();
440 virtual void Init( Window
& rParent
, const ::com::sun::star::uno::Reference
< ::com::sun::star::sdbc::XRowSet
>& xCursor
);
441 virtual OUString
GetFormatText(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
, Color
** ppColor
= NULL
);
442 virtual void UpdateFromField(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
);
443 virtual ::svt::CellControllerRef
CreateController() const;
447 virtual sal_Bool
commitControl( );
448 virtual void updateFromModel( ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
> _rxModel
);
450 // OPropertyChangeListener
451 virtual void _propertyChanged(const ::com::sun::star::beans::PropertyChangeEvent
& evt
) throw(::com::sun::star::uno::RuntimeException
);
454 //==================================================================
455 class DbCheckBox
: public DbCellControl
459 DbCheckBox(DbGridColumn
& _rColumn
);
461 virtual void Init( Window
& rParent
, const ::com::sun::star::uno::Reference
< ::com::sun::star::sdbc::XRowSet
>& xCursor
);
462 virtual void UpdateFromField(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
);
463 virtual ::svt::CellControllerRef
CreateController() const;
464 virtual void PaintFieldToCell(OutputDevice
& rDev
, const Rectangle
& rRect
,
465 const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
,
466 const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
);
467 virtual OUString
GetFormatText(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
, Color
** ppColor
= NULL
);
471 virtual sal_Bool
commitControl( );
472 virtual void updateFromModel( ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
> _rxModel
);
475 //==================================================================
476 class DbComboBox
: public DbCellControl
478 sal_Int16 m_nKeyType
;
482 DbComboBox(DbGridColumn
& _rColumn
);
484 virtual void Init( Window
& rParent
, const ::com::sun::star::uno::Reference
< ::com::sun::star::sdbc::XRowSet
>& xCursor
);
485 virtual OUString
GetFormatText(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
, Color
** ppColor
= NULL
);
486 virtual void UpdateFromField(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
);
487 virtual ::svt::CellControllerRef
CreateController() const;
489 void SetList(const ::com::sun::star::uno::Any
& rItems
);
493 virtual sal_Bool
commitControl( );
494 virtual void updateFromModel( ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
> _rxModel
);
496 virtual void implAdjustGenericFieldSetting( const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
>& _rxModel
);
498 // OPropertyChangeListener
499 virtual void _propertyChanged(const ::com::sun::star::beans::PropertyChangeEvent
& evt
) throw(::com::sun::star::uno::RuntimeException
);
502 //==================================================================
503 class DbListBox
:public DbCellControl
505 sal_Bool m_bBound
: 1;
506 ::com::sun::star::uno::Sequence
< OUString
> m_aValueList
;
510 DbListBox(DbGridColumn
& _rColumn
);
512 virtual void Init( Window
& rParent
, const ::com::sun::star::uno::Reference
< ::com::sun::star::sdbc::XRowSet
>& xCursor
);
513 virtual OUString
GetFormatText(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
, Color
** ppColor
= NULL
);
514 virtual void UpdateFromField(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
);
515 virtual ::svt::CellControllerRef
CreateController() const;
517 void SetList(const ::com::sun::star::uno::Any
& rItems
);
521 virtual sal_Bool
commitControl( );
522 virtual void updateFromModel( ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
> _rxModel
);
524 virtual void implAdjustGenericFieldSetting( const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
>& _rxModel
);
526 // OPropertyChangeListener
527 virtual void _propertyChanged(const ::com::sun::star::beans::PropertyChangeEvent
& evt
) throw(::com::sun::star::uno::RuntimeException
);
530 //==================================================================
531 class DbPatternField
: public DbCellControl
535 DbPatternField( DbGridColumn
& _rColumn
, const ::comphelper::ComponentContext
& _rContext
);
536 virtual void Init( Window
& rParent
, const ::com::sun::star::uno::Reference
< ::com::sun::star::sdbc::XRowSet
>& xCursor
);
537 virtual OUString
GetFormatText(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
, Color
** ppColor
= NULL
);
538 virtual void UpdateFromField(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
);
539 virtual ::svt::CellControllerRef
CreateController() const;
543 virtual sal_Bool
commitControl( );
544 virtual void updateFromModel( ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
> _rxModel
);
546 virtual void implAdjustGenericFieldSetting( const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
>& _rxModel
);
549 OUString
impl_formatText(const OUString
& _rText
);
552 SAL_WNODEPRECATED_DECLARATIONS_PUSH
553 ::std::auto_ptr
< ::dbtools::FormattedColumnValue
> m_pValueFormatter
;
554 ::std::auto_ptr
< ::dbtools::FormattedColumnValue
> m_pPaintFormatter
;
555 SAL_WNODEPRECATED_DECLARATIONS_POP
556 ::comphelper::ComponentContext m_aContext
;
559 //==================================================================
560 class DbSpinField
: public DbCellControl
563 sal_Int16 m_nStandardAlign
;
569 DbSpinField( DbGridColumn
& _rColumn
, sal_Int16 _nStandardAlign
= com::sun::star::awt::TextAlign::RIGHT
);
572 virtual void Init( Window
& rParent
, const ::com::sun::star::uno::Reference
< ::com::sun::star::sdbc::XRowSet
>& _rxCursor
);
573 virtual ::svt::CellControllerRef
CreateController() const;
576 virtual SpinField
* createField(
578 WinBits _nFieldStyle
,
579 const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
>& _rxModel
583 //==================================================================
584 class DbDateField
: public DbSpinField
588 DbDateField(DbGridColumn
& _rColumn
);
589 virtual OUString
GetFormatText(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
, Color
** ppColor
= NULL
);
590 virtual void UpdateFromField(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
);
594 virtual sal_Bool
commitControl( );
595 virtual void updateFromModel( ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
> _rxModel
);
598 virtual SpinField
* createField(
600 WinBits _nFieldStyle
,
601 const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
>& _rxModel
604 /// initializes everything which relates to the properties describing the numeric behaviour
605 virtual void implAdjustGenericFieldSetting( const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
>& _rxModel
);
608 //==================================================================
609 class DbTimeField
: public DbSpinField
613 DbTimeField(DbGridColumn
& _rColumn
);
614 virtual OUString
GetFormatText(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
, Color
** ppColor
= NULL
);
615 virtual void UpdateFromField(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
);
619 virtual sal_Bool
commitControl( );
620 virtual void updateFromModel( ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
> _rxModel
);
623 virtual SpinField
* createField(
625 WinBits _nFieldStyle
,
626 const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
>& _rxModel
629 /// initializes everything which relates to the properties describing the numeric behaviour
630 virtual void implAdjustGenericFieldSetting( const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
>& _rxModel
);
633 //==================================================================
634 class DbCurrencyField
: public DbSpinField
640 DbCurrencyField(DbGridColumn
& _rColumn
);
641 virtual OUString
GetFormatText(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
, Color
** ppColor
= NULL
);
642 virtual void UpdateFromField(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
);
644 double GetCurrency(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
) const;
648 virtual sal_Bool
commitControl( );
649 virtual void updateFromModel( ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
> _rxModel
);
652 virtual SpinField
* createField(
654 WinBits _nFieldStyle
,
655 const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
>& _rxModel
658 /// initializes everything which relates to the properties describing the numeric behaviour
659 virtual void implAdjustGenericFieldSetting( const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
>& _rxModel
);
662 //==================================================================
663 class DbNumericField
: public DbSpinField
667 DbNumericField(DbGridColumn
& _rColumn
);
668 virtual OUString
GetFormatText(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
, Color
** ppColor
= NULL
);
669 virtual void UpdateFromField(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
);
673 virtual sal_Bool
commitControl( );
674 virtual void updateFromModel( ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
> _rxModel
);
677 virtual SpinField
* createField(
679 WinBits _nFieldStyle
,
680 const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
>& _rxModel
683 /// initializes everything which relates to the properties describing the numeric behaviour
684 void implAdjustGenericFieldSetting( const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
>& _rxModel
);
687 //==================================================================
689 :public DbCellControl
690 ,public ::svxform::OSQLParserClient
692 ::com::sun::star::uno::Sequence
< OUString
> m_aValueList
;
695 sal_Int16 m_nControlClass
;
696 sal_Bool m_bFilterList
: 1;
697 sal_Bool m_bFilterListFilled
: 1;
698 sal_Bool m_bBound
: 1;
702 DbFilterField(const ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XComponentContext
>& rxContext
, DbGridColumn
& _rColumn
);
703 virtual ~DbFilterField();
705 virtual void Init( Window
& rParent
, const ::com::sun::star::uno::Reference
< ::com::sun::star::sdbc::XRowSet
>& xCursor
);
706 virtual ::svt::CellControllerRef
CreateController() const;
707 virtual void PaintCell(OutputDevice
& rDev
, const Rectangle
& rRect
);
708 virtual void Update();
709 virtual OUString
GetFormatText(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
, Color
** ppColor
= NULL
);
710 virtual void UpdateFromField(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
, const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
);
712 const OUString
& GetText() const {return m_aText
;}
713 void SetText(const OUString
& rText
);
715 void SetCommitHdl( const Link
& rLink
) { m_aCommitLink
= rLink
; }
716 const Link
& GetCommitHdl() const { return m_aCommitLink
; }
721 virtual sal_Bool
commitControl( );
722 virtual void updateFromModel( ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
> _rxModel
);
725 void SetList(const ::com::sun::star::uno::Any
& rItems
, sal_Bool bComboBox
);
726 void CreateControl(Window
* pParent
, const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
>& xModel
);
727 DECL_LINK( OnClick
, void* );
730 //==================================================================
731 // Base class providing the access to a grid cell
732 //==================================================================
733 typedef ::cppu::ImplHelper2
< ::com::sun::star::awt::XControl
734 , ::com::sun::star::form::XBoundControl
736 typedef ::cppu::ImplHelper1
< ::com::sun::star::awt::XWindow
737 > FmXGridCell_WindowBase
;
738 class FmXGridCell
:public ::cppu::OComponentHelper
739 ,public FmXGridCell_Base
740 ,public FmXGridCell_WindowBase
743 ::osl::Mutex m_aMutex
;
744 DbGridColumn
* m_pColumn
;
745 DbCellControl
* m_pCellControl
;
748 ::cppu::OInterfaceContainerHelper m_aWindowListeners
;
749 ::cppu::OInterfaceContainerHelper m_aFocusListeners
;
750 ::cppu::OInterfaceContainerHelper m_aKeyListeners
;
751 ::cppu::OInterfaceContainerHelper m_aMouseListeners
;
752 ::cppu::OInterfaceContainerHelper m_aMouseMotionListeners
;
755 virtual ~FmXGridCell();
759 FmXGridCell( DbGridColumn
* pColumn
, DbCellControl
* pControl
);
762 DECLARE_UNO3_AGG_DEFAULTS(FmXGridCell
, OComponentHelper
);
763 virtual ::com::sun::star::uno::Any SAL_CALL
queryAggregation( const ::com::sun::star::uno::Type
& _rType
) throw(::com::sun::star::uno::RuntimeException
);
765 void SetTextLineColor();
766 void SetTextLineColor(const Color
& _rColor
);
769 virtual ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
> SAL_CALL
getTypes( ) throw (::com::sun::star::uno::RuntimeException
);
770 virtual ::com::sun::star::uno::Sequence
< sal_Int8
> SAL_CALL
getImplementationId() throw(::com::sun::star::uno::RuntimeException
);
773 virtual void SAL_CALL
disposing();
775 // ::com::sun::star::lang::XComponent
776 virtual void SAL_CALL
dispose() throw(::com::sun::star::uno::RuntimeException
){OComponentHelper::dispose();}
777 virtual void SAL_CALL
addEventListener(const ::com::sun::star::uno::Reference
< ::com::sun::star::lang::XEventListener
>& aListener
)throw(::com::sun::star::uno::RuntimeException
) { OComponentHelper::addEventListener(aListener
);}
778 virtual void SAL_CALL
removeEventListener(const ::com::sun::star::uno::Reference
< ::com::sun::star::lang::XEventListener
>& aListener
)throw(::com::sun::star::uno::RuntimeException
) { OComponentHelper::removeEventListener(aListener
);}
780 // ::com::sun::star::awt::XControl
781 virtual void SAL_CALL
setContext(const ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
>& /*Context*/) throw(::com::sun::star::uno::RuntimeException
){}
782 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
> SAL_CALL
getContext() throw(::com::sun::star::uno::RuntimeException
);
783 virtual void SAL_CALL
createPeer(const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XToolkit
>& /*Toolkit*/, const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XWindowPeer
>& /*Parent*/) throw(::com::sun::star::uno::RuntimeException
){}
785 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XWindowPeer
> SAL_CALL
getPeer() throw (::com::sun::star::uno::RuntimeException
) {return ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XWindowPeer
> ();}
786 virtual sal_Bool SAL_CALL
setModel(const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XControlModel
>& /*Model*/) throw (::com::sun::star::uno::RuntimeException
) {return sal_False
;}
787 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XControlModel
> SAL_CALL
getModel() throw (::com::sun::star::uno::RuntimeException
);
788 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XView
> SAL_CALL
getView() throw (::com::sun::star::uno::RuntimeException
) {return ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XView
> ();}
789 virtual void SAL_CALL
setDesignMode(sal_Bool
/*bOn*/) throw (::com::sun::star::uno::RuntimeException
) {}
790 virtual sal_Bool SAL_CALL
isDesignMode() throw (::com::sun::star::uno::RuntimeException
) {return sal_False
;}
791 virtual sal_Bool SAL_CALL
isTransparent() throw (::com::sun::star::uno::RuntimeException
) {return sal_False
;}
793 // ::com::sun::star::form::XBoundControl
794 virtual sal_Bool SAL_CALL
getLock() throw(::com::sun::star::uno::RuntimeException
);
795 virtual void SAL_CALL
setLock(sal_Bool _bLock
) throw(::com::sun::star::uno::RuntimeException
);
798 virtual void SAL_CALL
setPosSize( ::sal_Int32 X
, ::sal_Int32 Y
, ::sal_Int32 Width
, ::sal_Int32 Height
, ::sal_Int16 Flags
) throw (::com::sun::star::uno::RuntimeException
);
799 virtual ::com::sun::star::awt::Rectangle SAL_CALL
getPosSize( ) throw (::com::sun::star::uno::RuntimeException
);
800 virtual void SAL_CALL
setVisible( ::sal_Bool Visible
) throw (::com::sun::star::uno::RuntimeException
);
801 virtual void SAL_CALL
setEnable( ::sal_Bool Enable
) throw (::com::sun::star::uno::RuntimeException
);
802 virtual void SAL_CALL
setFocus( ) throw (::com::sun::star::uno::RuntimeException
);
803 virtual void SAL_CALL
addWindowListener( const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XWindowListener
>& xListener
) throw (::com::sun::star::uno::RuntimeException
);
804 virtual void SAL_CALL
removeWindowListener( const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XWindowListener
>& xListener
) throw (::com::sun::star::uno::RuntimeException
);
805 virtual void SAL_CALL
addFocusListener( const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XFocusListener
>& xListener
) throw (::com::sun::star::uno::RuntimeException
);
806 virtual void SAL_CALL
removeFocusListener( const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XFocusListener
>& xListener
) throw (::com::sun::star::uno::RuntimeException
);
807 virtual void SAL_CALL
addKeyListener( const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XKeyListener
>& xListener
) throw (::com::sun::star::uno::RuntimeException
);
808 virtual void SAL_CALL
removeKeyListener( const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XKeyListener
>& xListener
) throw (::com::sun::star::uno::RuntimeException
);
809 virtual void SAL_CALL
addMouseListener( const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XMouseListener
>& xListener
) throw (::com::sun::star::uno::RuntimeException
);
810 virtual void SAL_CALL
removeMouseListener( const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XMouseListener
>& xListener
) throw (::com::sun::star::uno::RuntimeException
);
811 virtual void SAL_CALL
addMouseMotionListener( const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XMouseMotionListener
>& xListener
) throw (::com::sun::star::uno::RuntimeException
);
812 virtual void SAL_CALL
removeMouseMotionListener( const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XMouseMotionListener
>& xListener
) throw (::com::sun::star::uno::RuntimeException
);
813 virtual void SAL_CALL
addPaintListener( const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XPaintListener
>& xListener
) throw (::com::sun::star::uno::RuntimeException
);
814 virtual void SAL_CALL
removePaintListener( const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XPaintListener
>& xListener
) throw (::com::sun::star::uno::RuntimeException
);
816 sal_Bool
Commit() {return m_pCellControl
->Commit();}
817 void ImplInitWindow( Window
& rParent
, const InitWindowFacet _eInitWhat
)
818 { m_pCellControl
->ImplInitWindow( rParent
, _eInitWhat
); }
820 sal_Bool
isAlignedController() const { return m_pCellControl
->isAlignedController(); }
821 void AlignControl(sal_Int16 nAlignment
)
822 { m_pCellControl
->AlignControl(nAlignment
);}
825 virtual Window
* getEventWindow() const;
826 virtual void onWindowEvent( const sal_uLong _nEventId
, const Window
& _rWindow
, const void* _pEventData
);
828 // default implementations call our focus listeners, don't forget to call them if you override this
829 virtual void onFocusGained( const ::com::sun::star::awt::FocusEvent
& _rEvent
);
830 virtual void onFocusLost( const ::com::sun::star::awt::FocusEvent
& _rEvent
);
833 DECL_LINK( OnWindowEvent
, VclWindowEvent
* );
836 //==================================================================
837 class FmXDataCell
: public FmXGridCell
841 FmXDataCell( DbGridColumn
* pColumn
, DbCellControl
& _rControl
)
842 :FmXGridCell( pColumn
, &_rControl
)
846 virtual void PaintFieldToCell(OutputDevice
& rDev
,
847 const Rectangle
& rRect
,
848 const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& xField
,
849 const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
);
851 void UpdateFromField(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& xField
,
852 const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
)
853 { m_pCellControl
->UpdateFromField(xField
, xFormatter
); }
856 void UpdateFromColumn();
859 //==================================================================
860 class FmXTextCell
: public FmXDataCell
863 /** determines whether the text of this cell can be painted directly, without
864 using the painter control
866 If this is <TRUE/>, the <member>PaintCell</member> method will simply use the text as returned
867 by <member>GetText</member>, and draw it onto the device passed to <member>PaintFieldToCell</member>,
868 while respecting the current alignment settings.
870 If this is <FALSE/>, the <member>PaintFieldToCell</member> request will be forwarded to the painter
871 control (<member>m_pPainter</member>). This is more expensive, but the only option
872 if your painting involves more that a simple DrawText.
874 This member is <TRUE/> by default, and can be modified by derived classes.
876 sal_Bool m_bFastPaint
;
880 FmXTextCell( DbGridColumn
* pColumn
, DbCellControl
& _rControl
);
882 virtual void PaintFieldToCell(OutputDevice
& rDev
,
883 const Rectangle
& rRect
,
884 const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& xField
,
885 const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
);
887 OUString
GetText(const ::com::sun::star::uno::Reference
< ::com::sun::star::sdb::XColumn
>& _rxField
,
888 const ::com::sun::star::uno::Reference
< ::com::sun::star::util::XNumberFormatter
>& xFormatter
,
889 Color
** ppColor
= NULL
)
890 {return m_pCellControl
->GetFormatText(_rxField
, xFormatter
, ppColor
);}
893 //==================================================================
894 typedef ::cppu::ImplHelper2
< ::com::sun::star::awt::XTextComponent
895 , ::com::sun::star::form::XChangeBroadcaster
897 class FmXEditCell
: public FmXTextCell
,
898 public FmXEditCell_Base
901 OUString m_sValueOnEnter
;
904 ::cppu::OInterfaceContainerHelper m_aTextListeners
;
905 ::cppu::OInterfaceContainerHelper m_aChangeListeners
;
906 ::svt::IEditImplementation
* m_pEditImplementation
;
907 bool m_bOwnEditImplementation
;
909 virtual ~FmXEditCell();
911 FmXEditCell( DbGridColumn
* pColumn
, DbCellControl
& _rControl
);
913 DECLARE_UNO3_AGG_DEFAULTS(FmXEditCell
, FmXTextCell
);
914 virtual ::com::sun::star::uno::Any SAL_CALL
queryAggregation( const ::com::sun::star::uno::Type
& _rType
) throw(::com::sun::star::uno::RuntimeException
);
917 virtual ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
> SAL_CALL
getTypes( ) throw(::com::sun::star::uno::RuntimeException
);
918 virtual ::com::sun::star::uno::Sequence
< sal_Int8
> SAL_CALL
getImplementationId() throw(::com::sun::star::uno::RuntimeException
);
921 virtual void SAL_CALL
disposing();
923 // ::com::sun::star::awt::XTextComponent
924 virtual void SAL_CALL
addTextListener(const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XTextListener
>& l
) throw(::com::sun::star::uno::RuntimeException
);
925 virtual void SAL_CALL
removeTextListener(const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XTextListener
>& l
) throw(::com::sun::star::uno::RuntimeException
);
926 virtual void SAL_CALL
setText(const OUString
& aText
) throw(::com::sun::star::uno::RuntimeException
);
927 virtual void SAL_CALL
insertText(const ::com::sun::star::awt::Selection
& Sel
, const OUString
& Text
) throw(::com::sun::star::uno::RuntimeException
);
928 virtual OUString SAL_CALL
getText() throw(::com::sun::star::uno::RuntimeException
);
929 virtual OUString SAL_CALL
getSelectedText() throw(::com::sun::star::uno::RuntimeException
);
930 virtual void SAL_CALL
setSelection(const ::com::sun::star::awt::Selection
& aSelection
) throw(::com::sun::star::uno::RuntimeException
);
931 virtual ::com::sun::star::awt::Selection SAL_CALL
getSelection() throw(::com::sun::star::uno::RuntimeException
);
932 virtual sal_Bool SAL_CALL
isEditable() throw(::com::sun::star::uno::RuntimeException
);
933 virtual void SAL_CALL
setEditable(sal_Bool bEditable
) throw(::com::sun::star::uno::RuntimeException
);
934 virtual void SAL_CALL
setMaxTextLen(sal_Int16 nLen
) throw(::com::sun::star::uno::RuntimeException
);
935 virtual sal_Int16 SAL_CALL
getMaxTextLen() throw(::com::sun::star::uno::RuntimeException
);
937 // XChangeBroadcaster
938 virtual void SAL_CALL
addChangeListener( const ::com::sun::star::uno::Reference
< ::com::sun::star::form::XChangeListener
>& aListener
) throw (::com::sun::star::uno::RuntimeException
);
939 virtual void SAL_CALL
removeChangeListener( const ::com::sun::star::uno::Reference
< ::com::sun::star::form::XChangeListener
>& aListener
) throw (::com::sun::star::uno::RuntimeException
);
942 virtual void onWindowEvent( const sal_uLong _nEventId
, const Window
& _rWindow
, const void* _pEventData
);
944 virtual void onFocusGained( const ::com::sun::star::awt::FocusEvent
& _rEvent
);
945 virtual void onFocusLost( const ::com::sun::star::awt::FocusEvent
& _rEvent
);
948 void onTextChanged();
951 //==================================================================
952 typedef ::cppu::ImplHelper2
< ::com::sun::star::awt::XCheckBox
953 , ::com::sun::star::awt::XButton
954 > FmXCheckBoxCell_Base
;
955 class FmXCheckBoxCell
: public FmXDataCell
,
956 public FmXCheckBoxCell_Base
958 ::cppu::OInterfaceContainerHelper m_aItemListeners
;
959 ::cppu::OInterfaceContainerHelper m_aActionListeners
;
960 OUString m_aActionCommand
;
964 virtual ~FmXCheckBoxCell();
967 FmXCheckBoxCell( DbGridColumn
* pColumn
, DbCellControl
& _rControl
);
970 DECLARE_UNO3_AGG_DEFAULTS(FmXCheckBoxCell
, FmXDataCell
);
971 virtual ::com::sun::star::uno::Any SAL_CALL
queryAggregation( const ::com::sun::star::uno::Type
& _rType
) throw(::com::sun::star::uno::RuntimeException
);
972 virtual ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
> SAL_CALL
getTypes( ) throw(::com::sun::star::uno::RuntimeException
);
973 virtual ::com::sun::star::uno::Sequence
< sal_Int8
> SAL_CALL
getImplementationId() throw(::com::sun::star::uno::RuntimeException
);
976 virtual void SAL_CALL
disposing();
978 // ::com::sun::star::awt::XCheckBox
979 virtual void SAL_CALL
addItemListener(const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XItemListener
>& l
) throw(::com::sun::star::uno::RuntimeException
);
980 virtual void SAL_CALL
removeItemListener(const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XItemListener
>& l
) throw(::com::sun::star::uno::RuntimeException
);
981 virtual sal_Int16 SAL_CALL
getState() throw(::com::sun::star::uno::RuntimeException
);
982 virtual void SAL_CALL
setState(sal_Int16 n
) throw(::com::sun::star::uno::RuntimeException
);
983 virtual void SAL_CALL
setLabel(const OUString
& Label
) throw(::com::sun::star::uno::RuntimeException
);
984 virtual void SAL_CALL
enableTriState(sal_Bool b
) throw(::com::sun::star::uno::RuntimeException
);
987 virtual void SAL_CALL
addActionListener( const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XActionListener
>& l
) throw (::com::sun::star::uno::RuntimeException
);
988 virtual void SAL_CALL
removeActionListener( const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XActionListener
>& l
) throw (::com::sun::star::uno::RuntimeException
);
989 //virtual void SAL_CALL setLabel( const OUString& Label ) throw (::com::sun::star::uno::RuntimeException);
990 virtual void SAL_CALL
setActionCommand( const OUString
& Command
) throw (::com::sun::star::uno::RuntimeException
);
993 virtual Window
* getEventWindow() const;
994 virtual void onWindowEvent( const sal_uLong _nEventId
, const Window
& _rWindow
, const void* _pEventData
);
997 //==================================================================
998 typedef ::cppu::ImplHelper1
< ::com::sun::star::awt::XListBox
999 > FmXListBoxCell_Base
;
1000 class FmXListBoxCell
:public FmXTextCell
1001 ,public FmXListBoxCell_Base
1003 ::cppu::OInterfaceContainerHelper m_aItemListeners
,
1008 virtual ~FmXListBoxCell();
1011 FmXListBoxCell( DbGridColumn
* pColumn
, DbCellControl
& _rControl
);
1013 DECLARE_UNO3_AGG_DEFAULTS(FmXListBoxCell
, FmXTextCell
);
1014 virtual ::com::sun::star::uno::Any SAL_CALL
queryAggregation( const ::com::sun::star::uno::Type
& _rType
) throw(::com::sun::star::uno::RuntimeException
);
1015 virtual ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
> SAL_CALL
getTypes( ) throw(::com::sun::star::uno::RuntimeException
);
1016 virtual ::com::sun::star::uno::Sequence
< sal_Int8
> SAL_CALL
getImplementationId() throw(::com::sun::star::uno::RuntimeException
);
1019 virtual void SAL_CALL
disposing();
1021 // ::com::sun::star::awt::XListBox
1022 virtual void SAL_CALL
addItemListener(const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XItemListener
>& l
) throw(::com::sun::star::uno::RuntimeException
);
1023 virtual void SAL_CALL
removeItemListener(const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XItemListener
>& l
) throw(::com::sun::star::uno::RuntimeException
);
1024 virtual void SAL_CALL
addActionListener(const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XActionListener
>& l
) throw(::com::sun::star::uno::RuntimeException
);
1025 virtual void SAL_CALL
removeActionListener(const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XActionListener
>& l
) throw(::com::sun::star::uno::RuntimeException
);
1026 virtual void SAL_CALL
addItem(const OUString
& aItem
, sal_Int16 nPos
) throw(::com::sun::star::uno::RuntimeException
);
1027 virtual void SAL_CALL
addItems(const ::com::sun::star::uno::Sequence
< OUString
>& aItems
, sal_Int16 nPos
) throw(::com::sun::star::uno::RuntimeException
);
1028 virtual void SAL_CALL
removeItems(sal_Int16 nPos
, sal_Int16 nCount
) throw(::com::sun::star::uno::RuntimeException
);
1029 virtual sal_Int16 SAL_CALL
getItemCount() throw(::com::sun::star::uno::RuntimeException
);
1030 virtual OUString SAL_CALL
getItem(sal_Int16 nPos
) throw(::com::sun::star::uno::RuntimeException
);
1031 virtual ::com::sun::star::uno::Sequence
< OUString
> SAL_CALL
getItems() throw(::com::sun::star::uno::RuntimeException
);
1032 virtual sal_Int16 SAL_CALL
getSelectedItemPos() throw(::com::sun::star::uno::RuntimeException
);
1033 virtual ::com::sun::star::uno::Sequence
< sal_Int16
> SAL_CALL
getSelectedItemsPos() throw(::com::sun::star::uno::RuntimeException
);
1034 virtual OUString SAL_CALL
getSelectedItem() throw(::com::sun::star::uno::RuntimeException
);
1035 virtual ::com::sun::star::uno::Sequence
< OUString
> SAL_CALL
getSelectedItems() throw(::com::sun::star::uno::RuntimeException
);
1036 virtual void SAL_CALL SAL_CALL
selectItemPos(sal_Int16 nPos
, sal_Bool bSelect
) throw(::com::sun::star::uno::RuntimeException
);
1037 virtual void SAL_CALL SAL_CALL
selectItemsPos(const ::com::sun::star::uno::Sequence
< sal_Int16
>& aPositions
, sal_Bool bSelect
) throw(::com::sun::star::uno::RuntimeException
);
1038 virtual void SAL_CALL SAL_CALL
selectItem(const OUString
& aItem
, sal_Bool bSelect
) throw(::com::sun::star::uno::RuntimeException
);
1039 virtual sal_Bool SAL_CALL
isMutipleMode() throw(::com::sun::star::uno::RuntimeException
);
1040 virtual void SAL_CALL SAL_CALL
setMultipleMode(sal_Bool bMulti
) throw(::com::sun::star::uno::RuntimeException
);
1041 virtual sal_Int16 SAL_CALL
getDropDownLineCount() throw(::com::sun::star::uno::RuntimeException
);
1042 virtual void SAL_CALL SAL_CALL
setDropDownLineCount(sal_Int16 nLines
) throw(::com::sun::star::uno::RuntimeException
);
1043 virtual void SAL_CALL SAL_CALL
makeVisible(sal_Int16 nEntry
) throw(::com::sun::star::uno::RuntimeException
);
1046 virtual void onWindowEvent( const sal_uLong _nEventId
, const Window
& _rWindow
, const void* _pEventData
);
1048 DECL_LINK( OnDoubleClick
, void* );
1051 //==================================================================
1052 typedef ::cppu::ImplHelper1
< ::com::sun::star::awt::XComboBox
1053 > FmXComboBoxCell_Base
;
1054 class FmXComboBoxCell
:public FmXTextCell
1055 ,public FmXComboBoxCell_Base
1058 ::cppu::OInterfaceContainerHelper m_aItemListeners
,
1060 ComboBox
* m_pComboBox
;
1063 virtual ~FmXComboBoxCell();
1066 FmXComboBoxCell( DbGridColumn
* pColumn
, DbCellControl
& _rControl
);
1068 DECLARE_UNO3_AGG_DEFAULTS(FmXListBoxCell
, FmXTextCell
);
1069 virtual ::com::sun::star::uno::Any SAL_CALL
queryAggregation( const ::com::sun::star::uno::Type
& _rType
) throw(::com::sun::star::uno::RuntimeException
);
1070 virtual ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
> SAL_CALL
getTypes( ) throw(::com::sun::star::uno::RuntimeException
);
1071 virtual ::com::sun::star::uno::Sequence
< sal_Int8
> SAL_CALL
getImplementationId() throw(::com::sun::star::uno::RuntimeException
);
1074 virtual void SAL_CALL
disposing();
1077 virtual void SAL_CALL
addItemListener( const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XItemListener
>& _Listener
) throw (::com::sun::star::uno::RuntimeException
);
1078 virtual void SAL_CALL
removeItemListener( const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XItemListener
>& _Listener
) throw (::com::sun::star::uno::RuntimeException
);
1079 virtual void SAL_CALL
addActionListener( const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XActionListener
>& _Listener
) throw (::com::sun::star::uno::RuntimeException
);
1080 virtual void SAL_CALL
removeActionListener( const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XActionListener
>& _Listener
) throw (::com::sun::star::uno::RuntimeException
);
1081 virtual void SAL_CALL
addItem( const OUString
& _Item
, ::sal_Int16 _Pos
) throw (::com::sun::star::uno::RuntimeException
);
1082 virtual void SAL_CALL
addItems( const ::com::sun::star::uno::Sequence
< OUString
>& _Items
, ::sal_Int16 _Pos
) throw (::com::sun::star::uno::RuntimeException
);
1083 virtual void SAL_CALL
removeItems( ::sal_Int16 nPos
, ::sal_Int16 nCount
) throw (::com::sun::star::uno::RuntimeException
);
1084 virtual ::sal_Int16 SAL_CALL
getItemCount( ) throw (::com::sun::star::uno::RuntimeException
);
1085 virtual OUString SAL_CALL
getItem( ::sal_Int16 _Pos
) throw (::com::sun::star::uno::RuntimeException
);
1086 virtual ::com::sun::star::uno::Sequence
< OUString
> SAL_CALL
getItems( ) throw (::com::sun::star::uno::RuntimeException
);
1087 virtual ::sal_Int16 SAL_CALL
getDropDownLineCount( ) throw (::com::sun::star::uno::RuntimeException
);
1088 virtual void SAL_CALL
setDropDownLineCount( ::sal_Int16 _Lines
) throw (::com::sun::star::uno::RuntimeException
);
1091 virtual void onWindowEvent( const sal_uLong _nEventId
, const Window
& _rWindow
, const void* _pEventData
);
1094 //==================================================================
1095 typedef ::cppu::ImplHelper2
< ::com::sun::star::awt::XTextComponent
1096 , ::com::sun::star::lang::XUnoTunnel
1097 > FmXFilterCell_Base
;
1098 class FmXFilterCell
:public FmXGridCell
1099 ,public FmXFilterCell_Base
1101 ::cppu::OInterfaceContainerHelper m_aTextListeners
;
1103 virtual ~FmXFilterCell();
1106 FmXFilterCell(DbGridColumn
* pColumn
= NULL
, DbCellControl
* pControl
= NULL
);
1109 DECLARE_UNO3_AGG_DEFAULTS(FmXFilterCell
, FmXGridCell
);
1110 virtual ::com::sun::star::uno::Any SAL_CALL
queryAggregation( const ::com::sun::star::uno::Type
& _rType
) throw(::com::sun::star::uno::RuntimeException
);
1111 virtual ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
> SAL_CALL
getTypes( ) throw(::com::sun::star::uno::RuntimeException
);
1112 virtual ::com::sun::star::uno::Sequence
< sal_Int8
> SAL_CALL
getImplementationId() throw(::com::sun::star::uno::RuntimeException
);
1115 virtual sal_Int64 SAL_CALL
getSomething( const ::com::sun::star::uno::Sequence
< sal_Int8
>& aIdentifier
) throw(::com::sun::star::uno::RuntimeException
);
1117 // helpers for XUnoTunnel
1118 static const ::com::sun::star::uno::Sequence
<sal_Int8
>& getUnoTunnelId();
1120 // painting the filter text
1121 virtual void PaintCell(OutputDevice
& rDev
, const Rectangle
& rRect
);
1122 void Update(){m_pCellControl
->Update();}
1125 virtual void SAL_CALL
disposing();
1127 // ::com::sun::star::awt::XTextComponent
1128 virtual void SAL_CALL
addTextListener(const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XTextListener
>& l
) throw(::com::sun::star::uno::RuntimeException
);
1129 virtual void SAL_CALL
removeTextListener(const ::com::sun::star::uno::Reference
< ::com::sun::star::awt::XTextListener
>& l
) throw(::com::sun::star::uno::RuntimeException
);
1130 virtual void SAL_CALL
setText(const OUString
& aText
) throw(::com::sun::star::uno::RuntimeException
);
1131 virtual void SAL_CALL
insertText(const ::com::sun::star::awt::Selection
& Sel
, const OUString
& Text
) throw(::com::sun::star::uno::RuntimeException
);
1132 virtual OUString SAL_CALL
getText() throw(::com::sun::star::uno::RuntimeException
);
1133 virtual OUString SAL_CALL
getSelectedText() throw(::com::sun::star::uno::RuntimeException
);
1134 virtual void SAL_CALL
setSelection(const ::com::sun::star::awt::Selection
& aSelection
) throw(::com::sun::star::uno::RuntimeException
);
1135 virtual ::com::sun::star::awt::Selection SAL_CALL
getSelection() throw(::com::sun::star::uno::RuntimeException
);
1136 virtual sal_Bool SAL_CALL
isEditable() throw(::com::sun::star::uno::RuntimeException
);
1137 virtual void SAL_CALL
setEditable(sal_Bool bEditable
) throw(::com::sun::star::uno::RuntimeException
);
1138 virtual void SAL_CALL
setMaxTextLen(sal_Int16 nLen
) throw(::com::sun::star::uno::RuntimeException
);
1139 virtual sal_Int16 SAL_CALL
getMaxTextLen() throw(::com::sun::star::uno::RuntimeException
);
1142 DECL_LINK( OnCommit
, void* );
1145 #endif // _SVX_GRIDCELL_HXX
1147 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */