| /************************************************************** |
| * |
| * 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 _SVTABBX_HXX |
| #define _SVTABBX_HXX |
| |
| #include "svtools/svtdllapi.h" |
| #include <svtools/svtreebx.hxx> |
| #include <svtools/accessibletableprovider.hxx> |
| |
| #ifndef INCLUDED_VECTOR |
| #include <vector> |
| #define INCLUDED_VECTOR |
| #endif |
| |
| enum SvTabJustify |
| { |
| AdjustRight = SV_LBOXTAB_ADJUST_RIGHT, |
| AdjustLeft = SV_LBOXTAB_ADJUST_LEFT, |
| AdjustCenter = SV_LBOXTAB_ADJUST_CENTER, |
| AdjustNumeric = SV_LBOXTAB_ADJUST_NUMERIC |
| }; |
| |
| struct TabListBoxEventData |
| { |
| SvLBoxEntry* m_pEntry; |
| sal_uInt16 m_nColumn; |
| String m_sOldText; |
| |
| TabListBoxEventData( SvLBoxEntry* pEntry, sal_uInt16 nColumn, const String& rOldText ) : |
| m_pEntry( pEntry ), m_nColumn( nColumn ), m_sOldText( rOldText ) {} |
| }; |
| |
| class SVT_DLLPUBLIC SvTabListBox : public SvTreeListBox |
| { |
| private: |
| SvLBoxTab* pTabList; |
| sal_uInt16 nTabCount; |
| XubString aCurEntry; |
| sal_uLong nDummy1; |
| sal_uLong nDummy2; |
| |
| protected: |
| SvLBoxEntry* pViewParent; |
| |
| static const xub_Unicode* GetToken( const xub_Unicode* pPtr, sal_uInt16& rLen ); |
| |
| virtual void SetTabs(); |
| virtual void InitEntry( SvLBoxEntry*, const XubString&, const Image&, const Image&, SvLBoxButtonKind ); |
| |
| String GetTabEntryText( sal_uLong nPos, sal_uInt16 nCol ) const; |
| SvLBoxEntry* GetEntryOnPos( sal_uLong _nEntryPos ) const; |
| SvLBoxEntry* GetChildOnPos( SvLBoxEntry* _pParent, sal_uLong _nEntryPos, sal_uLong& _rPos ) const; |
| |
| public: |
| SvTabListBox( Window* pParent, WinBits = WB_BORDER ); |
| SvTabListBox( Window* pParent, const ResId& ); |
| ~SvTabListBox(); |
| void SetTabs( long* pTabs, MapUnit = MAP_APPFONT ); |
| sal_uInt16 TabCount() const { return (sal_uInt16)nTabCount; } |
| using SvTreeListBox::GetTab; |
| long GetTab( sal_uInt16 nTab ) const; |
| void SetTab( sal_uInt16 nTab, long nValue, MapUnit = MAP_APPFONT ); |
| long GetLogicTab( sal_uInt16 nTab ); |
| |
| virtual SvLBoxEntry* InsertEntry( const XubString& rText, SvLBoxEntry* pParent = 0, |
| sal_Bool bChildsOnDemand = sal_False, |
| sal_uLong nPos=LIST_APPEND, void* pUserData = 0, |
| SvLBoxButtonKind eButtonKind = SvLBoxButtonKind_enabledCheckbox ); |
| |
| virtual SvLBoxEntry* InsertEntry( const XubString& rText, |
| const Image& rExpandedEntryBmp, |
| const Image& rCollapsedEntryBmp, |
| SvLBoxEntry* pParent = 0, |
| sal_Bool bChildsOnDemand = sal_False, |
| sal_uLong nPos = LIST_APPEND, void* pUserData = 0, |
| SvLBoxButtonKind eButtonKind = SvLBoxButtonKind_enabledCheckbox ); |
| |
| virtual SvLBoxEntry* InsertEntryToColumn( const XubString&, sal_uLong nPos = LIST_APPEND, |
| sal_uInt16 nCol = 0xffff, void* pUserData = NULL ); |
| virtual SvLBoxEntry* InsertEntryToColumn( const XubString&, SvLBoxEntry* pParent, |
| sal_uLong nPos, sal_uInt16 nCol, void* pUserData = NULL ); |
| virtual SvLBoxEntry* InsertEntryToColumn( const XubString&, const Image& rExpandedEntryBmp, |
| const Image& rCollapsedEntryBmp, SvLBoxEntry* pParent = NULL, |
| sal_uLong nPos = LIST_APPEND, sal_uInt16 nCol = 0xffff, void* pUserData = NULL ); |
| |
| virtual String GetEntryText( SvLBoxEntry* pEntry ) const; |
| String GetEntryText( SvLBoxEntry*, sal_uInt16 nCol ) const; |
| String GetEntryText( sal_uLong nPos, sal_uInt16 nCol = 0xffff ) const; |
| using SvTreeListBox::SetEntryText; |
| void SetEntryText( const XubString&, sal_uLong, sal_uInt16 nCol=0xffff ); |
| void SetEntryText(const XubString&,SvLBoxEntry*,sal_uInt16 nCol=0xffff); |
| String GetCellText( sal_uLong nPos, sal_uInt16 nCol ) const; |
| sal_uLong GetEntryPos( const XubString&, sal_uInt16 nCol = 0xffff ); |
| sal_uLong GetEntryPos( const SvLBoxEntry* pEntry ) const; |
| |
| virtual void Resize(); |
| void SetTabJustify( sal_uInt16 nTab, SvTabJustify ); |
| SvTabJustify GetTabJustify( sal_uInt16 nTab ) const; |
| }; |
| |
| inline long SvTabListBox::GetTab( sal_uInt16 nTab ) const |
| { |
| DBG_ASSERT( nTab < nTabCount, "GetTabPos:Invalid Tab" ); |
| return pTabList[nTab].GetPos(); |
| } |
| |
| // class SvHeaderTabListBox --------------------------------------------------- |
| |
| class HeaderBar; |
| namespace svt { |
| class AccessibleTabListBox; |
| class IAccessibleTabListBox; |
| struct SvHeaderTabListBoxImpl; |
| } |
| |
| class SVT_DLLPUBLIC SvHeaderTabListBox : public SvTabListBox, public svt::IAccessibleTableProvider |
| { |
| private: |
| typedef ::std::vector< ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > > AccessibleChildren; |
| |
| sal_Bool m_bFirstPaint; |
| ::svt::SvHeaderTabListBoxImpl* m_pImpl; |
| ::svt::IAccessibleTabListBox* m_pAccessible; |
| AccessibleChildren m_aAccessibleChildren; |
| |
| DECL_DLLPRIVATE_LINK( ScrollHdl_Impl, SvTabListBox* ); |
| DECL_DLLPRIVATE_LINK( CreateAccessibleHdl_Impl, HeaderBar* ); |
| |
| void RecalculateAccessibleChildren(); |
| |
| public: |
| SvHeaderTabListBox( Window* pParent, WinBits nBits ); |
| SvHeaderTabListBox( Window* pParent, const ResId& ); |
| ~SvHeaderTabListBox(); |
| |
| virtual void Paint( const Rectangle& ); |
| |
| void InitHeaderBar( HeaderBar* pHeaderBar ); |
| sal_Bool IsItemChecked( SvLBoxEntry* pEntry, sal_uInt16 nCol ) const; |
| |
| virtual SvLBoxEntry* InsertEntryToColumn( const XubString&, sal_uLong nPos = LIST_APPEND, |
| sal_uInt16 nCol = 0xffff, void* pUserData = NULL ); |
| virtual SvLBoxEntry* InsertEntryToColumn( const XubString&, SvLBoxEntry* pParent, |
| sal_uLong nPos, sal_uInt16 nCol, void* pUserData = NULL ); |
| virtual SvLBoxEntry* InsertEntryToColumn( const XubString&, const Image& rExpandedEntryBmp, |
| const Image& rCollapsedEntryBmp, SvLBoxEntry* pParent = NULL, |
| sal_uLong nPos = LIST_APPEND, sal_uInt16 nCol = 0xffff, void* pUserData = NULL ); |
| virtual sal_uLong Insert( SvLBoxEntry* pEnt,SvLBoxEntry* pPar,sal_uLong nPos=LIST_APPEND); |
| virtual sal_uLong Insert( SvLBoxEntry* pEntry, sal_uLong nRootPos = LIST_APPEND ); |
| void RemoveEntry( SvLBoxEntry* _pEntry ); |
| void Clear(); |
| |
| // Accessible ------------------------------------------------------------- |
| |
| inline void DisableTransientChildren() { SetChildrenNotTransient(); } |
| inline sal_Bool IsTransientChildrenDisabled() const { return !AreChildrenTransient(); } |
| |
| sal_Bool IsCellCheckBox( long _nRow, sal_uInt16 _nColumn, TriState& _rState ); |
| |
| /** @return The count of the rows. */ |
| virtual long GetRowCount() const; |
| /** @return The count of the columns. */ |
| virtual sal_uInt16 GetColumnCount() const; |
| |
| /** @return The position of the current row. */ |
| virtual sal_Int32 GetCurrRow() const; |
| /** @return The position of the current column. */ |
| virtual sal_uInt16 GetCurrColumn() const; |
| |
| /** @return The description of a row. |
| @param _nRow The row which description is in demand. */ |
| virtual ::rtl::OUString GetRowDescription( sal_Int32 _nRow ) const; |
| /** @return The description of a column. |
| @param _nColumn The column which description is in demand. */ |
| virtual ::rtl::OUString GetColumnDescription( sal_uInt16 _nColumn ) const; |
| |
| /** @return <TRUE/>, if the object has a row header. */ |
| virtual sal_Bool HasRowHeader() const; //GetColumnId |
| /** @return <TRUE/>, if the object can focus a cell. */ |
| virtual sal_Bool IsCellFocusable() const; |
| virtual sal_Bool GoToCell( sal_Int32 _nRow, sal_uInt16 _nColumn ); |
| |
| virtual void SetNoSelection(); |
| using SvListView::SelectAll; |
| virtual void SelectAll(); |
| virtual void SelectAll( sal_Bool bSelect, sal_Bool bPaint = sal_True ); |
| virtual void SelectRow( long _nRow, sal_Bool _bSelect = sal_True, sal_Bool bExpand = sal_True ); |
| virtual void SelectColumn( sal_uInt16 _nColumn, sal_Bool _bSelect = sal_True ); |
| virtual sal_Int32 GetSelectedRowCount() const; |
| virtual sal_Int32 GetSelectedColumnCount() const; |
| /** @return <TRUE/>, if the row is selected. */ |
| virtual bool IsRowSelected( long _nRow ) const; |
| virtual sal_Bool IsColumnSelected( long _nColumn ) const; |
| virtual void GetAllSelectedRows( ::com::sun::star::uno::Sequence< sal_Int32 >& _rRows ) const; |
| virtual void GetAllSelectedColumns( ::com::sun::star::uno::Sequence< sal_Int32 >& _rColumns ) const; |
| |
| /** @return <TRUE/>, if the cell is visible. */ |
| virtual sal_Bool IsCellVisible( sal_Int32 _nRow, sal_uInt16 _nColumn ) const; |
| virtual String GetAccessibleCellText( long _nRow, sal_uInt16 _nColumnPos ) const; |
| |
| virtual Rectangle calcHeaderRect( sal_Bool _bIsColumnBar, sal_Bool _bOnScreen = sal_True ); |
| virtual Rectangle calcTableRect( sal_Bool _bOnScreen = sal_True ); |
| virtual Rectangle GetFieldRectPixelAbs( sal_Int32 _nRow, sal_uInt16 _nColumn, sal_Bool _bIsHeader, sal_Bool _bOnScreen = sal_True ); |
| |
| virtual XACC CreateAccessibleCell( sal_Int32 _nRow, sal_uInt16 _nColumn ); |
| virtual XACC CreateAccessibleRowHeader( sal_Int32 _nRow ); |
| virtual XACC CreateAccessibleColumnHeader( sal_uInt16 _nColumnPos ); |
| |
| virtual sal_Int32 GetAccessibleControlCount() const; |
| virtual XACC CreateAccessibleControl( sal_Int32 _nIndex ); |
| virtual sal_Bool ConvertPointToControlIndex( sal_Int32& _rnIndex, const Point& _rPoint ); |
| |
| virtual sal_Bool ConvertPointToCellAddress( sal_Int32& _rnRow, sal_uInt16& _rnColPos, const Point& _rPoint ); |
| virtual sal_Bool ConvertPointToRowHeader( sal_Int32& _rnRow, const Point& _rPoint ); |
| virtual sal_Bool ConvertPointToColumnHeader( sal_uInt16& _rnColPos, const Point& _rPoint ); |
| |
| virtual ::rtl::OUString GetAccessibleObjectName( ::svt::AccessibleBrowseBoxObjType _eType, sal_Int32 _nPos = -1 ) const; |
| virtual ::rtl::OUString GetAccessibleObjectDescription( ::svt::AccessibleBrowseBoxObjType _eType, sal_Int32 _nPos = -1 ) const; |
| virtual Window* GetWindowInstance(); |
| |
| using SvTreeListBox::FillAccessibleStateSet; |
| virtual void FillAccessibleStateSet( ::utl::AccessibleStateSetHelper& _rStateSet, ::svt::AccessibleBrowseBoxObjType _eType ) const; |
| virtual void FillAccessibleStateSetForCell( ::utl::AccessibleStateSetHelper& _rStateSet, sal_Int32 _nRow, sal_uInt16 _nColumn ) const; |
| virtual void GrabTableFocus(); |
| |
| // OutputDevice |
| virtual sal_Bool GetGlyphBoundRects( const Point& rOrigin, const String& rStr, int nIndex, int nLen, int nBase, MetricVector& rVector ); |
| |
| // Window |
| virtual Rectangle GetWindowExtentsRelative( Window *pRelativeWindow ) const; |
| virtual void GrabFocus(); |
| virtual XACC GetAccessible( sal_Bool bCreate = sal_True ); |
| virtual Window* GetAccessibleParentWindow() const; |
| |
| /** Creates and returns the accessible object of the whole BrowseBox. */ |
| virtual XACC CreateAccessible(); |
| |
| virtual Rectangle GetFieldCharacterBounds(sal_Int32 _nRow,sal_Int32 _nColumnPos,sal_Int32 nIndex); |
| virtual sal_Int32 GetFieldIndexAtPoint(sal_Int32 _nRow,sal_Int32 _nColumnPos,const Point& _rPoint); |
| }; |
| |
| #endif // #ifndef _SVTABBX_HXX |
| |
| |