diff options
Diffstat (limited to 'svtools/source/uno/unocontroltablemodel.hxx')
-rw-r--r-- | svtools/source/uno/unocontroltablemodel.hxx | 240 |
1 files changed, 115 insertions, 125 deletions
diff --git a/svtools/source/uno/unocontroltablemodel.hxx b/svtools/source/uno/unocontroltablemodel.hxx index c00642448f79..537c3d9a5249 100644 --- a/svtools/source/uno/unocontroltablemodel.hxx +++ b/svtools/source/uno/unocontroltablemodel.hxx @@ -28,67 +28,37 @@ #ifndef _UNOCONTROL_TABLEMODEL_HXX_ #define _UNOCONTROL_TABLEMODEL_HXX_ -#include <svtools/table/tablemodel.hxx> -#include <svtools/table/tablecontrol.hxx> +#include "svtools/table/tablemodel.hxx" +#include "svtools/table/tablecontrol.hxx" + +/** === begin UNO includes === **/ #include <com/sun/star/awt/grid/XGridControl.hpp> -#include <com/sun/star/awt/grid/XGridDataListener.hpp> #include <com/sun/star/awt/grid/GridDataEvent.hpp> #include <com/sun/star/awt/grid/XGridColumnModel.hpp> #include <com/sun/star/awt/grid/XGridDataModel.hpp> #include <com/sun/star/awt/grid/XGridSelectionListener.hpp> -#include <toolkit/awt/vclxwindow.hxx> -#include <toolkit/awt/vclxwindows.hxx> -#include <cppuhelper/typeprovider.hxx> -#include <cppuhelper/implbase2.hxx> #include <com/sun/star/awt/grid/XGridColumn.hpp> #include <com/sun/star/util/Color.hpp> #include <com/sun/star/style/VerticalAlignment.hpp> -#include <com/sun/star/style/HorizontalAlignment.hpp> +/** === end UNO includes === **/ +#include <cppuhelper/implbase2.hxx> +#include <rtl/ref.hxx> -using namespace ::svt::table; -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::awt::grid; +#include <boost/noncopyable.hpp> -class UnoControlTableColumn : public IColumnModel -{ - private: - ColumnID m_nID; - String m_sName; - bool m_bIsResizable; - TableMetrics m_nWidth; - TableMetrics m_nMinWidth; - TableMetrics m_nMaxWidth; - TableMetrics m_nPrefWidth; - ::com::sun::star::style::HorizontalAlignment m_xHorizontalAlign; - - public: - UnoControlTableColumn(Reference<XGridColumn>); - UnoControlTableColumn(); - - // IColumnModel overridables - virtual ColumnID getID() const; - virtual bool setID( const ColumnID _nID ); - virtual String getName() const; - virtual void setName( const String& _rName ); - virtual bool isResizable() const; - virtual void setResizable( bool _bResizable ); - virtual TableMetrics getWidth() const; - virtual void setWidth( TableMetrics _nWidth ); - virtual TableMetrics getMinWidth() const; - virtual void setMinWidth( TableMetrics _nMinWidth ); - virtual TableMetrics getMaxWidth() const; - virtual void setMaxWidth( TableMetrics _nMaxWidth ); - virtual TableMetrics getPreferredWidth() const; - virtual void setPreferredWidth( TableMetrics _nPrefWidth ); - virtual ::com::sun::star::style::HorizontalAlignment getHorizontalAlign(); - virtual void setHorizontalAlign(::com::sun::star::style::HorizontalAlignment _xAlign); -}; - -struct UnoControlTableModel_Impl; - -class UnoControlTableModel : public ITableModel +// ..................................................................................................................... +namespace svt { namespace table { +// ..................................................................................................................... + + //================================================================================================================== + //= UnoControlTableModel + //================================================================================================================== + class UnoGridColumnFacade; + struct UnoControlTableModel_Impl; + class UnoControlTableModel : public ITableModel, public ITableDataSort + { private: UnoControlTableModel_Impl* m_pImpl; @@ -96,82 +66,102 @@ class UnoControlTableModel : public ITableModel UnoControlTableModel(); ~UnoControlTableModel(); - /// returns the current row height, in 1/100 millimeters - inline TableMetrics GetRowHeight() const { return getRowHeight(); } - /// sets a new row height. - void setRowHeight( TableMetrics _nHeight ); - /// sets a new row header width. - void setRowHeaderWidth( TableMetrics _nWidth ); - /// sets a new column header height. - void setColumnHeaderHeight( TableMetrics _nHeight ); - - /// returns the height of the title row (containing the column headers) - inline TableMetrics GetTitleHeight() const { return getColumnHeaderHeight(); } - /// sets a new height for the title row (containing the column headers) - void SetTitleHeight( TableMetrics _nHeight ); - - /// returns the width of the handle column (containing the row headers) - inline TableMetrics GetHandleWidth() const { return getRowHeaderWidth(); } - /// sets a new width for the handle column (containing the row headers) - void SetHandleWidth( TableMetrics _nWidth ); - - /// sets the width of a column - inline void SetColumnWidth( ColPos _nColumn, TableMetrics _nWidth100thMM ); - /// retrieves the width of a column, in 1/100th millimeters - inline TableMetrics GetColumnWidth( ColPos _nColumn ); - public: // ITableModel overridables - virtual TableSize getColumnCount() const; - virtual TableSize getRowCount() const; - virtual void setColumnCount(TableSize _nColCount); - virtual void setRowCount(TableSize _nRowCount); - virtual bool hasColumnHeaders() const; - virtual bool hasRowHeaders() const; - virtual void setRowHeaders(bool _bRowHeaders); - virtual void setColumnHeaders(bool _bColumnHeaders); - virtual bool isCellEditable( ColPos col, RowPos row ) const; - virtual void addTableModelListener( const PTableModelListener& listener ); - virtual void removeTableModelListener( const PTableModelListener& listener ); - virtual PColumnModel getColumnModel( ColPos column ); - virtual std::vector<PColumnModel>& getColumnModel(); - virtual PColumnModel getColumnModelByID( ColumnID id ); - virtual PTableRenderer getRenderer() const; - virtual PTableInputHandler getInputHandler() const; - virtual TableMetrics getRowHeight() const; - virtual TableMetrics getColumnHeaderHeight() const; - virtual TableMetrics getRowHeaderWidth() const; - virtual ScrollbarVisibility getVerticalScrollbarVisibility(int overAllHeight, int actHeight) const; - virtual ScrollbarVisibility getHorizontalScrollbarVisibility(int overAllWidth, int actWidth) const; - virtual void setVerticalScrollbarVisibility(bool _bVScroll) const; - virtual void setHorizontalScrollbarVisibility(bool _bHScroll) const; - virtual void setCellContent(const std::vector<std::vector< Any > >& cellContent); - virtual std::vector<std::vector< Any > >& getCellContent(); - virtual void setRowHeaderName(const std::vector<rtl::OUString>& cellColumnContent); - virtual std::vector<rtl::OUString>& getRowHeaderName(); - virtual ::com::sun::star::util::Color getLineColor(); - virtual void setLineColor(::com::sun::star::util::Color _rColor); - virtual ::com::sun::star::util::Color getHeaderBackgroundColor(); - virtual void setHeaderBackgroundColor(::com::sun::star::util::Color _rColor); - virtual ::com::sun::star::util::Color getTextColor(); - virtual void setTextColor(::com::sun::star::util::Color _rColor); - virtual ::com::sun::star::util::Color getOddRowBackgroundColor(); - virtual void setOddRowBackgroundColor(::com::sun::star::util::Color _rColor); - virtual ::com::sun::star::util::Color getEvenRowBackgroundColor(); - virtual void setEvenRowBackgroundColor(::com::sun::star::util::Color _rColor); - virtual ::com::sun::star::style::VerticalAlignment getVerticalAlign(); - virtual void setVerticalAlign(::com::sun::star::style::VerticalAlignment _rAlign); - virtual bool hasVerticalScrollbar(); - virtual bool hasHorizontalScrollbar(); -}; - -inline void UnoControlTableModel::SetColumnWidth( ColPos _nColumn, TableMetrics _nWidth100thMM ) -{ - getColumnModel( _nColumn )->setWidth( _nWidth100thMM ); -} + virtual TableSize getColumnCount() const; + virtual TableSize getRowCount() const; + virtual bool hasColumnHeaders() const; + virtual bool hasRowHeaders() const; + virtual bool isCellEditable( ColPos col, RowPos row ) const; + virtual PColumnModel getColumnModel( ColPos column ); + virtual PTableRenderer getRenderer() const; + virtual PTableInputHandler getInputHandler() const; + virtual TableMetrics getRowHeight() const; + virtual TableMetrics getColumnHeaderHeight() const; + virtual TableMetrics getRowHeaderWidth() const; + virtual ScrollbarVisibility getVerticalScrollbarVisibility() const; + virtual ScrollbarVisibility getHorizontalScrollbarVisibility() const; + virtual void addTableModelListener( const PTableModelListener& i_listener ); + virtual void removeTableModelListener( const PTableModelListener& i_listener ); + virtual void getCellContent( ColPos const i_col, RowPos const i_row, ::com::sun::star::uno::Any& o_cellContent ); + virtual void getCellToolTip( ColPos const i_col, RowPos const i_row, ::com::sun::star::uno::Any & o_cellToolTip ); + virtual ::com::sun::star::uno::Any getRowHeading( RowPos const i_rowPos ) const; + virtual ::boost::optional< ::Color > getLineColor() const; + virtual ::boost::optional< ::Color > getHeaderBackgroundColor() const; + virtual ::boost::optional< ::Color > getHeaderTextColor() const; + virtual ::boost::optional< ::Color > getTextColor() const; + virtual ::boost::optional< ::Color > getTextLineColor() const; + virtual ::boost::optional< ::std::vector< ::Color > > + getRowBackgroundColors() const; + virtual ::com::sun::star::style::VerticalAlignment + getVerticalAlign() const; + virtual ITableDataSort* getSortAdapter(); + + // ITableDataSort overridables + virtual void sortByColumn( ColPos const i_column, ColumnSortDirection const i_sortDirection ); + virtual ColumnSort getCurrentSortOrder() const; + + // column write access + void appendColumn( ::com::sun::star::uno::Reference< ::com::sun::star::awt::grid::XGridColumn > const & i_column ); + void insertColumn( ColPos const i_position, ::com::sun::star::uno::Reference< ::com::sun::star::awt::grid::XGridColumn > const & i_column ); + void removeColumn( ColPos const i_position ); + void removeAllColumns(); + + // other operations + void setVerticalScrollbarVisibility( ScrollbarVisibility const i_visibility ) const; + void setHorizontalScrollbarVisibility( ScrollbarVisibility const i_visibility ) const; + + void setDataModel( ::com::sun::star::uno::Reference< ::com::sun::star::awt::grid::XGridDataModel > const & i_gridDataModel ); + bool hasDataModel() const; + ::com::sun::star::uno::Reference< ::com::sun::star::awt::grid::XGridDataModel > + getDataModel() const; + void setColumnModel( ::com::sun::star::uno::Reference< ::com::sun::star::awt::grid::XGridColumnModel > const & i_gridColumnModel ); + bool hasColumnModel() const; + ::com::sun::star::uno::Reference< ::com::sun::star::awt::grid::XGridColumnModel > + getColumnModel() const; + + void setRowHeaders(bool _bRowHeaders); + void setColumnHeaders(bool _bColumnHeaders); + + void setRowHeight( TableMetrics _nHeight ); + void setRowHeaderWidth( TableMetrics _nWidth ); + void setColumnHeaderHeight( TableMetrics _nHeight ); + + void setLineColor( ::com::sun::star::uno::Any const & i_color ); + void setHeaderBackgroundColor( ::com::sun::star::uno::Any const & i_color ); + void setHeaderTextColor( ::com::sun::star::uno::Any const & i_color ); + void setTextColor( ::com::sun::star::uno::Any const & i_color ); + void setTextLineColor( ::com::sun::star::uno::Any const & i_color ); + void setRowBackgroundColors( ::com::sun::star::uno::Any const & i_APIValue ); + + void setVerticalAlign(::com::sun::star::style::VerticalAlignment _rAlign); + + // multiplexing of XGridDataListener events + void notifyRowsInserted( ::com::sun::star::awt::grid::GridDataEvent const & i_event ) const; + void notifyRowsRemoved( ::com::sun::star::awt::grid::GridDataEvent const & i_event ) const; + void notifyDataChanged( ::com::sun::star::awt::grid::GridDataEvent const & i_event ) const; + + /// retrieves the index of a column within the model + ColPos getColumnPos( UnoGridColumnFacade const & i_column ) const; + + /// notifies a change in a column belonging to the model + void notifyColumnChange( ColPos const i_columnPos, ColumnAttributeGroup const i_attributeGroup ) const; + + /** notifies a change in all data represented by the model. To be used if you cannot specified the changed data + in more detail. + */ + void notifyAllDataChanged() const; + +#ifdef DBG_UTIL + const char* checkInvariants() const; +#endif -inline TableMetrics UnoControlTableModel::GetColumnWidth( ColPos _nColumn ) -{ - return getColumnModel( _nColumn )->getWidth(); -} - #endif // _UNOCONTROL_TABLEMODEL_HXX_ + private: + void impl_notifyTableMetricsChanged() const; + }; + +// ..................................................................................................................... +} } // svt::table +// ..................................................................................................................... + +#endif // _UNOCONTROL_TABLEMODEL_HXX_ |