blob: 80291752d8db05a5f36804a505efa99e24a76e17 [file] [log] [blame]
/**************************************************************
*
* 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_SIMPTABL_HXX
#define _SVX_SIMPTABL_HXX
#ifndef _MOREBTN_HXX //autogen
#include <vcl/morebtn.hxx>
#endif
#ifndef _COMBOBOX_HXX //autogen
#include <vcl/combobox.hxx>
#endif
#ifndef _GROUP_HXX //autogen
#include <vcl/group.hxx>
#endif
#include <svtools/headbar.hxx>
#include <svtools/svtabbx.hxx>
#include <vcl/lstbox.hxx>
#include "svx/svxdllapi.h"
class SvxSimpleTable;
class SvxSimpTblContainer : public Control
{
private:
SvxSimpleTable* m_pTable;
protected:
virtual long PreNotify( NotifyEvent& rNEvt );
public:
SvxSimpTblContainer( Window* pParent, WinBits nWinStyle = 0 );
SvxSimpTblContainer( Window* pParent, const ResId& rResId );
inline void SetTable( SvxSimpleTable* _pTable ) { m_pTable = _pTable; }
};
class SVX_DLLPUBLIC SvxSimpleTable : public SvHeaderTabListBox
{
using Window::SetPosSizePixel;
private:
Link aHeaderBarClickLink;
Link aHeaderBarDblClickLink;
Link aCommandLink;
CommandEvent aCEvt;
SvxSimpTblContainer aPrivContainer;
HeaderBar aHeaderBar;
long nOldPos;
sal_uInt16 nHeaderItemId;
sal_Bool bResizeFlag;
sal_Bool bPaintFlag;
sal_Bool bSortDirection;
sal_uInt16 nSortCol;
Window* pMyParentWin;
DECL_LINK( StartDragHdl, HeaderBar* );
DECL_LINK( DragHdl, HeaderBar* );
DECL_LINK( EndDragHdl, HeaderBar* );
DECL_LINK( HeaderBarClick, HeaderBar* );
DECL_LINK( HeaderBarDblClick, HeaderBar* );
DECL_LINK( CompareHdl, SvSortData* );
protected:
virtual void NotifyScrolled();
virtual void SetTabs();
virtual void Paint( const Rectangle& rRect );
virtual void UpdateViewSize();
virtual void HBarClick();
virtual void HBarDblClick();
virtual void HBarStartDrag();
virtual void HBarDrag();
virtual void HBarEndDrag();
virtual void Command( const CommandEvent& rCEvt );
virtual StringCompare ColCompare(SvLBoxEntry*,SvLBoxEntry*);
HeaderBar* GetTheHeaderBar(){return &aHeaderBar;}
public:
SvxSimpleTable( Window* pParent,WinBits nBits =WB_BORDER );
SvxSimpleTable( Window* pParent,const ResId& );
~SvxSimpleTable();
void InsertHeaderEntry(const XubString& rText,
sal_uInt16 nCol=HEADERBAR_APPEND,
HeaderBarItemBits nBits = HIB_STDSTYLE);
void SetTabs( long* pTabs, MapUnit = MAP_APPFONT );
void ClearAll();
void ClearHeader();
// to be removed all calls of the related methods are redirected to *Table() methods
using Window::Show;
using Window::Hide;
using Window::Enable;
using Window::Disable;
using Window::ToTop;
void Show();
void Hide();
void Enable();
void Disable();
void ToTop();
// remove until this line
void ShowTable();
void HideTable();
sal_Bool IsVisible() const;
void EnableTable();
void DisableTable();
sal_Bool IsEnabled() const;
void TableToTop();
void SetPosPixel( const Point& rNewPos );
Point GetPosPixel() const ;
virtual void SetPosSizePixel( const Point& rNewPos, Size& rNewSize );
void SetPosSize( const Point& rNewPos, const Size& rNewSize );
void SetSizePixel(const Size& rNewSize );
void SetOutputSizePixel(const Size& rNewSize );
Size GetSizePixel() const;
Size GetOutputSizePixel() const;
sal_uInt16 GetSelectedCol();
void SortByCol(sal_uInt16,sal_Bool bDir=sal_True);
sal_Bool GetSortDirection(){ return bSortDirection;}
sal_uInt16 GetSortedCol(){ return nSortCol;}
SvLBoxItem* GetEntryAtPos( SvLBoxEntry* pEntry, sal_uInt16 nPos ) const;
CommandEvent GetCommandEvent()const;
inline sal_Bool IsFocusOnCellEnabled() const { return IsCellFocusEnabled(); }
void SetCommandHdl( const Link& rLink ) { aCommandLink = rLink; }
const Link& GetCommandHdl() const { return aCommandLink; }
void SetHeaderBarClickHdl( const Link& rLink ) { aHeaderBarClickLink = rLink; }
const Link& GetHeaderBarClickHdl() const { return aHeaderBarClickLink; }
void SetHeaderBarDblClickHdl( const Link& rLink ) { aHeaderBarDblClickLink = rLink; }
const Link& GetHeaderBarDblClickHdl() const { return aHeaderBarDblClickLink; }
void SetHeaderBarHelpId(const rtl::OString& rHelpId) {aHeaderBar.SetHelpId(rHelpId);}
};
#endif // _SVX_SIMPTABL_HXX