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