| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| #ifndef _SVX_GRIDCELL_HXX |
| #define _SVX_GRIDCELL_HXX |
| |
| #include <svx/gridctrl.hxx> |
| |
| #include "sqlparserclient.hxx" |
| #include "typeconversionclient.hxx" |
| |
| /** === begin UNO includes === **/ |
| #include <com/sun/star/sdb/XColumn.hpp> |
| #include <com/sun/star/form/XBoundControl.hpp> |
| #include <com/sun/star/awt/XTextComponent.hpp> |
| #include <com/sun/star/awt/XListBox.hpp> |
| #include <com/sun/star/awt/XComboBox.hpp> |
| #include <com/sun/star/awt/TextAlign.hpp> |
| #include <com/sun/star/awt/XControlModel.hpp> |
| #include <com/sun/star/awt/XControl.hpp> |
| #include <com/sun/star/awt/XCheckBox.hpp> |
| #include <com/sun/star/awt/XButton.hpp> |
| #include <com/sun/star/beans/XFastPropertySet.hpp> |
| #include <com/sun/star/lang/XUnoTunnel.hpp> |
| #include <com/sun/star/form/XChangeBroadcaster.hpp> |
| #include <com/sun/star/awt/XWindow.hpp> |
| /** === end UNO includes === **/ |
| |
| #include <comphelper/propmultiplex.hxx> |
| #include <comphelper/componentcontext.hxx> |
| #include <cppuhelper/component.hxx> |
| #include <cppuhelper/implbase1.hxx> |
| #include <cppuhelper/implbase2.hxx> |
| #include <tools/diagnose_ex.h> |
| #include <tools/rtti.hxx> |
| |
| class DbCellControl; |
| class Edit; |
| class FmXGridCell; |
| |
| //================================================================== |
| // FmMutexHelper |
| //================================================================== |
| class FmMutexHelper |
| { |
| protected: |
| ::osl::Mutex m_aMutex; |
| }; |
| |
| //================================================================== |
| // DbGridColumn, Spaltenbeschreibung |
| //================================================================== |
| class DbGridColumn |
| { |
| friend class DbGridControl; |
| |
| ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xModel; |
| ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xField; // Verbindung zum Datenbankfeld |
| ::svt::CellControllerRef m_xController; // Struktur zum Verwalten der Controls fuer eine Spalte |
| // diese wird von der DbBrowseBox auf die jeweiligen Zellen |
| // einer Spalte positioniert |
| FmXGridCell* m_pCell; |
| |
| protected: |
| DbGridControl& m_rParent; |
| |
| private: |
| sal_Int32 m_nLastVisibleWidth; // nur gueltig, wenn m_bHidden == sal_True |
| sal_Int32 m_nFormatKey; |
| sal_Int16 m_nFieldType; |
| sal_Int16 m_nTypeId; |
| sal_uInt16 m_nId; |
| sal_Int16 m_nFieldPos; |
| sal_Int16 m_nAlign; // wird mit TXT_ALIGN_LEFT .... angegeben |
| sal_Bool m_bReadOnly : 1; |
| sal_Bool m_bAutoValue : 1; |
| sal_Bool m_bInSave : 1; |
| sal_Bool m_bNumeric : 1; |
| sal_Bool m_bObject : 1; // Verweist die Column auf ein Object Datentyp? |
| sal_Bool m_bHidden : 1; |
| sal_Bool m_bLocked : 1; |
| sal_Bool m_bDateTime : 1; |
| |
| static ::svt::CellControllerRef s_xEmptyController; |
| // used by locked columns |
| public: |
| DbGridColumn(sal_uInt16 _nId, DbGridControl& rParent) |
| :m_pCell(NULL) |
| ,m_rParent(rParent) |
| ,m_nLastVisibleWidth(-1) |
| ,m_nFormatKey(0) |
| ,m_nFieldType(0) |
| ,m_nTypeId(0) |
| ,m_nId(_nId) |
| ,m_nFieldPos(-1) |
| ,m_nAlign(::com::sun::star::awt::TextAlign::LEFT) |
| ,m_bReadOnly(sal_False) |
| ,m_bAutoValue(sal_False) |
| ,m_bInSave(sal_False) |
| ,m_bNumeric(sal_False) |
| ,m_bObject(sal_False) |
| ,m_bHidden(sal_False) |
| ,m_bLocked(sal_False) |
| ,m_bDateTime(sal_False) |
| { |
| } |
| |
| ~DbGridColumn(); |
| |
| const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& getModel() const { return m_xModel; } |
| void setModel(::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > _xModel); |
| |
| |
| sal_uInt16 GetId() const {return m_nId;} |
| sal_Bool IsReadOnly() const {return m_bReadOnly;} |
| sal_Bool IsAutoValue() const {return m_bAutoValue;} |
| sal_Bool IsUpdating() const {return m_bInSave;} |
| sal_Int16 GetAlignment() const {return m_nAlign;} |
| sal_Int16 GetType() const {return m_nFieldType;} |
| sal_Int16 GetFieldPos() const {return m_nFieldPos; } |
| sal_Bool IsNumeric() const {return m_bNumeric;} |
| sal_Bool IsDateTime() const {return m_bDateTime;} |
| sal_Bool IsObject() const {return m_bObject;} |
| sal_Bool IsHidden() const {return m_bHidden;} |
| sal_Int32 GetKey() const {return m_nFormatKey;} |
| const ::svt::CellControllerRef& GetController() const {return m_bLocked ? s_xEmptyController : m_xController;} |
| const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& GetField() const {return m_xField;} |
| DbGridControl& GetParent() const {return m_rParent;} |
| FmXGridCell* GetCell() const {return m_pCell;} |
| |
| ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn > GetCurrentFieldValue() const; |
| |
| // Zeichnen eines Feldes an einer Position, ist ein ::com::sun::star::sdbcx::View gesetzt |
| // uebernimmt dieser das Zeichnen, z.B. fuer CheckBoxen |
| void Paint(OutputDevice& rDev, |
| const Rectangle& rRect, |
| const DbGridRow* pRow, |
| const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter); |
| |
| |
| // Inititialierung im alive mode |
| // Ist kein ColumnController gesetzt, wird eine DefaultInitialisierung |
| // vorgenommen |
| void CreateControl(sal_Int32 _nFieldPos, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xField, sal_Int32 nTypeId); |
| void UpdateControl() |
| { |
| ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > xField(m_xField); |
| CreateControl(m_nFieldPos, xField, m_nTypeId); |
| } |
| |
| // Editieren einer Zelle |
| void UpdateFromField(const DbGridRow* pRow, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter); |
| sal_Bool Commit(); |
| |
| // freigeben aller Daten, die fuer den AliveMode noetig sind |
| void Clear(); |
| |
| XubString GetCellText(const DbGridRow* pRow, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter) const; |
| XubString 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; |
| |
| void SetReadOnly(sal_Bool bRead){m_bReadOnly = bRead;} |
| void SetObject(sal_Int16 nPos) {m_bObject = m_bReadOnly = sal_True; m_nFieldPos = nPos;} |
| |
| void ImplInitWindow( Window& rParent, const InitWindowFacet _eInitWhat ); |
| |
| // Properties, die auf den ::com::sun::star::frame::Controller durchschlagen koennen |
| sal_Int16 SetAlignment(sal_Int16 _nAlign); |
| // if _nAlign is -1, the alignment is calculated from the type of the field we are bound to |
| // the value really set is returned |
| sal_Int16 SetAlignmentFromModel(sal_Int16 nStandardAlign); |
| // set the alignment according to the "Align"-property of m_xModel, use the given standard |
| // alignment if the property if void, return the really set alignment |
| |
| // column locking |
| sal_Bool isLocked() const { return m_bLocked; } |
| void setLock(sal_Bool _bLock); |
| |
| private: |
| /** attaches or detaches our cell object to the SctriptEventAttacherManager implemented |
| by our model's parent |
| */ |
| void impl_toggleScriptManager_nothrow( bool _bAttach ); |
| }; |
| |
| //================================================================== |
| // DbCellControl, liefert die Daten fuer einen CellController |
| // wird in der Regel nur für komplexe Controls wie z.B ComboBoxen |
| // benoetigt |
| //================================================================== |
| class DbCellControl |
| :public ::svxform::OTypeConversionClient |
| ,public ::svxform::OStaticDataAccessTools |
| ,public FmMutexHelper // _before_ the listener, so the listener is to be destroyed first! |
| ,public ::comphelper::OPropertyChangeListener |
| { |
| private: |
| ::comphelper::OPropertyChangeMultiplexer* m_pModelChangeBroadcaster; |
| ::comphelper::OPropertyChangeMultiplexer* m_pFieldChangeBroadcaster; |
| |
| private: |
| sal_Bool m_bTransparent : 1; |
| sal_Bool m_bAlignedController : 1; |
| sal_Bool m_bAccessingValueProperty : 1; |
| |
| ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet > |
| m_xCursor; |
| |
| protected: |
| DbGridColumn& m_rColumn; |
| Window* m_pPainter; |
| Window* m_pWindow; |
| |
| protected: |
| // attribute access |
| const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& getCursor() const { return m_xCursor; } |
| |
| // control transparency |
| inline sal_Bool isTransparent( ) const { return m_bTransparent; } |
| inline void setTransparent( sal_Bool _bSet ) { m_bTransparent = _bSet; } |
| |
| // control alignment |
| inline void setAlignedController( sal_Bool _bAlign = sal_True ) { m_bAlignedController = _bAlign; } |
| |
| |
| /** determined whether or not the value property is locked |
| @see lockValueProperty |
| */ |
| inline sal_Bool isValuePropertyLocked() const; |
| |
| /** locks the listening at the value property. |
| <p>This means that every subsequent change now done on the value property of the model ("Text", or "Value", |
| or whatever) is then ignored.<br/> |
| This base class uses this setting in <method>Commit</method>.</p> |
| @precond |
| Value locking can't be nested |
| @see unlockValueProperty |
| */ |
| inline void lockValueProperty(); |
| /** unlocks the listening at the value property |
| @see lockValueProperty |
| */ |
| inline void unlockValueProperty(); |
| |
| protected: |
| // adds the given property to the list of properties which we listen for |
| void doPropertyListening( const ::rtl::OUString& _rPropertyName ); |
| |
| // called whenever a property which affects field settings in general is called |
| // you should overwrite this method for every property you add yourself as listener to |
| // with doPropertyListening |
| virtual void implAdjustGenericFieldSetting( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxModel ); |
| |
| // called by _propertyChanged if a property which denotes the column value has changed |
| void implValuePropertyChanged( ); |
| |
| |
| public: |
| TYPEINFO(); |
| DbCellControl(DbGridColumn& _rColumn, sal_Bool _bText = sal_True); |
| virtual ~DbCellControl(); |
| |
| |
| Window& GetWindow() const |
| { |
| ENSURE_OR_THROW( m_pWindow, "no window" ); |
| return *m_pWindow; |
| } |
| |
| // control alignment |
| inline sal_Bool isAlignedController() const { return m_bAlignedController; } |
| void AlignControl(sal_Int16 nAlignment); |
| |
| void SetTextLineColor(); |
| void SetTextLineColor(const Color& _rColor); |
| |
| // Initialisieren bevor ein Control angezeigt wird |
| virtual void Init( Window& rParent, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& xCursor ); |
| virtual ::svt::CellControllerRef CreateController() const = 0; |
| |
| // Schreiben des Wertes in das Model |
| sal_Bool Commit(); |
| |
| // Formatting the field data to output text |
| virtual XubString 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; |
| |
| virtual void Update(){} |
| // Refresh the control by the field data |
| 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; |
| |
| // Painten eines Zellinhalts im vorgegeben Rechteck |
| 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); |
| virtual void PaintCell( OutputDevice& _rDev, const Rectangle& _rRect ); |
| |
| void ImplInitWindow( Window& rParent, const InitWindowFacet _eInitWhat ); |
| |
| 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; |
| |
| protected: |
| void invalidatedController(); |
| |
| /** commits the content of the control (e.g. the text of an edit field) into the column model |
| (e.g. the "Text" property of the model). |
| <p>To be overwritten in derived classes.</p> |
| @see updateFromModel |
| */ |
| virtual sal_Bool commitControl( ) = 0; |
| |
| /** updates the current content of the control (e.g. the text of an edit field) from the column model |
| (e.g. the "Text" property of the model). |
| <p>To be overwritten in derived classes.</p> |
| @precond |
| NULL != _rxModel |
| @precond |
| NULL != m_pWindow |
| |
| @see commitControl |
| */ |
| virtual void updateFromModel( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > _rxModel ) = 0; |
| |
| protected: |
| // OPropertyChangeListener |
| virtual void _propertyChanged(const ::com::sun::star::beans::PropertyChangeEvent& evt) throw(::com::sun::star::uno::RuntimeException); |
| |
| private: |
| void implDoPropertyListening( const ::rtl::OUString& _rPropertyName, sal_Bool _bWarnIfNotExistent = sal_True ); |
| |
| /// updates the "readonly" setting on m_pWindow, according to the respective property value in the given model |
| void implAdjustReadOnly( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxModel,bool i_bReadOnly ); |
| |
| /// updates the "enabled" setting on m_pWindow, according to the respective property value in the given model |
| void implAdjustEnabled( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxModel ); |
| }; |
| |
| //================================================================== |
| //------------------------------------------------------------------ |
| inline sal_Bool DbCellControl::isValuePropertyLocked() const |
| { |
| return m_bAccessingValueProperty; |
| } |
| |
| //------------------------------------------------------------------ |
| inline void DbCellControl::lockValueProperty() |
| { |
| OSL_ENSURE( !isValuePropertyLocked(), "DbCellControl::lockValueProperty: not to be nested!" ); |
| m_bAccessingValueProperty = sal_True; |
| } |
| |
| //------------------------------------------------------------------ |
| inline void DbCellControl::unlockValueProperty() |
| { |
| OSL_ENSURE( isValuePropertyLocked(), "DbCellControl::lockValueProperty: not locked so far!" ); |
| m_bAccessingValueProperty = sal_False; |
| } |
| |
| //================================================================== |
| /** a field which is bound to a column which supports the MaxTextLen property |
| */ |
| class DbLimitedLengthField : public DbCellControl |
| { |
| public: |
| TYPEINFO(); |
| |
| protected: |
| DbLimitedLengthField( DbGridColumn& _rColumn ); |
| |
| protected: |
| // DbCellControl |
| virtual void implAdjustGenericFieldSetting( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxModel ); |
| |
| protected: |
| inline void implSetMaxTextLen( sal_Int16 _nMaxLen ) |
| { |
| implSetEffectiveMaxTextLen( _nMaxLen ? _nMaxLen : EDIT_NOLIMIT ); |
| } |
| virtual void implSetEffectiveMaxTextLen( sal_Int16 _nMaxLen ); |
| }; |
| |
| //================================================================== |
| class DbTextField : public DbLimitedLengthField |
| { |
| ::svt::IEditImplementation* m_pEdit; |
| ::svt::IEditImplementation* m_pPainterImplementation; |
| sal_Int16 m_nKeyType; |
| sal_Bool m_bIsSimpleEdit; |
| |
| protected: |
| ~DbTextField( ); |
| |
| public: |
| TYPEINFO(); |
| DbTextField(DbGridColumn& _rColumn); |
| |
| ::svt::IEditImplementation* GetEditImplementation() { return m_pEdit; } |
| sal_Bool IsSimpleEdit() const { return m_bIsSimpleEdit; } |
| |
| virtual void Init( Window& rParent, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& xCursor ); |
| virtual XubString 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); |
| 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); |
| virtual ::svt::CellControllerRef CreateController() const; |
| 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 >& _rxFormatter ); |
| |
| protected: |
| // DbCellControl |
| virtual sal_Bool commitControl( ); |
| virtual void updateFromModel( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > _rxModel ); |
| // DbLimitedLengthField |
| virtual void implSetEffectiveMaxTextLen( sal_Int16 _nMaxLen ); |
| }; |
| |
| //================================================================== |
| class DbFormattedField : public DbLimitedLengthField |
| { |
| protected: |
| ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier > m_xSupplier; |
| sal_Int16 m_nKeyType; |
| |
| |
| public: |
| TYPEINFO(); |
| DbFormattedField(DbGridColumn& _rColumn); |
| virtual ~DbFormattedField(); |
| |
| |
| virtual void Init( Window& rParent, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& xCursor ); |
| virtual XubString 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); |
| 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); |
| virtual ::svt::CellControllerRef CreateController() const; |
| |
| protected: |
| // DbCellControl |
| virtual sal_Bool commitControl( ); |
| virtual void updateFromModel( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > _rxModel ); |
| |
| // OPropertyChangeListener |
| virtual void _propertyChanged(const ::com::sun::star::beans::PropertyChangeEvent& evt) throw(::com::sun::star::uno::RuntimeException); |
| }; |
| |
| //================================================================== |
| class DbCheckBox : public DbCellControl |
| { |
| public: |
| TYPEINFO(); |
| DbCheckBox(DbGridColumn& _rColumn); |
| |
| virtual void Init( Window& rParent, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& xCursor ); |
| 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); |
| virtual ::svt::CellControllerRef CreateController() const; |
| 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); |
| virtual XubString 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); |
| |
| protected: |
| // DbCellControl |
| virtual sal_Bool commitControl( ); |
| virtual void updateFromModel( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > _rxModel ); |
| }; |
| |
| //================================================================== |
| class DbComboBox : public DbCellControl |
| { |
| sal_Int16 m_nKeyType; |
| |
| public: |
| TYPEINFO(); |
| DbComboBox(DbGridColumn& _rColumn); |
| |
| virtual void Init( Window& rParent, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& xCursor ); |
| virtual XubString 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); |
| 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); |
| virtual ::svt::CellControllerRef CreateController() const; |
| |
| void SetList(const ::com::sun::star::uno::Any& rItems); |
| |
| protected: |
| // DbCellControl |
| virtual sal_Bool commitControl( ); |
| virtual void updateFromModel( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > _rxModel ); |
| |
| virtual void implAdjustGenericFieldSetting( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxModel ); |
| |
| // OPropertyChangeListener |
| virtual void _propertyChanged(const ::com::sun::star::beans::PropertyChangeEvent& evt) throw(::com::sun::star::uno::RuntimeException); |
| }; |
| |
| //================================================================== |
| class DbListBox :public DbCellControl |
| { |
| sal_Bool m_bBound : 1; |
| ::com::sun::star::uno::Sequence< ::rtl::OUString > m_aValueList; |
| |
| public: |
| TYPEINFO(); |
| DbListBox(DbGridColumn& _rColumn); |
| |
| virtual void Init( Window& rParent, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& xCursor ); |
| virtual XubString 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); |
| 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); |
| virtual ::svt::CellControllerRef CreateController() const; |
| |
| void SetList(const ::com::sun::star::uno::Any& rItems); |
| |
| protected: |
| // DbCellControl |
| virtual sal_Bool commitControl( ); |
| virtual void updateFromModel( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > _rxModel ); |
| |
| virtual void implAdjustGenericFieldSetting( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxModel ); |
| |
| // OPropertyChangeListener |
| virtual void _propertyChanged(const ::com::sun::star::beans::PropertyChangeEvent& evt) throw(::com::sun::star::uno::RuntimeException); |
| }; |
| |
| //================================================================== |
| class DbPatternField : public DbCellControl |
| { |
| public: |
| TYPEINFO(); |
| DbPatternField( DbGridColumn& _rColumn, const ::comphelper::ComponentContext& _rContext ); |
| virtual void Init( Window& rParent, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& xCursor ); |
| virtual XubString 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); |
| 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); |
| virtual ::svt::CellControllerRef CreateController() const; |
| |
| protected: |
| /// DbCellControl |
| virtual sal_Bool commitControl( ); |
| virtual void updateFromModel( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > _rxModel ); |
| |
| virtual void implAdjustGenericFieldSetting( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxModel ); |
| |
| private: |
| String impl_formatText( const String& _rText ); |
| |
| private: |
| ::std::auto_ptr< ::dbtools::FormattedColumnValue > m_pValueFormatter; |
| ::std::auto_ptr< ::dbtools::FormattedColumnValue > m_pPaintFormatter; |
| ::comphelper::ComponentContext m_aContext; |
| }; |
| |
| //================================================================== |
| class DbSpinField : public DbCellControl |
| { |
| private: |
| sal_Int16 m_nStandardAlign; |
| |
| public: |
| TYPEINFO(); |
| |
| protected: |
| DbSpinField( DbGridColumn& _rColumn, sal_Int16 _nStandardAlign = com::sun::star::awt::TextAlign::RIGHT ); |
| |
| public: |
| virtual void Init( Window& rParent, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& _rxCursor ); |
| virtual ::svt::CellControllerRef CreateController() const; |
| |
| protected: |
| virtual SpinField* createField( |
| Window* _pParent, |
| WinBits _nFieldStyle, |
| const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxModel |
| ) = 0; |
| }; |
| |
| //================================================================== |
| class DbDateField : public DbSpinField |
| { |
| public: |
| TYPEINFO(); |
| DbDateField(DbGridColumn& _rColumn); |
| virtual XubString 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); |
| 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); |
| |
| protected: |
| // DbCellControl |
| virtual sal_Bool commitControl( ); |
| virtual void updateFromModel( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > _rxModel ); |
| |
| // DbSpinField |
| virtual SpinField* createField( |
| Window* _pParent, |
| WinBits _nFieldStyle, |
| const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxModel |
| ); |
| |
| /// initializes everything which relates to the properties describing the numeric behaviour |
| virtual void implAdjustGenericFieldSetting( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxModel ); |
| }; |
| |
| //================================================================== |
| class DbTimeField : public DbSpinField |
| { |
| public: |
| TYPEINFO(); |
| DbTimeField(DbGridColumn& _rColumn); |
| virtual XubString 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); |
| 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); |
| |
| protected: |
| // DbCellControl |
| virtual sal_Bool commitControl( ); |
| virtual void updateFromModel( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > _rxModel ); |
| |
| // DbSpinField |
| virtual SpinField* createField( |
| Window* _pParent, |
| WinBits _nFieldStyle, |
| const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxModel |
| ); |
| |
| /// initializes everything which relates to the properties describing the numeric behaviour |
| virtual void implAdjustGenericFieldSetting( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxModel ); |
| }; |
| |
| //================================================================== |
| class DbCurrencyField : public DbSpinField |
| { |
| sal_Int16 m_nScale; |
| |
| public: |
| TYPEINFO(); |
| DbCurrencyField(DbGridColumn& _rColumn); |
| virtual XubString 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); |
| 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); |
| |
| 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; |
| |
| protected: |
| // DbCellControl |
| virtual sal_Bool commitControl( ); |
| virtual void updateFromModel( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > _rxModel ); |
| |
| // DbSpinField |
| virtual SpinField* createField( |
| Window* _pParent, |
| WinBits _nFieldStyle, |
| const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxModel |
| ); |
| |
| /// initializes everything which relates to the properties describing the numeric behaviour |
| virtual void implAdjustGenericFieldSetting( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxModel ); |
| }; |
| |
| //================================================================== |
| class DbNumericField : public DbSpinField |
| { |
| public: |
| TYPEINFO(); |
| DbNumericField(DbGridColumn& _rColumn); |
| virtual XubString 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); |
| 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); |
| |
| protected: |
| // DbCellControl |
| virtual sal_Bool commitControl( ); |
| virtual void updateFromModel( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > _rxModel ); |
| |
| // DbSpinField |
| virtual SpinField* createField( |
| Window* _pParent, |
| WinBits _nFieldStyle, |
| const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxModel |
| ); |
| |
| /// initializes everything which relates to the properties describing the numeric behaviour |
| void implAdjustGenericFieldSetting( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxModel ); |
| }; |
| |
| //================================================================== |
| class DbFilterField |
| :public DbCellControl |
| ,public ::svxform::OSQLParserClient |
| { |
| ::com::sun::star::uno::Sequence< ::rtl::OUString > m_aValueList; |
| XubString m_aText; |
| Link m_aCommitLink; |
| sal_Int16 m_nControlClass; |
| sal_Bool m_bFilterList : 1; |
| sal_Bool m_bFilterListFilled : 1; |
| sal_Bool m_bBound : 1; |
| |
| public: |
| TYPEINFO(); |
| DbFilterField(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB,DbGridColumn& _rColumn); |
| virtual ~DbFilterField(); |
| |
| virtual void Init( Window& rParent, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& xCursor ); |
| virtual ::svt::CellControllerRef CreateController() const; |
| virtual void PaintCell(OutputDevice& rDev, const Rectangle& rRect); |
| virtual void Update(); |
| virtual XubString 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); |
| 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); |
| |
| const XubString& GetText() const {return m_aText;} |
| void SetText(const XubString& rText); |
| |
| void SetCommitHdl( const Link& rLink ) { m_aCommitLink = rLink; } |
| const Link& GetCommitHdl() const { return m_aCommitLink; } |
| |
| protected: |
| |
| // DbCellControl |
| virtual sal_Bool commitControl( ); |
| virtual void updateFromModel( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > _rxModel ); |
| |
| protected: |
| void SetList(const ::com::sun::star::uno::Any& rItems, sal_Bool bComboBox); |
| void CreateControl(Window* pParent, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xModel); |
| DECL_LINK( OnClick, void* ); |
| }; |
| |
| //================================================================== |
| // Base class providing the access to a grid cell |
| //================================================================== |
| typedef ::cppu::ImplHelper2 < ::com::sun::star::awt::XControl |
| , ::com::sun::star::form::XBoundControl |
| > FmXGridCell_Base; |
| typedef ::cppu::ImplHelper1 < ::com::sun::star::awt::XWindow |
| > FmXGridCell_WindowBase; |
| class FmXGridCell :public ::cppu::OComponentHelper |
| ,public FmXGridCell_Base |
| ,public FmXGridCell_WindowBase |
| { |
| protected: |
| ::osl::Mutex m_aMutex; |
| DbGridColumn* m_pColumn; |
| DbCellControl* m_pCellControl; |
| |
| private: |
| ::cppu::OInterfaceContainerHelper m_aWindowListeners; |
| ::cppu::OInterfaceContainerHelper m_aFocusListeners; |
| ::cppu::OInterfaceContainerHelper m_aKeyListeners; |
| ::cppu::OInterfaceContainerHelper m_aMouseListeners; |
| ::cppu::OInterfaceContainerHelper m_aMouseMotionListeners; |
| |
| protected: |
| virtual ~FmXGridCell(); |
| |
| public: |
| TYPEINFO(); |
| FmXGridCell( DbGridColumn* pColumn, DbCellControl* pControl ); |
| void init(); |
| |
| DECLARE_UNO3_AGG_DEFAULTS(FmXGridCell, OComponentHelper); |
| virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type& _rType ) throw(::com::sun::star::uno::RuntimeException); |
| |
| void SetTextLineColor(); |
| void SetTextLineColor(const Color& _rColor); |
| |
| // XTypeProvider |
| virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw (::com::sun::star::uno::RuntimeException); |
| virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw(::com::sun::star::uno::RuntimeException); |
| |
| // OComponentHelper |
| virtual void SAL_CALL disposing(); |
| |
| // ::com::sun::star::lang::XComponent |
| virtual void SAL_CALL dispose() throw(::com::sun::star::uno::RuntimeException){OComponentHelper::dispose();} |
| 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);} |
| 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);} |
| |
| // ::com::sun::star::awt::XControl |
| virtual void SAL_CALL setContext(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& /*Context*/) throw(::com::sun::star::uno::RuntimeException){} |
| virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getContext() throw(::com::sun::star::uno::RuntimeException); |
| 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){} |
| |
| 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 > ();} |
| 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;} |
| virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel > SAL_CALL getModel() throw (::com::sun::star::uno::RuntimeException); |
| 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 > ();} |
| virtual void SAL_CALL setDesignMode(sal_Bool /*bOn*/) throw (::com::sun::star::uno::RuntimeException) {} |
| virtual sal_Bool SAL_CALL isDesignMode() throw (::com::sun::star::uno::RuntimeException) {return sal_False;} |
| virtual sal_Bool SAL_CALL isTransparent() throw (::com::sun::star::uno::RuntimeException) {return sal_False;} |
| |
| // ::com::sun::star::form::XBoundControl |
| virtual sal_Bool SAL_CALL getLock() throw(::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL setLock(sal_Bool _bLock) throw(::com::sun::star::uno::RuntimeException); |
| |
| // XWindow |
| 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); |
| virtual ::com::sun::star::awt::Rectangle SAL_CALL getPosSize( ) throw (::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL setVisible( ::sal_Bool Visible ) throw (::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL setEnable( ::sal_Bool Enable ) throw (::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL setFocus( ) throw (::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL addWindowListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindowListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL removeWindowListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindowListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL addFocusListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XFocusListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL removeFocusListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XFocusListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL addKeyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XKeyListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL removeKeyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XKeyListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL addMouseListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XMouseListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL removeMouseListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XMouseListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL addMouseMotionListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XMouseMotionListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL removeMouseMotionListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XMouseMotionListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL addPaintListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XPaintListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL removePaintListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XPaintListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); |
| |
| sal_Bool Commit() {return m_pCellControl->Commit();} |
| void ImplInitWindow( Window& rParent, const InitWindowFacet _eInitWhat ) |
| { m_pCellControl->ImplInitWindow( rParent, _eInitWhat ); } |
| |
| sal_Bool isAlignedController() const { return m_pCellControl->isAlignedController(); } |
| void AlignControl(sal_Int16 nAlignment) |
| { m_pCellControl->AlignControl(nAlignment);} |
| |
| protected: |
| virtual Window* getEventWindow() const; |
| virtual void onWindowEvent( const sal_uLong _nEventId, const Window& _rWindow, const void* _pEventData ); |
| |
| // default implementations call our focus listeners, don't forget to call them if you override this |
| virtual void onFocusGained( const ::com::sun::star::awt::FocusEvent& _rEvent ); |
| virtual void onFocusLost( const ::com::sun::star::awt::FocusEvent& _rEvent ); |
| |
| private: |
| DECL_LINK( OnWindowEvent, VclWindowEvent* ); |
| }; |
| |
| //================================================================== |
| class FmXDataCell : public FmXGridCell |
| { |
| public: |
| TYPEINFO(); |
| FmXDataCell( DbGridColumn* pColumn, DbCellControl& _rControl ) |
| :FmXGridCell( pColumn, &_rControl ) |
| { |
| } |
| |
| virtual void PaintFieldToCell(OutputDevice& rDev, |
| const Rectangle& rRect, |
| const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& xField, |
| const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter); |
| |
| void UpdateFromField(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& xField, |
| const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter) |
| { m_pCellControl->UpdateFromField(xField, xFormatter); } |
| |
| protected: |
| void UpdateFromColumn(); |
| }; |
| |
| //================================================================== |
| class FmXTextCell : public FmXDataCell |
| { |
| protected: |
| /** determines whether the text of this cell can be painted directly, without |
| using the painter control |
| |
| If this is <TRUE/>, the <member>PaintCell</member> method will simply use the text as returned |
| by <member>GetText</member>, and draw it onto the device passed to <member>PaintFieldToCell</member>, |
| while respecting the current alignment settings. |
| |
| If this is <FALSE/>, the <member>PaintFieldToCell</member> request will be forwarded to the painter |
| control (<member>m_pPainter</member>). This is more expensive, but the only option |
| if your painting involves more that a simple DrawText. |
| |
| This member is <TRUE/> by default, and can be modified by derived classes. |
| */ |
| sal_Bool m_bFastPaint; |
| |
| public: |
| TYPEINFO(); |
| FmXTextCell( DbGridColumn* pColumn, DbCellControl& _rControl ); |
| |
| virtual void PaintFieldToCell(OutputDevice& rDev, |
| const Rectangle& rRect, |
| const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& xField, |
| const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter); |
| |
| XubString GetText(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) |
| {return m_pCellControl->GetFormatText(_rxField, xFormatter, ppColor);} |
| }; |
| |
| //================================================================== |
| typedef ::cppu::ImplHelper2 < ::com::sun::star::awt::XTextComponent |
| , ::com::sun::star::form::XChangeBroadcaster |
| > FmXEditCell_Base; |
| class FmXEditCell : public FmXTextCell, |
| public FmXEditCell_Base |
| { |
| private: |
| ::rtl::OUString m_sValueOnEnter; |
| |
| protected: |
| ::cppu::OInterfaceContainerHelper m_aTextListeners; |
| ::cppu::OInterfaceContainerHelper m_aChangeListeners; |
| ::svt::IEditImplementation* m_pEditImplementation; |
| bool m_bOwnEditImplementation; |
| |
| virtual ~FmXEditCell(); |
| public: |
| FmXEditCell( DbGridColumn* pColumn, DbCellControl& _rControl ); |
| |
| DECLARE_UNO3_AGG_DEFAULTS(FmXEditCell, FmXTextCell); |
| virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type& _rType ) throw(::com::sun::star::uno::RuntimeException); |
| |
| // XTypeProvider |
| virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException); |
| virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw(::com::sun::star::uno::RuntimeException); |
| |
| // OComponentHelper |
| virtual void SAL_CALL disposing(); |
| |
| // ::com::sun::star::awt::XTextComponent |
| virtual void SAL_CALL addTextListener(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextListener >& l) throw(::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL removeTextListener(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextListener >& l) throw(::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL setText(const ::rtl::OUString& aText) throw(::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL insertText(const ::com::sun::star::awt::Selection& Sel, const ::rtl::OUString& Text) throw(::com::sun::star::uno::RuntimeException); |
| virtual ::rtl::OUString SAL_CALL getText() throw(::com::sun::star::uno::RuntimeException); |
| virtual ::rtl::OUString SAL_CALL getSelectedText() throw(::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL setSelection(const ::com::sun::star::awt::Selection& aSelection) throw(::com::sun::star::uno::RuntimeException); |
| virtual ::com::sun::star::awt::Selection SAL_CALL getSelection() throw(::com::sun::star::uno::RuntimeException); |
| virtual sal_Bool SAL_CALL isEditable() throw(::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL setEditable(sal_Bool bEditable) throw(::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL setMaxTextLen(sal_Int16 nLen) throw(::com::sun::star::uno::RuntimeException); |
| virtual sal_Int16 SAL_CALL getMaxTextLen() throw(::com::sun::star::uno::RuntimeException); |
| |
| // XChangeBroadcaster |
| virtual void SAL_CALL addChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::form::XChangeListener >& aListener ) throw (::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL removeChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::form::XChangeListener >& aListener ) throw (::com::sun::star::uno::RuntimeException); |
| |
| protected: |
| virtual void onWindowEvent( const sal_uLong _nEventId, const Window& _rWindow, const void* _pEventData ); |
| |
| virtual void onFocusGained( const ::com::sun::star::awt::FocusEvent& _rEvent ); |
| virtual void onFocusLost( const ::com::sun::star::awt::FocusEvent& _rEvent ); |
| |
| private: |
| void onTextChanged(); |
| }; |
| |
| //================================================================== |
| typedef ::cppu::ImplHelper2 < ::com::sun::star::awt::XCheckBox |
| , ::com::sun::star::awt::XButton |
| > FmXCheckBoxCell_Base; |
| class FmXCheckBoxCell : public FmXDataCell, |
| public FmXCheckBoxCell_Base |
| { |
| ::cppu::OInterfaceContainerHelper m_aItemListeners; |
| ::cppu::OInterfaceContainerHelper m_aActionListeners; |
| ::rtl::OUString m_aActionCommand; |
| CheckBox* m_pBox; |
| |
| protected: |
| virtual ~FmXCheckBoxCell(); |
| |
| public: |
| FmXCheckBoxCell( DbGridColumn* pColumn, DbCellControl& _rControl ); |
| |
| // UNO |
| DECLARE_UNO3_AGG_DEFAULTS(FmXCheckBoxCell, FmXDataCell); |
| virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type& _rType ) throw(::com::sun::star::uno::RuntimeException); |
| virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException); |
| virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw(::com::sun::star::uno::RuntimeException); |
| |
| // OComponentHelper |
| virtual void SAL_CALL disposing(); |
| |
| // ::com::sun::star::awt::XCheckBox |
| virtual void SAL_CALL addItemListener(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XItemListener >& l) throw(::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL removeItemListener(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XItemListener >& l) throw(::com::sun::star::uno::RuntimeException); |
| virtual sal_Int16 SAL_CALL getState() throw(::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL setState(sal_Int16 n) throw(::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL setLabel(const ::rtl::OUString& Label) throw(::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL enableTriState(sal_Bool b) throw(::com::sun::star::uno::RuntimeException); |
| |
| // XButton |
| virtual void SAL_CALL addActionListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XActionListener >& l ) throw (::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL removeActionListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XActionListener >& l ) throw (::com::sun::star::uno::RuntimeException); |
| //virtual void SAL_CALL setLabel( const ::rtl::OUString& Label ) throw (::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL setActionCommand( const ::rtl::OUString& Command ) throw (::com::sun::star::uno::RuntimeException); |
| |
| protected: |
| virtual Window* getEventWindow() const; |
| virtual void onWindowEvent( const sal_uLong _nEventId, const Window& _rWindow, const void* _pEventData ); |
| }; |
| |
| //================================================================== |
| typedef ::cppu::ImplHelper1 < ::com::sun::star::awt::XListBox |
| > FmXListBoxCell_Base; |
| class FmXListBoxCell :public FmXTextCell |
| ,public FmXListBoxCell_Base |
| { |
| ::cppu::OInterfaceContainerHelper m_aItemListeners, |
| m_aActionListeners; |
| ListBox* m_pBox; |
| |
| protected: |
| virtual ~FmXListBoxCell(); |
| |
| public: |
| FmXListBoxCell( DbGridColumn* pColumn, DbCellControl& _rControl ); |
| |
| DECLARE_UNO3_AGG_DEFAULTS(FmXListBoxCell, FmXTextCell); |
| virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type& _rType ) throw(::com::sun::star::uno::RuntimeException); |
| virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException); |
| virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw(::com::sun::star::uno::RuntimeException); |
| |
| // OComponentHelper |
| virtual void SAL_CALL disposing(); |
| |
| // ::com::sun::star::awt::XListBox |
| virtual void SAL_CALL addItemListener(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XItemListener >& l) throw(::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL removeItemListener(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XItemListener >& l) throw(::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL addActionListener(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XActionListener >& l) throw(::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL removeActionListener(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XActionListener >& l) throw(::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL addItem(const ::rtl::OUString& aItem, sal_Int16 nPos) throw(::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL addItems(const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aItems, sal_Int16 nPos) throw(::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL removeItems(sal_Int16 nPos, sal_Int16 nCount) throw(::com::sun::star::uno::RuntimeException); |
| virtual sal_Int16 SAL_CALL getItemCount() throw(::com::sun::star::uno::RuntimeException); |
| virtual ::rtl::OUString SAL_CALL getItem(sal_Int16 nPos) throw(::com::sun::star::uno::RuntimeException); |
| virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getItems() throw(::com::sun::star::uno::RuntimeException); |
| virtual sal_Int16 SAL_CALL getSelectedItemPos() throw(::com::sun::star::uno::RuntimeException); |
| virtual ::com::sun::star::uno::Sequence< sal_Int16 > SAL_CALL getSelectedItemsPos() throw(::com::sun::star::uno::RuntimeException); |
| virtual ::rtl::OUString SAL_CALL getSelectedItem() throw(::com::sun::star::uno::RuntimeException); |
| virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSelectedItems() throw(::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL SAL_CALL selectItemPos(sal_Int16 nPos, sal_Bool bSelect) throw(::com::sun::star::uno::RuntimeException); |
| 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); |
| virtual void SAL_CALL SAL_CALL selectItem(const ::rtl::OUString& aItem, sal_Bool bSelect) throw(::com::sun::star::uno::RuntimeException); |
| virtual sal_Bool SAL_CALL isMutipleMode() throw(::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL SAL_CALL setMultipleMode(sal_Bool bMulti) throw(::com::sun::star::uno::RuntimeException); |
| virtual sal_Int16 SAL_CALL getDropDownLineCount() throw(::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL SAL_CALL setDropDownLineCount(sal_Int16 nLines) throw(::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL SAL_CALL makeVisible(sal_Int16 nEntry) throw(::com::sun::star::uno::RuntimeException); |
| |
| protected: |
| virtual void onWindowEvent( const sal_uLong _nEventId, const Window& _rWindow, const void* _pEventData ); |
| |
| DECL_LINK( OnDoubleClick, void* ); |
| }; |
| |
| //================================================================== |
| typedef ::cppu::ImplHelper1 < ::com::sun::star::awt::XComboBox |
| > FmXComboBoxCell_Base; |
| class FmXComboBoxCell :public FmXTextCell |
| ,public FmXComboBoxCell_Base |
| { |
| private: |
| ::cppu::OInterfaceContainerHelper m_aItemListeners, |
| m_aActionListeners; |
| ComboBox* m_pComboBox; |
| |
| protected: |
| virtual ~FmXComboBoxCell(); |
| |
| public: |
| FmXComboBoxCell( DbGridColumn* pColumn, DbCellControl& _rControl ); |
| |
| DECLARE_UNO3_AGG_DEFAULTS(FmXListBoxCell, FmXTextCell); |
| virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type& _rType ) throw(::com::sun::star::uno::RuntimeException); |
| virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException); |
| virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw(::com::sun::star::uno::RuntimeException); |
| |
| // OComponentHelper |
| virtual void SAL_CALL disposing(); |
| |
| // XComboBox |
| virtual void SAL_CALL addItemListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XItemListener >& _Listener ) throw (::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL removeItemListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XItemListener >& _Listener ) throw (::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL addActionListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XActionListener >& _Listener ) throw (::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL removeActionListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XActionListener >& _Listener ) throw (::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL addItem( const ::rtl::OUString& _Item, ::sal_Int16 _Pos ) throw (::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL addItems( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& _Items, ::sal_Int16 _Pos ) throw (::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL removeItems( ::sal_Int16 nPos, ::sal_Int16 nCount ) throw (::com::sun::star::uno::RuntimeException); |
| virtual ::sal_Int16 SAL_CALL getItemCount( ) throw (::com::sun::star::uno::RuntimeException); |
| virtual ::rtl::OUString SAL_CALL getItem( ::sal_Int16 _Pos ) throw (::com::sun::star::uno::RuntimeException); |
| virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getItems( ) throw (::com::sun::star::uno::RuntimeException); |
| virtual ::sal_Int16 SAL_CALL getDropDownLineCount( ) throw (::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL setDropDownLineCount( ::sal_Int16 _Lines ) throw (::com::sun::star::uno::RuntimeException); |
| |
| protected: |
| virtual void onWindowEvent( const sal_uLong _nEventId, const Window& _rWindow, const void* _pEventData ); |
| }; |
| |
| //================================================================== |
| typedef ::cppu::ImplHelper2 < ::com::sun::star::awt::XTextComponent |
| , ::com::sun::star::lang::XUnoTunnel |
| > FmXFilterCell_Base; |
| class FmXFilterCell :public FmXGridCell |
| ,public FmXFilterCell_Base |
| { |
| ::cppu::OInterfaceContainerHelper m_aTextListeners; |
| protected: |
| virtual ~FmXFilterCell(); |
| public: |
| TYPEINFO(); |
| FmXFilterCell(DbGridColumn* pColumn = NULL, DbCellControl* pControl = NULL); |
| |
| |
| DECLARE_UNO3_AGG_DEFAULTS(FmXFilterCell, FmXGridCell); |
| virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type& _rType ) throw(::com::sun::star::uno::RuntimeException); |
| virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException); |
| virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw(::com::sun::star::uno::RuntimeException); |
| |
| // XUnoTunnel |
| virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException); |
| |
| // helpers for XUnoTunnel |
| static const ::com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId(); |
| static FmXFilterCell* getImplementation( |
| const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl >& _rxObject); |
| |
| // painting the filter text |
| virtual void PaintCell(OutputDevice& rDev, const Rectangle& rRect); |
| void Update(){m_pCellControl->Update();} |
| |
| // OComponentHelper |
| virtual void SAL_CALL disposing(); |
| |
| // ::com::sun::star::awt::XTextComponent |
| virtual void SAL_CALL addTextListener(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextListener >& l) throw(::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL removeTextListener(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextListener >& l) throw(::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL setText(const ::rtl::OUString& aText) throw(::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL insertText(const ::com::sun::star::awt::Selection& Sel, const ::rtl::OUString& Text) throw(::com::sun::star::uno::RuntimeException); |
| virtual ::rtl::OUString SAL_CALL getText() throw(::com::sun::star::uno::RuntimeException); |
| virtual ::rtl::OUString SAL_CALL getSelectedText() throw(::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL setSelection(const ::com::sun::star::awt::Selection& aSelection) throw(::com::sun::star::uno::RuntimeException); |
| virtual ::com::sun::star::awt::Selection SAL_CALL getSelection() throw(::com::sun::star::uno::RuntimeException); |
| virtual sal_Bool SAL_CALL isEditable() throw(::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL setEditable(sal_Bool bEditable) throw(::com::sun::star::uno::RuntimeException); |
| virtual void SAL_CALL setMaxTextLen(sal_Int16 nLen) throw(::com::sun::star::uno::RuntimeException); |
| virtual sal_Int16 SAL_CALL getMaxTextLen() throw(::com::sun::star::uno::RuntimeException); |
| |
| protected: |
| DECL_LINK( OnCommit, void* ); |
| }; |
| |
| #endif // _SVX_GRIDCELL_HXX |
| |