1 /*************************************************************************
3 * File Name (AccessibleTable2.idl)
5 * IAccessible2 IDL Specification
7 * Copyright (c) 2007, 2012 Linux Foundation
8 * Copyright (c) 2006 IBM Corporation
9 * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
10 * All rights reserved.
13 * Redistribution and use in source and binary forms, with or without
14 * modification, are permitted provided that the following conditions
17 * 1. Redistributions of source code must retain the above copyright
18 * notice, this list of conditions and the following disclaimer.
20 * 2. Redistributions in binary form must reproduce the above
21 * copyright notice, this list of conditions and the following
22 * disclaimer in the documentation and/or other materials
23 * provided with the distribution.
25 * 3. Neither the name of the Linux Foundation nor the names of its
26 * contributors may be used to endorse or promote products
27 * derived from this software without specific prior written
30 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
31 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
32 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
33 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
34 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
35 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
36 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
37 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
38 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
39 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
40 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
41 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
42 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
44 * This BSD License conforms to the Open Source Initiative "Simplified
45 * BSD License" as published at:
46 * http://www.opensource.org/licenses/bsd-license.php
48 * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
49 * mark may be used in accordance with the Linux Foundation Trademark
50 * Policy to indicate compliance with the IAccessible2 specification.
52 ************************************************************************/
57 import
"Accessible2.idl";
58 import
"IA2CommonTypes.idl";
60 /** @brief This interface gives access to a two-dimensional table.
62 Please also refer to the IAccessibleTableCell interface.
64 If you want to support older applications you should also support the
65 IAccessibleTable inteface.
67 [object, uuid(6167f295
-06f0
-4cdd
-a1fa
-02e25153d869
)]
68 interface IAccessibleTable2
: IUnknown
71 /** @brief Returns the accessible object at the specified row and column in
72 the table. This object could be an IAccessible or an IAccessible2.
74 The 0 based row index for which to retrieve the cell.
76 The 0 based column index for which to retrieve the cell.
78 If both row and column index are valid then the corresponding accessible
79 object is returned that represents the requested cell regardless of whether
80 the cell is currently visible (on the screen).
82 @retval E_INVALIDARG if bad [in] passed
84 [propget] HRESULT cellAt
88 [out, retval] IUnknown
**cell
91 /** @brief Returns the caption for the table. The returned object could be
92 an IAccessible or an IAccessible2.
93 @param [out] accessible
94 If the table has a caption then a reference to it is returned, else a NULL
97 @retval S_FALSE if there is nothing to return, [out] value is NULL
98 @deprecated use a describedBy relation
100 [propget] HRESULT caption
102 [out, retval] IUnknown
**accessible
105 /** @brief Returns the description text of the specified column in the table.
107 The 0 based index of the column for which to retrieve the description.
108 @param [out] description
109 Returns the description text of the specified column in the table if such a
110 description exists. Otherwise a NULL pointer is returned.
112 @retval S_FALSE if there is nothing to return, [out] value is NULL
113 @retval E_INVALIDARG if bad [in] passed
115 [propget] HRESULT columnDescription
118 [out, retval] BSTR *description
122 /** @brief Returns the total number of columns in table
123 @param [out] columnCount
124 Number of columns in table (including columns outside the current viewport)
127 [propget] HRESULT nColumns
129 [out, retval] long *columnCount
132 /** @brief Returns the total number of rows in table
133 @param [out] rowCount
134 Number of rows in table (including rows outside the current viewport)
137 [propget] HRESULT nRows
139 [out, retval] long *rowCount
142 /** @brief Returns the total number of selected cells
143 @param [out] cellCount
144 Number of cells currently selected
147 [propget] HRESULT nSelectedCells
149 [out, retval] long *cellCount
152 /** @brief Returns the total number of selected columns
153 @param [out] columnCount
154 Number of columns currently selected
157 [propget] HRESULT nSelectedColumns
159 [out, retval] long *columnCount
162 /** @brief Returns the total number of selected rows
163 @param [out] rowCount
164 Number of rows currently selected
167 [propget] HRESULT nSelectedRows
169 [out, retval] long *rowCount
172 /** @brief Returns the description text of the specified row in the table.
174 The 0 based index of the row for which to retrieve the description.
175 @param [out] description
176 Returns the description text of the specified row in the table if such a
177 description exists. Otherwise a NULL pointer is returned.
179 @retval S_FALSE if there is nothing to return, [out] value is NULL
180 @retval E_INVALIDARG if bad [in] passed
182 [propget] HRESULT rowDescription
185 [out, retval] BSTR *description
188 /** @brief Returns a list of accessibles currently selected.
190 Pointer to an array of references to selected accessibles. The array is
191 allocated by the server with CoTaskMemAlloc and freed by the client with
193 @param [out] nSelectedCells
194 The number of accessibles returned; the size of the returned array.
196 @retval S_FALSE if there are none, [out] values are NULL and 0 respectively
198 [propget] HRESULT selectedCells
200 [out, size_is(,*nSelectedCells
)] IUnknown
***cells
,
201 [out, retval] long *nSelectedCells
204 /** @brief Returns a list of column indexes currently selected (0 based).
205 @param [out] selectedColumns
206 A pointer to an array of column indexes of selected columns (each index is
207 0 based). The array is allocated by the server with CoTaskMemAlloc and
208 freed by the client with CoTaskMemFree.
209 @param [out] nColumns
210 The number of column indexes returned; the size of the returned array.
212 @retval S_FALSE if there are none, [out] values are NULL and 0 respectively
214 [propget] HRESULT selectedColumns
216 [out, size_is(,*nColumns
)] long **selectedColumns
,
217 [out, retval] long *nColumns
220 /** @brief Returns a list of row indexes currently selected (0 based).
221 @param [out] selectedRows
222 An array of row indexes of selected rows (each index is 0 based). The array
223 is allocated by the server with CoTaskMemAlloc and freed by the client with
226 The number of row indexes returned; the size of the returned array.
228 @retval S_FALSE if there are none, [out] values are NULL and 0 respectively
230 [propget] HRESULT selectedRows
232 [out, size_is(,*nRows
)] long **selectedRows
,
233 [out, retval] long *nRows
236 /** @brief Returns the summary description of the table. The returned object could be
237 an IAccessible or an IAccessible2.
238 @param [out] accessible
239 Returns a reference to an implementation dependent accessible object
240 representing the table's summary or a NULL pointer if the table
241 does not support a summary.
243 @retval S_FALSE if there is nothing to return, [out] value is NULL
244 @deprecated Use the labeledBy relation
246 [propget] HRESULT summary
248 [out, retval] IUnknown
**accessible
251 /** @brief Returns a boolean value indicating whether the specified column is
254 0 based index of the column for which to determine whether it is selected.
255 @param [out] isSelected
256 Returns TRUE if the specified column is selected completely and FALSE otherwise.
258 @retval E_INVALIDARG if bad [in] passed
260 [propget] HRESULT isColumnSelected
263 [out, retval] boolean *isSelected
266 /** @brief Returns a boolean value indicating whether the specified row is completely
269 0 based index of the row for which to determine whether it is selected.
270 @param [out] isSelected
271 Returns TRUE if the specified row is selected completely and FALSE otherwise.
273 @retval E_INVALIDARG if bad [in] passed
275 [propget] HRESULT isRowSelected
278 [out, retval] boolean *isSelected
281 /** @brief Selects a row and unselects all previously selected rows.
283 The behavior should mimic that of the application, but for those applications
284 which do not have a means in the GUI to select a full row of cells the behavior
285 should be as follows: First any selected rows in the table are unselected. Then
286 the entire row of cells for the specified row is selected. If any of the
287 cells in the selected row span additional rows, the cells in those rows
290 0 based index of the row to be selected.
292 @retval E_INVALIDARG if bad [in] passed
299 /** @brief Selects a column and unselects all previously selected columns.
301 The behavior should mimic that of the application, but for those applications
302 which do not have a means in the GUI to select a full column of cells the behavior
303 should be as follows: First any selected columns in the table are unselected. Then
304 the entire column of cells for the specified column is selected. If any of the
305 cells in the selected column span additional columns, the cells in those columns
308 0 based index of the column to be selected.
310 @retval E_INVALIDARG if bad [in] passed
317 /** @brief Unselects one row, leaving other selected rows selected (if any).
319 The behavior should mimic that of the application, but for those applications
320 which do not have a means in the GUI to unselect a full row of cells the
321 behavior should be as follows: The entire row of cells for the specified
322 row is unselected. If any of the cells in the selected row span additional
323 rows, the cells in those rows are also unselected.
325 0 based index of the row to be unselected.
327 @retval E_INVALIDARG if bad [in] passed
334 /** @brief Unselects one column, leaving other selected columns selected (if any).
336 The behavior should mimic that of the application, but for those applications
337 which do not have a means in the GUI to unselect a full column of cells the
338 behavior should be as follows: The entire column of cells for the specified
339 column is unselected. If any of the cells in the selected column span additional
340 columns, the cells in those columns are also unselected.
342 0 based index of the column to be unselected.
344 @retval E_INVALIDARG if bad [in] passed
346 HRESULT unselectColumn
351 /** @brief Returns the type and extents describing how a table changed.
353 Provided for use by the IA2_EVENT_TABLE_MODEL_CHANGED event handler.
355 This data is only guaranteed to be valid while the thread notifying the event
356 continues. Once the handler has returned, the validity of the data depends on
357 how the server manages the life cycle of its objects. Also, note that the server
358 may have different life cycle management strategies for controls depending on
359 whether or not a control manages its children. Lists, trees, and tables can have
360 a large number of children and thus it's possible that the child objects for those
361 controls would only be created as needed. Servers should document their life cycle
362 strategy as this will be of interest to assistive technology or script engines
363 accessing data out of process or from other threads. Servers only need to save the
364 most recent row and column values associated with the change and a scope of the
365 entire application is adequate.
367 @param [out] modelChange
368 A struct of (type(insert, delete, update), firstRow, lastRow, firstColumn, lastColumn).
370 @retval S_FALSE if there is nothing to return, [out] value is NULL
372 [propget] HRESULT modelChange
374 [out, retval] IA2TableModelChange
*modelChange