office-gobmx/svtools/source/uno/unocontroltablemodel.hxx
2009-11-03 14:01:51 +00:00

153 lines
6.8 KiB
C++

/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2008 by Sun Microsystems, Inc.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: unocontroltablemodel.hxx,v $
* $Revision: 1.32 $
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
#ifndef _UNOCONTROL_TABLEMODEL_HXX_
#define _UNOCONTROL_TABLEMODEL_HXX_
#include <svtools/table/tablemodel.hxx>
#include <svtools/table/tablecontrol.hxx>
#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 <toolkit/helper/listenermultiplexer.hxx>
using namespace ::svt::table;
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::awt::grid;
class UnoControlTableColumn : public IColumnModel
{
private:
ColumnID m_nID;
String m_sName;
bool m_bIsResizable;
TableMetrics m_nWidth;
TableMetrics m_nMinWidth;
TableMetrics m_nMaxWidth;
public:
UnoControlTableColumn(Reference<XGridColumn>);
// 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 );
};
struct UnoControlTableModel_Impl;
class UnoControlTableModel : public ITableModel
{
private:
UnoControlTableModel_Impl* m_pImpl;
public:
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 );
/// 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 );
// TODO: setters and getters for ID, Name, Resizable, MinWidth, MaxWidth
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 setCellContent(std::vector<std::vector<rtl::OUString> > cellContent);
virtual std::vector<std::vector<rtl::OUString> >& getCellContent();
virtual void setRowHeaderName(std::vector<rtl::OUString> cellColumnContent);
virtual std::vector<rtl::OUString>& getRowHeaderName();
};
inline void UnoControlTableModel::SetColumnWidth( ColPos _nColumn, TableMetrics _nWidth100thMM )
{
getColumnModel( _nColumn )->setWidth( _nWidth100thMM );
}
inline TableMetrics UnoControlTableModel::GetColumnWidth( ColPos _nColumn )
{
return getColumnModel( _nColumn )->getWidth();
}
#endif // _UNOCONTROL_TABLEMODEL_HXX_