1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 29 #ifndef _SC_ACCESSIBLETABLEBASE_HXX 30 #define _SC_ACCESSIBLETABLEBASE_HXX 31 32 #include "AccessibleContextBase.hxx" 33 #include "global.hxx" 34 #include "address.hxx" 35 #include <com/sun/star/accessibility/XAccessibleTable.hpp> 36 #include <com/sun/star/accessibility/XAccessibleSelection.hpp> 37 #include <cppuhelper/implbase2.hxx> 38 39 class ScTabViewShell; 40 41 /** @descr 42 This base class provides an implementation of the 43 <code>AccessibleTable</code> service. 44 */ 45 46 typedef cppu::ImplHelper2< ::com::sun::star::accessibility::XAccessibleTable, 47 ::com::sun::star::accessibility::XAccessibleSelection> 48 ScAccessibleTableBaseImpl; 49 50 class ScAccessibleTableBase : 51 public ScAccessibleContextBase, 52 public ScAccessibleTableBaseImpl 53 { 54 public: 55 //===== internal ======================================================== 56 ScAccessibleTableBase( 57 const ::com::sun::star::uno::Reference< 58 ::com::sun::star::accessibility::XAccessible>& rxParent, 59 ScDocument* pDoc, 60 const ScRange& rRange); 61 protected: 62 virtual ~ScAccessibleTableBase(); 63 public: 64 65 using ScAccessibleContextBase::disposing; 66 virtual void SAL_CALL disposing(); 67 68 ///===== XInterface ===================================================== 69 70 virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( 71 ::com::sun::star::uno::Type const & rType ) 72 throw (::com::sun::star::uno::RuntimeException); 73 74 virtual void SAL_CALL acquire() throw (); 75 76 virtual void SAL_CALL release() throw (); 77 78 ///===== XAccessibleTable ================================================ 79 80 /// Returns the number of rows in the table. 81 virtual sal_Int32 SAL_CALL 82 getAccessibleRowCount( ) 83 throw (::com::sun::star::uno::RuntimeException); 84 85 /// Returns the number of columns in the table. 86 virtual sal_Int32 SAL_CALL 87 getAccessibleColumnCount( ) 88 throw (::com::sun::star::uno::RuntimeException); 89 90 /// Returns the description of the specified row in the table. 91 virtual ::rtl::OUString SAL_CALL 92 getAccessibleRowDescription( sal_Int32 nRow ) 93 throw (::com::sun::star::uno::RuntimeException, 94 ::com::sun::star::lang::IndexOutOfBoundsException); 95 96 /// Returns the description text of the specified column in the table. 97 virtual ::rtl::OUString SAL_CALL 98 getAccessibleColumnDescription( sal_Int32 nColumn ) 99 throw (::com::sun::star::uno::RuntimeException, 100 ::com::sun::star::lang::IndexOutOfBoundsException); 101 102 /** Returns the number of rows occupied by the Accessible at a specified row and column in the table. 103 Returns 1 if it is only a cell and the number of rows the cell is merged if the cell is a merged cell. 104 */ 105 virtual sal_Int32 SAL_CALL 106 getAccessibleRowExtentAt( sal_Int32 nRow, sal_Int32 nColumn ) 107 throw (::com::sun::star::uno::RuntimeException, 108 ::com::sun::star::lang::IndexOutOfBoundsException); 109 110 /** Returns the number of columns occupied by the Accessible at a specified row and column in the table. 111 Returns 1 if it is only a cell and the number of columns the cell is merged if the cell is a merged cell. 112 */ 113 virtual sal_Int32 SAL_CALL 114 getAccessibleColumnExtentAt( sal_Int32 nRow, sal_Int32 nColumn ) 115 throw (::com::sun::star::uno::RuntimeException, 116 ::com::sun::star::lang::IndexOutOfBoundsException); 117 118 /// Returns the row headers as an AccessibleTable. 119 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleTable > SAL_CALL 120 getAccessibleRowHeaders( ) 121 throw (::com::sun::star::uno::RuntimeException); 122 123 /// Returns the column headers as an AccessibleTable. 124 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleTable > SAL_CALL 125 getAccessibleColumnHeaders( ) 126 throw (::com::sun::star::uno::RuntimeException); 127 128 /// Returns the selected rows in a table. 129 virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL 130 getSelectedAccessibleRows( ) 131 throw (::com::sun::star::uno::RuntimeException); 132 133 /// Returns the selected columns in a table. 134 virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL 135 getSelectedAccessibleColumns( ) 136 throw (::com::sun::star::uno::RuntimeException); 137 138 /// Returns a boolean value indicating whether the specified row is selected. 139 virtual sal_Bool SAL_CALL 140 isAccessibleRowSelected( sal_Int32 nRow ) 141 throw (::com::sun::star::uno::RuntimeException, 142 ::com::sun::star::lang::IndexOutOfBoundsException); 143 144 /// Returns a boolean value indicating whether the specified column is selected. 145 virtual sal_Bool SAL_CALL 146 isAccessibleColumnSelected( sal_Int32 nColumn ) 147 throw (::com::sun::star::uno::RuntimeException, 148 ::com::sun::star::lang::IndexOutOfBoundsException); 149 150 /// Returns the Accessible at a specified row and column in the table. 151 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL 152 getAccessibleCellAt( sal_Int32 nRow, sal_Int32 nColumn ) 153 throw (::com::sun::star::uno::RuntimeException, 154 ::com::sun::star::lang::IndexOutOfBoundsException); 155 156 /// Returns the caption for the table. 157 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL 158 getAccessibleCaption( ) 159 throw (::com::sun::star::uno::RuntimeException); 160 161 /// Returns the summary description of the table. 162 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL 163 getAccessibleSummary( ) 164 throw (::com::sun::star::uno::RuntimeException); 165 166 /// Returns a boolean value indicating whether the accessible at a specified row and column is selected. 167 virtual sal_Bool SAL_CALL 168 isAccessibleSelected( sal_Int32 nRow, sal_Int32 nColumn ) 169 throw (::com::sun::star::uno::RuntimeException, 170 ::com::sun::star::lang::IndexOutOfBoundsException); 171 172 ///===== XAccessibleExtendedTable ======================================== 173 174 /// Returns the index of the cell on the given position. 175 virtual sal_Int32 SAL_CALL 176 getAccessibleIndex( sal_Int32 nRow, sal_Int32 nColumn ) 177 throw (::com::sun::star::uno::RuntimeException, 178 ::com::sun::star::lang::IndexOutOfBoundsException); 179 180 /// Returns the row number of an index in the table. 181 virtual sal_Int32 SAL_CALL 182 getAccessibleRow( sal_Int32 nChildIndex ) 183 throw (::com::sun::star::uno::RuntimeException, 184 ::com::sun::star::lang::IndexOutOfBoundsException); 185 186 /// Returns the column number of an index in the table. 187 virtual sal_Int32 SAL_CALL 188 getAccessibleColumn( sal_Int32 nChildIndex ) 189 throw (::com::sun::star::uno::RuntimeException, 190 ::com::sun::star::lang::IndexOutOfBoundsException); 191 192 //===== XAccessibleContext ============================================== 193 194 /// Return the number of currently visible children. 195 // is overloaded to calculate this on demand 196 virtual sal_Int32 SAL_CALL 197 getAccessibleChildCount(void) 198 throw (::com::sun::star::uno::RuntimeException); 199 200 /// Return the specified child or NULL if index is invalid. 201 // is overloaded to calculate this on demand 202 virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible> SAL_CALL 203 getAccessibleChild(sal_Int32 nIndex) 204 throw (::com::sun::star::uno::RuntimeException, 205 ::com::sun::star::lang::IndexOutOfBoundsException); 206 207 protected: 208 /// Return this object's description. 209 virtual ::rtl::OUString SAL_CALL 210 createAccessibleDescription(void) 211 throw (::com::sun::star::uno::RuntimeException); 212 213 /// Return the object's current name. 214 virtual ::rtl::OUString SAL_CALL 215 createAccessibleName(void) 216 throw (::com::sun::star::uno::RuntimeException); 217 218 public: 219 /// Return NULL to indicate that an empty relation set. 220 virtual ::com::sun::star::uno::Reference< 221 ::com::sun::star::accessibility::XAccessibleRelationSet> SAL_CALL 222 getAccessibleRelationSet(void) 223 throw (::com::sun::star::uno::RuntimeException); 224 225 /// Return the set of current states. 226 // perhaps sometimes to be implemented 227 virtual ::com::sun::star::uno::Reference< 228 ::com::sun::star::accessibility::XAccessibleStateSet> SAL_CALL 229 getAccessibleStateSet(void) 230 throw (::com::sun::star::uno::RuntimeException); 231 232 ///===== XAccessibleSelection =========================================== 233 234 virtual void SAL_CALL 235 selectAccessibleChild( sal_Int32 nChildIndex ) 236 throw (::com::sun::star::lang::IndexOutOfBoundsException, 237 ::com::sun::star::uno::RuntimeException); 238 239 virtual sal_Bool SAL_CALL 240 isAccessibleChildSelected( sal_Int32 nChildIndex ) 241 throw (::com::sun::star::lang::IndexOutOfBoundsException, 242 ::com::sun::star::uno::RuntimeException); 243 244 virtual void SAL_CALL 245 clearAccessibleSelection( ) 246 throw (::com::sun::star::uno::RuntimeException); 247 248 virtual void SAL_CALL 249 selectAllAccessibleChildren( ) 250 throw (::com::sun::star::uno::RuntimeException); 251 252 virtual sal_Int32 SAL_CALL 253 getSelectedAccessibleChildCount( ) 254 throw (::com::sun::star::uno::RuntimeException); 255 256 virtual ::com::sun::star::uno::Reference< 257 ::com::sun::star::accessibility::XAccessible > SAL_CALL 258 getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) 259 throw (::com::sun::star::lang::IndexOutOfBoundsException, 260 ::com::sun::star::uno::RuntimeException); 261 262 virtual void SAL_CALL 263 deselectAccessibleChild( sal_Int32 nSelectedChildIndex ) 264 throw (::com::sun::star::lang::IndexOutOfBoundsException, 265 ::com::sun::star::uno::RuntimeException); 266 267 ///===== XServiceInfo =================================================== 268 269 /** Returns an identifier for the implementation of this object. 270 */ 271 virtual ::rtl::OUString SAL_CALL 272 getImplementationName(void) 273 throw (::com::sun::star::uno::RuntimeException); 274 275 ///===== XTypeProvider =================================================== 276 277 /// returns the possible types 278 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL 279 getTypes() 280 throw (::com::sun::star::uno::RuntimeException); 281 282 /** Returns a implementation id. 283 */ 284 virtual ::com::sun::star::uno::Sequence<sal_Int8> SAL_CALL 285 getImplementationId(void) 286 throw (::com::sun::star::uno::RuntimeException); 287 288 protected: 289 /// contains the range of the table, because it could be a subrange of the complete table 290 ScRange maRange; 291 292 ScDocument* mpDoc; 293 294 void CommitTableModelChange(sal_Int32 nStartRow, sal_Int32 nStartCol, sal_Int32 nEndRow, sal_Int32 nEndCol, sal_uInt16 nId); 295 }; 296 297 298 #endif 299