13334a7e6SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
33334a7e6SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
43334a7e6SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
53334a7e6SAndrew Rist  * distributed with this work for additional information
63334a7e6SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
73334a7e6SAndrew Rist  * to you under the Apache License, Version 2.0 (the
83334a7e6SAndrew Rist  * "License"); you may not use this file except in compliance
93334a7e6SAndrew Rist  * with the License.  You may obtain a copy of the License at
103334a7e6SAndrew Rist  *
113334a7e6SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
123334a7e6SAndrew Rist  *
133334a7e6SAndrew Rist  * Unless required by applicable law or agreed to in writing,
143334a7e6SAndrew Rist  * software distributed under the License is distributed on an
153334a7e6SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
163334a7e6SAndrew Rist  * KIND, either express or implied.  See the License for the
173334a7e6SAndrew Rist  * specific language governing permissions and limitations
183334a7e6SAndrew Rist  * under the License.
193334a7e6SAndrew Rist  *
203334a7e6SAndrew Rist  *************************************************************/
213334a7e6SAndrew Rist 
223334a7e6SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef _SVX_ACCESSIBILITY_ACCESSIBLE_TABLE_SHAPE_HXX
25cdf0e10cSrcweir #define _SVX_ACCESSIBILITY_ACCESSIBLE_TABLE_SHAPE_HXX
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <com/sun/star/table/XTable.hpp>
28cdf0e10cSrcweir #include <com/sun/star/accessibility/XAccessibleTable.hpp>
29cdf0e10cSrcweir #include <com/sun/star/accessibility/XAccessibleSelection.hpp>
30cdf0e10cSrcweir #include <com/sun/star/util/XModifyListener.hpp>
31cdf0e10cSrcweir 
32cdf0e10cSrcweir #include <rtl/ref.hxx>
33cdf0e10cSrcweir 
34cdf0e10cSrcweir #include <cppuhelper/implbase2.hxx>
35cdf0e10cSrcweir 
36cdf0e10cSrcweir #include <svx/AccessibleShape.hxx>
379b8096d0SSteve Yin #include <com/sun/star/view/XSelectionChangeListener.hpp>
389b8096d0SSteve Yin #include <com/sun/star/accessibility/XAccessibleTableSelection.hpp>
399b8096d0SSteve Yin #include <cppuhelper/compbase5.hxx>
40cdf0e10cSrcweir 
41cdf0e10cSrcweir #include <boost/noncopyable.hpp>
42cdf0e10cSrcweir 
43cdf0e10cSrcweir namespace sdr { namespace table {
44cdf0e10cSrcweir 	class SvxTableController;
45cdf0e10cSrcweir } }
46cdf0e10cSrcweir 
47cdf0e10cSrcweir namespace accessibility
48cdf0e10cSrcweir {
49cdf0e10cSrcweir 	class AccessibleTableShapeImpl;
509b8096d0SSteve Yin 	class AccessibleCell;
51cdf0e10cSrcweir 
529b8096d0SSteve Yin 	/*typedef ::cppu::ImplInheritanceHelper2<	AccessibleShape,
53cdf0e10cSrcweir 											::com::sun::star::accessibility::XAccessibleSelection,
54cdf0e10cSrcweir 											::com::sun::star::accessibility::XAccessibleTable
559b8096d0SSteve Yin 										  >	AccessibleTableShape_Base;*/
569b8096d0SSteve Yin 	typedef ::cppu::ImplInheritanceHelper2<	AccessibleShape,
579b8096d0SSteve Yin 											::com::sun::star::accessibility::XAccessibleTable,
589b8096d0SSteve Yin 											::com::sun::star::view::XSelectionChangeListener
59cdf0e10cSrcweir 										  >	AccessibleTableShape_Base;
60cdf0e10cSrcweir /**	@descr
61cdf0e10cSrcweir */
629b8096d0SSteve Yin class AccessibleTableShape : boost::noncopyable, public AccessibleTableShape_Base, public ::com::sun::star::accessibility::XAccessibleTableSelection
63cdf0e10cSrcweir {
64cdf0e10cSrcweir public:
65cdf0e10cSrcweir 	AccessibleTableShape( const AccessibleShapeInfo& rShapeInfo, const AccessibleShapeTreeInfo& rShapeTreeInfo );
66cdf0e10cSrcweir 	virtual ~AccessibleTableShape( );
67cdf0e10cSrcweir 
68cdf0e10cSrcweir     virtual void Init (void);
69cdf0e10cSrcweir 
70cdf0e10cSrcweir 	// XInterface
71cdf0e10cSrcweir     virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType ) throw (::com::sun::star::uno::RuntimeException);
72cdf0e10cSrcweir     virtual void SAL_CALL acquire(  ) throw ();
73cdf0e10cSrcweir     virtual void SAL_CALL release(  ) throw ();
74cdf0e10cSrcweir 
75cdf0e10cSrcweir 	// XAccessible
76cdf0e10cSrcweir     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext> SAL_CALL getAccessibleContext( ) throw(::com::sun::star::uno::RuntimeException);
77cdf0e10cSrcweir 
78cdf0e10cSrcweir 	// XAccessibleContext
79cdf0e10cSrcweir     virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) throw(::com::sun::star::uno::RuntimeException);
80cdf0e10cSrcweir     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw(::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
81cdf0e10cSrcweir 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet(  ) throw (::com::sun::star::uno::RuntimeException);
82cdf0e10cSrcweir 	virtual sal_Int16 SAL_CALL getAccessibleRole (void) throw (::com::sun::star::uno::RuntimeException);
83cdf0e10cSrcweir 
84cdf0e10cSrcweir 	// XAccessibleTable
85cdf0e10cSrcweir 	virtual sal_Int32 SAL_CALL getAccessibleRowCount() throw (::com::sun::star::uno::RuntimeException);
86cdf0e10cSrcweir 	virtual sal_Int32 SAL_CALL getAccessibleColumnCount(  ) throw (::com::sun::star::uno::RuntimeException);
87cdf0e10cSrcweir 	virtual ::rtl::OUString SAL_CALL getAccessibleRowDescription( sal_Int32 nRow ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
88cdf0e10cSrcweir 	virtual ::rtl::OUString SAL_CALL getAccessibleColumnDescription( sal_Int32 nColumn ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
89cdf0e10cSrcweir 	virtual sal_Int32 SAL_CALL getAccessibleRowExtentAt( sal_Int32 nRow, sal_Int32 nColumn ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
90cdf0e10cSrcweir 	virtual sal_Int32 SAL_CALL getAccessibleColumnExtentAt( sal_Int32 nRow, sal_Int32 nColumn ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
91cdf0e10cSrcweir 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleTable > SAL_CALL getAccessibleRowHeaders(  ) throw (::com::sun::star::uno::RuntimeException);
92cdf0e10cSrcweir 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleTable > SAL_CALL getAccessibleColumnHeaders(  ) throw (::com::sun::star::uno::RuntimeException);
93cdf0e10cSrcweir 	virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL getSelectedAccessibleRows(  ) throw (::com::sun::star::uno::RuntimeException);
94cdf0e10cSrcweir 	virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL getSelectedAccessibleColumns(  ) throw (::com::sun::star::uno::RuntimeException);
95cdf0e10cSrcweir 	virtual sal_Bool SAL_CALL isAccessibleRowSelected( sal_Int32 nRow ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
96cdf0e10cSrcweir 	virtual sal_Bool SAL_CALL isAccessibleColumnSelected( sal_Int32 nColumn ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
97cdf0e10cSrcweir 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleCellAt( sal_Int32 nRow, sal_Int32 nColumn ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
98cdf0e10cSrcweir 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleCaption(  ) throw (::com::sun::star::uno::RuntimeException);
99cdf0e10cSrcweir 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleSummary(  ) throw (::com::sun::star::uno::RuntimeException);
100cdf0e10cSrcweir 	virtual sal_Bool SAL_CALL isAccessibleSelected( sal_Int32 nRow, sal_Int32 nColumn ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
101cdf0e10cSrcweir 	virtual sal_Int32 SAL_CALL getAccessibleIndex( sal_Int32 nRow, sal_Int32 nColumn ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
102cdf0e10cSrcweir 	virtual sal_Int32 SAL_CALL getAccessibleRow( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
103cdf0e10cSrcweir 	virtual sal_Int32 SAL_CALL getAccessibleColumn( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
104cdf0e10cSrcweir 
105cdf0e10cSrcweir 	// XAccessibleSelection
106cdf0e10cSrcweir     virtual void SAL_CALL selectAccessibleChild( sal_Int32 nChildIndex ) throw ( ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException );
107cdf0e10cSrcweir     virtual sal_Bool SAL_CALL isAccessibleChildSelected( sal_Int32 nChildIndex ) throw ( ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException );
108cdf0e10cSrcweir     virtual void SAL_CALL clearAccessibleSelection(  ) throw ( ::com::sun::star::uno::RuntimeException );
109cdf0e10cSrcweir     virtual void SAL_CALL selectAllAccessibleChildren(  ) throw ( ::com::sun::star::uno::RuntimeException );
110cdf0e10cSrcweir     virtual sal_Int32 SAL_CALL getSelectedAccessibleChildCount(  ) throw ( ::com::sun::star::uno::RuntimeException );
111cdf0e10cSrcweir     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw ( ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
112cdf0e10cSrcweir     virtual void SAL_CALL deselectAccessibleChild( sal_Int32 nChildIndex )  throw ( ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException );
1139b8096d0SSteve Yin 	//=====  XAccessibleTableSelection ============================================
1149b8096d0SSteve Yin 	virtual sal_Bool SAL_CALL selectRow( sal_Int32 row )
1159b8096d0SSteve Yin 		throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException) ;
1169b8096d0SSteve Yin 	virtual sal_Bool SAL_CALL selectColumn( sal_Int32 column )
1179b8096d0SSteve Yin 		throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException) ;
1189b8096d0SSteve Yin 	virtual sal_Bool SAL_CALL unselectRow( sal_Int32 row )
1199b8096d0SSteve Yin 		throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException) ;
1209b8096d0SSteve Yin 	virtual sal_Bool SAL_CALL unselectColumn( sal_Int32 column )
1219b8096d0SSteve Yin 		throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException) ;
122cdf0e10cSrcweir 
123cdf0e10cSrcweir 	// XServiceInfo
124cdf0e10cSrcweir 	virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
125cdf0e10cSrcweir 
126cdf0e10cSrcweir     // XComponent
127cdf0e10cSrcweir     virtual void SAL_CALL disposing( );
128cdf0e10cSrcweir 
1299b8096d0SSteve Yin     // XSelectionChangeListener
1309b8096d0SSteve Yin     virtual void SAL_CALL
1319b8096d0SSteve Yin         disposing (const ::com::sun::star::lang::EventObject& Source)
1329b8096d0SSteve Yin         throw (::com::sun::star::uno::RuntimeException);
1339b8096d0SSteve Yin     virtual void  SAL_CALL
1349b8096d0SSteve Yin         selectionChanged (const ::com::sun::star::lang::EventObject& rEvent)
1359b8096d0SSteve Yin         throw (::com::sun::star::uno::RuntimeException);
1369b8096d0SSteve Yin 	sal_Int32 mnPreviousSelectionCount;
137cdf0e10cSrcweir 	using AccessibleShape::disposing;
1389b8096d0SSteve Yin 	friend class AccessibleTableHeaderShape;
139*0deba7fbSSteve Yin 
1409b8096d0SSteve Yin 	void getColumnAndRow( sal_Int32 nChildIndex, sal_Int32& rnColumn, sal_Int32& rnRow ) throw (::com::sun::star::lang::IndexOutOfBoundsException );
141*0deba7fbSSteve Yin 	// overwrite the SetState & ResetState to do special operation for table cell's internal text
1429b8096d0SSteve Yin 	virtual sal_Bool SetState (sal_Int16 aState);
1439b8096d0SSteve Yin 	virtual sal_Bool ResetState (sal_Int16 aState);
1449b8096d0SSteve Yin 	// The following two methods are used to set state directly on table object, instread of the internal cell or paragraph.
1459b8096d0SSteve Yin 	sal_Bool SetStateDirectly (sal_Int16 aState);
1469b8096d0SSteve Yin 	sal_Bool ResetStateDirectly (sal_Int16 aState);
1479b8096d0SSteve Yin 	// Get the currently active cell which is text editing
1489b8096d0SSteve Yin 	AccessibleCell* GetActiveAccessibleCell();
149cdf0e10cSrcweir 
150cdf0e10cSrcweir protected:
151cdf0e10cSrcweir 	virtual ::rtl::OUString CreateAccessibleBaseName(void) throw (::com::sun::star::uno::RuntimeException);
152cdf0e10cSrcweir 
153cdf0e10cSrcweir 	sdr::table::SvxTableController* getTableController();
154cdf0e10cSrcweir 
155cdf0e10cSrcweir 	void checkCellPosition( sal_Int32 nCol, sal_Int32 nRow ) throw ( ::com::sun::star::lang::IndexOutOfBoundsException );
156*0deba7fbSSteve Yin 	//IAccessibility2 Implementation 2009, move to public
1579b8096d0SSteve Yin 	//void getColumnAndRow( sal_Int32 nChildIndex, sal_Int32& rnColumn, sal_Int32& rnRow ) throw (::com::sun::star::lang::IndexOutOfBoundsException );
158cdf0e10cSrcweir 
159cdf0e10cSrcweir private:
160cdf0e10cSrcweir 	rtl::Reference< AccessibleTableShapeImpl > mxImpl;
1619b8096d0SSteve Yin 	sal_Int32 GetIndexOfSelectedChild( sal_Int32 nSelectedChildIndex ) const;
1629b8096d0SSteve Yin };
1639b8096d0SSteve Yin 
1649b8096d0SSteve Yin typedef ::cppu::WeakImplHelper5<
1659b8096d0SSteve Yin 			::com::sun::star::accessibility::XAccessible,
1669b8096d0SSteve Yin 			::com::sun::star::accessibility::XAccessibleComponent,
1679b8096d0SSteve Yin 			::com::sun::star::accessibility::XAccessibleContext,
1689b8096d0SSteve Yin 			::com::sun::star::accessibility::XAccessibleTable,
1699b8096d0SSteve Yin 			::com::sun::star::accessibility::XAccessibleTableSelection >
1709b8096d0SSteve Yin 			AccessibleTableHeaderShape_BASE;
1719b8096d0SSteve Yin 
1729b8096d0SSteve Yin class AccessibleTableHeaderShape : boost::noncopyable,
1739b8096d0SSteve Yin 	public MutexOwner,
1749b8096d0SSteve Yin 	public AccessibleTableHeaderShape_BASE
1759b8096d0SSteve Yin {
1769b8096d0SSteve Yin public:
1779b8096d0SSteve Yin 	// bRow, sal_True means rowheader, sal_False means columnheader
1789b8096d0SSteve Yin 	AccessibleTableHeaderShape( AccessibleTableShape* pTable, sal_Bool bRow );
1799b8096d0SSteve Yin 	virtual ~AccessibleTableHeaderShape();
1809b8096d0SSteve Yin 
1819b8096d0SSteve Yin 	// XAccessible
1829b8096d0SSteve Yin     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext> SAL_CALL getAccessibleContext( ) throw(::com::sun::star::uno::RuntimeException);
1839b8096d0SSteve Yin 
1849b8096d0SSteve Yin 	// XAccessibleContext
1859b8096d0SSteve Yin 	virtual sal_Int32 SAL_CALL getAccessibleChildCount(  ) throw (::com::sun::star::uno::RuntimeException);
1869b8096d0SSteve Yin     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
1879b8096d0SSteve Yin     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleParent(  ) throw (::com::sun::star::uno::RuntimeException);
1889b8096d0SSteve Yin     virtual sal_Int32 SAL_CALL getAccessibleIndexInParent(  ) throw (::com::sun::star::uno::RuntimeException);
1899b8096d0SSteve Yin     virtual sal_Int16 SAL_CALL getAccessibleRole(  ) throw (::com::sun::star::uno::RuntimeException);
1909b8096d0SSteve Yin     virtual ::rtl::OUString SAL_CALL getAccessibleDescription(  ) throw (::com::sun::star::uno::RuntimeException);
1919b8096d0SSteve Yin     virtual ::rtl::OUString SAL_CALL getAccessibleName(  ) throw (::com::sun::star::uno::RuntimeException);
1929b8096d0SSteve Yin     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet(  ) throw (::com::sun::star::uno::RuntimeException);
1939b8096d0SSteve Yin     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet(  ) throw (::com::sun::star::uno::RuntimeException);
1949b8096d0SSteve Yin     virtual ::com::sun::star::lang::Locale SAL_CALL getLocale(  ) throw (::com::sun::star::accessibility::IllegalAccessibleComponentStateException, ::com::sun::star::uno::RuntimeException);
1959b8096d0SSteve Yin 
1969b8096d0SSteve Yin 	//XAccessibleComponent
1979b8096d0SSteve Yin     virtual sal_Bool SAL_CALL containsPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
1989b8096d0SSteve Yin     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const ::com::sun::star::awt::Point& aPoint ) throw (::com::sun::star::uno::RuntimeException);
1999b8096d0SSteve Yin     virtual ::com::sun::star::awt::Rectangle SAL_CALL getBounds(  ) throw (::com::sun::star::uno::RuntimeException);
2009b8096d0SSteve Yin     virtual ::com::sun::star::awt::Point SAL_CALL getLocation(  ) throw (::com::sun::star::uno::RuntimeException);
2019b8096d0SSteve Yin     virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen(  ) throw (::com::sun::star::uno::RuntimeException);
2029b8096d0SSteve Yin     virtual ::com::sun::star::awt::Size SAL_CALL getSize(  ) throw (::com::sun::star::uno::RuntimeException);
2039b8096d0SSteve Yin     virtual sal_Int32 SAL_CALL getForeground(  ) throw (::com::sun::star::uno::RuntimeException);
2049b8096d0SSteve Yin     virtual sal_Int32 SAL_CALL getBackground(  ) throw (::com::sun::star::uno::RuntimeException);
2059b8096d0SSteve Yin     virtual void SAL_CALL grabFocus(  ) throw (::com::sun::star::uno::RuntimeException);
2069b8096d0SSteve Yin 
2079b8096d0SSteve Yin 	// XAccessibleTable
2089b8096d0SSteve Yin 	virtual sal_Int32 SAL_CALL getAccessibleRowCount() throw (::com::sun::star::uno::RuntimeException);
2099b8096d0SSteve Yin 	virtual sal_Int32 SAL_CALL getAccessibleColumnCount(  ) throw (::com::sun::star::uno::RuntimeException);
2109b8096d0SSteve Yin 	virtual ::rtl::OUString SAL_CALL getAccessibleRowDescription( sal_Int32 nRow ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
2119b8096d0SSteve Yin 	virtual ::rtl::OUString SAL_CALL getAccessibleColumnDescription( sal_Int32 nColumn ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
2129b8096d0SSteve Yin 	virtual sal_Int32 SAL_CALL getAccessibleRowExtentAt( sal_Int32 nRow, sal_Int32 nColumn ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
2139b8096d0SSteve Yin 	virtual sal_Int32 SAL_CALL getAccessibleColumnExtentAt( sal_Int32 nRow, sal_Int32 nColumn ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
2149b8096d0SSteve Yin 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleTable > SAL_CALL getAccessibleRowHeaders(  ) throw (::com::sun::star::uno::RuntimeException);
2159b8096d0SSteve Yin 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleTable > SAL_CALL getAccessibleColumnHeaders(  ) throw (::com::sun::star::uno::RuntimeException);
2169b8096d0SSteve Yin 	virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL getSelectedAccessibleRows(  ) throw (::com::sun::star::uno::RuntimeException);
2179b8096d0SSteve Yin 	virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL getSelectedAccessibleColumns(  ) throw (::com::sun::star::uno::RuntimeException);
2189b8096d0SSteve Yin 	virtual sal_Bool SAL_CALL isAccessibleRowSelected( sal_Int32 nRow ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
2199b8096d0SSteve Yin 	virtual sal_Bool SAL_CALL isAccessibleColumnSelected( sal_Int32 nColumn ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
2209b8096d0SSteve Yin 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleCellAt( sal_Int32 nRow, sal_Int32 nColumn ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
2219b8096d0SSteve Yin 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleCaption(  ) throw (::com::sun::star::uno::RuntimeException);
2229b8096d0SSteve Yin 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getAccessibleSummary(  ) throw (::com::sun::star::uno::RuntimeException);
2239b8096d0SSteve Yin 	virtual sal_Bool SAL_CALL isAccessibleSelected( sal_Int32 nRow, sal_Int32 nColumn ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
2249b8096d0SSteve Yin 	virtual sal_Int32 SAL_CALL getAccessibleIndex( sal_Int32 nRow, sal_Int32 nColumn ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
2259b8096d0SSteve Yin 	virtual sal_Int32 SAL_CALL getAccessibleRow( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
2269b8096d0SSteve Yin 	virtual sal_Int32 SAL_CALL getAccessibleColumn( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
2279b8096d0SSteve Yin 
2289b8096d0SSteve Yin 	//=====  XAccessibleTableSelection  ============================================
2299b8096d0SSteve Yin 	virtual sal_Bool SAL_CALL selectRow( sal_Int32 row )
2309b8096d0SSteve Yin 		throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException) ;
2319b8096d0SSteve Yin 	virtual sal_Bool SAL_CALL selectColumn( sal_Int32 column )
2329b8096d0SSteve Yin 		throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException) ;
2339b8096d0SSteve Yin 	virtual sal_Bool SAL_CALL unselectRow( sal_Int32 row )
2349b8096d0SSteve Yin 		throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException) ;
2359b8096d0SSteve Yin 	virtual sal_Bool SAL_CALL unselectColumn( sal_Int32 column )
2369b8096d0SSteve Yin 		throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException) ;
2379b8096d0SSteve Yin private:
2389b8096d0SSteve Yin 	SVX_DLLPRIVATE explicit AccessibleTableHeaderShape( const ::com::sun::star::uno::Reference<
2399b8096d0SSteve Yin             ::com::sun::star::accessibility::XAccessible>& rxParent );
2409b8096d0SSteve Yin 	sal_Bool mbRow;
2419b8096d0SSteve Yin 	rtl::Reference< AccessibleTableShape > mpTable;
242cdf0e10cSrcweir };
243cdf0e10cSrcweir 
244cdf0e10cSrcweir } // end of namespace accessibility
245cdf0e10cSrcweir 
246cdf0e10cSrcweir #endif
247