| /************************************************************** |
| * |
| * 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 _SVTOOLS_ACCESSIBLETABLE_HXX |
| #define _SVTOOLS_ACCESSIBLETABLE_HXX |
| |
| #include <vcl/window.hxx> |
| #include <unotools/accessiblestatesethelper.hxx> |
| #include <com/sun/star/lang/IndexOutOfBoundsException.hpp> |
| |
| // ============================================================================ |
| |
| namespace svt{ namespace table |
| { |
| |
| typedef sal_Int32 RowPos; |
| |
| // ============================================================================ |
| |
| enum AccessibleTableType |
| { |
| /** Child index of the column header bar (first row). */ |
| TCINDEX_COLUMNHEADERBAR = 0, |
| /** Child index of the row header bar ("handle column"). */ |
| TCINDEX_ROWHEADERBAR = 1, |
| /** Child index of the data table. */ |
| TCINDEX_TABLE = 2 |
| }; |
| |
| enum AccessibleTableControlObjType |
| { |
| TCTYPE_GRIDCONTROL, /// The GridControl itself. |
| TCTYPE_TABLE, /// The data table. |
| TCTYPE_ROWHEADERBAR, /// The row header bar. |
| TCTYPE_COLUMNHEADERBAR, /// The horizontal column header bar. |
| TCTYPE_TABLECELL, /// A cell of the data table. |
| TCTYPE_ROWHEADERCELL, /// A cell of the row header bar. |
| TCTYPE_COLUMNHEADERCELL, /// A cell of the column header bar. |
| }; |
| |
| // ============================================================================ |
| |
| #define XACC ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > |
| |
| /** This abstract class provides methods to implement an accessible table object. |
| */ |
| class IAccessibleTable |
| { |
| public: |
| /** @return The position of the current row. */ |
| virtual sal_Int32 GetCurrentRow() const = 0; |
| /** @return The position of the current column. */ |
| virtual sal_Int32 GetCurrentColumn() const = 0; |
| /** Creates and returns the accessible object of the whole GridControl. */ |
| virtual XACC CreateAccessible()= 0; |
| virtual XACC CreateAccessibleControl( sal_Int32 _nIndex )= 0; |
| virtual ::rtl::OUString GetAccessibleObjectName(AccessibleTableControlObjType eObjType, sal_Int32 _nRow, sal_Int32 _nCol) const= 0; |
| virtual sal_Bool GoToCell( sal_Int32 _nColumnPos, sal_Int32 _nRow )= 0; |
| virtual sal_Bool HasColHeader() = 0; |
| virtual sal_Bool HasRowHeader() = 0; |
| |
| /** return the description of the specified object. |
| @param eObjType |
| The type to ask for |
| @param _nPosition |
| The position of a tablecell (index position), header bar colum/row cell |
| @return |
| The description of the specified object. |
| */ |
| virtual ::rtl::OUString GetAccessibleObjectDescription(AccessibleTableControlObjType eObjType, sal_Int32 _nPosition = -1) const= 0; |
| |
| /** Fills the StateSet with all states (except DEFUNC and SHOWING, done by |
| the accessible object), depending on the specified object type. */ |
| virtual void FillAccessibleStateSet( ::utl::AccessibleStateSetHelper& rStateSet, |
| AccessibleTableControlObjType eObjType ) const= 0; |
| |
| // Window |
| virtual Rectangle GetWindowExtentsRelative( Window *pRelativeWindow ) const = 0; |
| virtual void GrabFocus()= 0; |
| virtual XACC GetAccessible( sal_Bool bCreate = sal_True )= 0; |
| virtual Window* GetAccessibleParentWindow() const= 0; |
| virtual Window* GetWindowInstance()= 0; |
| virtual sal_Int32 GetAccessibleControlCount() const = 0; |
| virtual sal_Bool ConvertPointToControlIndex( sal_Int32& _rnIndex, const Point& _rPoint )= 0; |
| virtual long GetRowCount() const= 0; |
| virtual long GetColumnCount() const= 0; |
| virtual sal_Bool HasRowHeader() const= 0; |
| virtual sal_Bool ConvertPointToCellAddress( sal_Int32& _rnRow, sal_Int32& _rnColPos, const Point& _rPoint )= 0; |
| virtual Rectangle calcHeaderRect( sal_Bool _bIsColumnBar, sal_Bool _bOnScreen = sal_True ) = 0; |
| virtual Rectangle calcHeaderCellRect( sal_Bool _bColHeader, sal_Int32 _nPos ) = 0; |
| virtual Rectangle calcTableRect( sal_Bool _bOnScreen = sal_True ) = 0; |
| virtual Rectangle calcCellRect( sal_Int32 _nRowPos, sal_Int32 _nColPos ) = 0; |
| virtual Rectangle GetFieldCharacterBounds(sal_Int32 _nRow,sal_Int32 _nColumnPos,sal_Int32 nIndex)= 0; |
| virtual sal_Int32 GetFieldIndexAtPoint(sal_Int32 _nRow,sal_Int32 _nColumnPos,const Point& _rPoint)= 0; |
| virtual void FillAccessibleStateSetForCell( ::utl::AccessibleStateSetHelper& _rStateSet, sal_Int32 _nRow, sal_uInt16 _nColumnPos ) const= 0; |
| virtual ::rtl::OUString GetRowDescription( sal_Int32 _nRow ) const = 0; |
| virtual ::rtl::OUString GetRowName(sal_Int32 _nIndex) const = 0; |
| virtual ::rtl::OUString GetColumnDescription( sal_uInt16 _nColumnPos ) const = 0; |
| virtual ::rtl::OUString GetColumnName( sal_Int32 _nIndex ) const = 0; |
| virtual ::com::sun::star::uno::Any GetCellContent( sal_Int32 _nRowPos, sal_Int32 _nColPos) const = 0; |
| virtual ::rtl::OUString GetAccessibleCellText(sal_Int32 _nRowPos, sal_Int32 _nColPos) const = 0; |
| |
| virtual sal_Int32 GetSelectedRowCount() const = 0; |
| virtual sal_Int32 GetSelectedRowIndex( sal_Int32 const i_selectionIndex ) const = 0; |
| virtual bool IsRowSelected( sal_Int32 const i_rowIndex ) const = 0; |
| virtual void SelectRow( sal_Int32 const i_rowIndex, bool const i_select ) = 0; |
| virtual void SelectAllRows( bool const i_select ) = 0; |
| }; |
| |
| // ---------------------------------------------------------------------------- |
| |
| /** interface for an implementation of a table control's Accesible component |
| */ |
| class IAccessibleTableControl |
| { |
| public: |
| /** returns the XAccessible object itself |
| |
| The reference returned here can be used to control the life time of the |
| IAccessibleTableImplementation object. |
| |
| The returned reference is guaranteed to not be <NULL/>. |
| */ |
| virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > |
| getMyself() = 0; |
| |
| /** disposes the accessible implementation, so that it becomes defunc |
| */ |
| virtual void dispose() = 0; |
| |
| /** checks whether the accessible implementation, and its context, are still alive |
| @return <TRUE/>, if the object is not disposed or disposing. |
| */ |
| virtual sal_Bool isAlive() const = 0; |
| |
| /** returns the accessible object for the row or the column header bar |
| */ |
| virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > |
| getTableHeader( ::svt::table::AccessibleTableControlObjType _eObjType ) = 0; |
| |
| /** returns the accessible object for the table representation |
| */ |
| virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > |
| getTable() = 0; |
| |
| /** commits the event at all listeners of the cell |
| @param nEventId |
| the event id |
| @param rNewValue |
| the new value |
| @param rOldValue |
| the old value |
| */ |
| virtual void commitCellEvent( |
| sal_Int16 nEventId, |
| const ::com::sun::star::uno::Any& rNewValue, |
| const ::com::sun::star::uno::Any& rOldValue |
| ) = 0; |
| /** commits the event at all listeners of the table |
| @param nEventId |
| the event id |
| @param rNewValue |
| the new value |
| @param rOldValue |
| the old value |
| */ |
| virtual void commitTableEvent( |
| sal_Int16 nEventId, |
| const ::com::sun::star::uno::Any& rNewValue, |
| const ::com::sun::star::uno::Any& rOldValue |
| ) = 0; |
| |
| ///** Commits an event to all listeners. */ |
| virtual void commitEvent( |
| sal_Int16 nEventId, |
| const ::com::sun::star::uno::Any& rNewValue, |
| const ::com::sun::star::uno::Any& rOldValue |
| ) = 0; |
| }; |
| |
| // ---------------------------------------------------------------------------- |
| |
| // ============================================================================ |
| } // namespace table |
| } // namespace svt |
| |
| // ============================================================================ |
| |
| #endif // _SVTOOLS_ACCESSIBLETABLE_HXX |
| |