|
1 /************************************************************************* |
|
2 * |
|
3 * File Name (AccessibleTable.idl) |
|
4 * |
|
5 * IAccessible2 IDL Specification |
|
6 * |
|
7 * Copyright (c) 2007, 2013 Linux Foundation |
|
8 * Copyright (c) 2006 IBM Corporation |
|
9 * Copyright (c) 2000, 2006 Sun Microsystems, Inc. |
|
10 * All rights reserved. |
|
11 * |
|
12 * |
|
13 * Redistribution and use in source and binary forms, with or without |
|
14 * modification, are permitted provided that the following conditions |
|
15 * are met: |
|
16 * |
|
17 * 1. Redistributions of source code must retain the above copyright |
|
18 * notice, this list of conditions and the following disclaimer. |
|
19 * |
|
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. |
|
24 * |
|
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 |
|
28 * permission. |
|
29 * |
|
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. |
|
43 * |
|
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 |
|
47 * |
|
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. |
|
51 * |
|
52 ************************************************************************/ |
|
53 |
|
54 import "objidl.idl"; |
|
55 import "oaidl.idl"; |
|
56 import "oleacc.idl"; |
|
57 import "Accessible2.idl"; |
|
58 import "IA2CommonTypes.idl"; |
|
59 |
|
60 /** @brief This interface gives access to a two-dimensional table. |
|
61 |
|
62 Typically all accessible objects that represent cells or cell-clusters of a table |
|
63 will be at the same time children of the table. In this case IAccessible2::indexInParent |
|
64 will return the child index which then can be used when calling IAccessibleTable::rowIndex |
|
65 and IAccessibleTable::columnIndex. |
|
66 |
|
67 However, in some cases that kind of implementation will not be possible. When |
|
68 the table cells are not direct children of a table, the object representing |
|
69 the cell can define a "table-cell-index" object attribute identifying the 0 |
|
70 based table cell index. This object attribute is obtained by parsing the |
|
71 attribute string returned by IAccessible2::attributes. The "table-cell-index" |
|
72 attribute can be used just like a child index of the typical case. ATs should |
|
73 first test for the presence of the "table-cell-index" attribute and if it is not |
|
74 present then IAccessible2::indexInParent can be used as in the typical case |
|
75 where cells are direct children of the table. |
|
76 |
|
77 The range of valid coordinates for this interface are implementation dependent. |
|
78 However, that range includes at least the intervals from the from the first row |
|
79 or column with the index 0 up to the last (but not including) used row or column |
|
80 as returned by IAccessibleTable::nRows and IAccessibleTable::nColumns. |
|
81 |
|
82 Note that newer implementations are now using IAccessibleTable2 and IAccessibleTableCell |
|
83 rather than this interface. |
|
84 */ |
|
85 [object, uuid(35AD8070-C20C-4fb4-B094-F4F7275DD469)] |
|
86 interface IAccessibleTable : IUnknown |
|
87 { |
|
88 |
|
89 /** @brief Returns the accessible object at the specified row and column in |
|
90 the table. This object could be an IAccessible or an IAccessible2. |
|
91 @param [in] row |
|
92 The 0 based row index for which to retrieve the cell. |
|
93 @param [in] column |
|
94 The 0 based column index for which to retrieve the cell. |
|
95 @param [out] accessible |
|
96 If both row and column index are valid then the corresponding accessible |
|
97 object is returned that represents the requested cell regardless of whether |
|
98 the cell is currently visible (on the screen). |
|
99 @retval S_OK |
|
100 @retval E_INVALIDARG if bad [in] passed, [out] value is NULL |
|
101 */ |
|
102 [propget] HRESULT accessibleAt |
|
103 ( |
|
104 [in] long row, |
|
105 [in] long column, |
|
106 [out, retval] IUnknown **accessible |
|
107 ); |
|
108 |
|
109 /** @brief Returns the caption for the table. The returned object could be |
|
110 an IAccessible or an IAccessible2. |
|
111 @param [out] accessible |
|
112 If the table has a caption then a reference to it is returned, else a NULL |
|
113 pointer is returned. |
|
114 @retval S_OK |
|
115 @retval S_FALSE if there is nothing to return, [out] value is NULL |
|
116 */ |
|
117 [propget] HRESULT caption |
|
118 ( |
|
119 [out, retval] IUnknown **accessible |
|
120 ); |
|
121 |
|
122 /** @brief Translates the given row and column indexes into the corresponding cell index. |
|
123 @param [in] rowIndex |
|
124 0 based row index for the cell. |
|
125 @param [in] columnIndex |
|
126 0 based column index for the cell. |
|
127 @param [out] cellIndex |
|
128 Returns the 0 based index of the cell at the specified row and column indexes. |
|
129 @retval S_OK |
|
130 @retval E_INVALIDARG if bad [in] passed, [out] value is 0 |
|
131 @note The returned value is not necessarily a child index of the immediate parent. |
|
132 In cases where the table cells are not direct children of the table the index |
|
133 is actually the cell index, i.e. conceptually it's an index into a one dimensional |
|
134 array of cells laid out in row order. |
|
135 */ |
|
136 [propget] HRESULT childIndex |
|
137 ( |
|
138 [in] long rowIndex, |
|
139 [in] long columnIndex, |
|
140 [out, retval] long *cellIndex |
|
141 ); |
|
142 |
|
143 /** @brief Returns the description text of the specified column in the table. |
|
144 @param [in] column |
|
145 The 0 based index of the column for which to retrieve the description. |
|
146 @param [out] description |
|
147 Returns the description text of the specified column in the table if such a |
|
148 description exists. Otherwise a NULL pointer is returned. |
|
149 @retval S_OK |
|
150 @retval S_FALSE if there is nothing to return, [out] value is NULL |
|
151 @retval E_INVALIDARG if bad [in] passed, [out] value is NULL |
|
152 */ |
|
153 [propget] HRESULT columnDescription |
|
154 ( |
|
155 [in] long column, |
|
156 [out, retval] BSTR *description |
|
157 ); |
|
158 |
|
159 /** @brief Returns the number of columns occupied by the accessible object |
|
160 at the specified row and column in the table. |
|
161 |
|
162 The result is greater than 1 if the specified cell spans multiple columns. |
|
163 @param [in] row |
|
164 0 based row index of the accessible for which to return the column extent. |
|
165 @param [in] column |
|
166 0 based column index of the accessible for which to return the column extent. |
|
167 @param [out] nColumnsSpanned |
|
168 Returns the 1 based column extent of the specified cell. |
|
169 @retval S_OK |
|
170 @retval E_INVALIDARG if bad [in] passed, [out] value is 0 |
|
171 */ |
|
172 [propget] HRESULT columnExtentAt |
|
173 ( |
|
174 [in] long row, |
|
175 [in] long column, |
|
176 [out, retval] long *nColumnsSpanned |
|
177 ); |
|
178 |
|
179 /** @brief Returns the column headers as an %IAccessibleTable object. |
|
180 |
|
181 Content and size of the returned table are implementation dependent. |
|
182 @param [out] accessibleTable |
|
183 The column header |
|
184 @param [out] startingRowIndex |
|
185 The 0 based row index where the header starts, usually 0. |
|
186 @retval S_OK |
|
187 @retval S_FALSE if there is no header, [out] values are NULL and 0 respectively |
|
188 */ |
|
189 [propget] HRESULT columnHeader |
|
190 ( |
|
191 [out] IAccessibleTable **accessibleTable, |
|
192 [out, retval] long *startingRowIndex |
|
193 ); |
|
194 |
|
195 /** @brief Translates the given cell index into the corresponding column index. |
|
196 @param [in] cellIndex |
|
197 0 based index of the cell in the parent or closest ancestor table. Typically this |
|
198 is the value returned from IAccessible2::indexInParent, but in the case where the |
|
199 table cells are not direct children of the table this is the cell index specified |
|
200 by the "table-cell-index" object attribute obtained from parsing the attributes |
|
201 string returned by calling IAccessible2::attributes on the cell object. |
|
202 @param [out] columnIndex |
|
203 Returns the 0 based column index of the cell of the specified child or the index of |
|
204 the first column if the child spans multiple columns. |
|
205 @retval S_OK |
|
206 @retval E_INVALIDARG if bad [in] passed, [out] value is 0 |
|
207 */ |
|
208 [propget] HRESULT columnIndex |
|
209 ( |
|
210 [in] long cellIndex, |
|
211 [out, retval] long *columnIndex |
|
212 ); |
|
213 |
|
214 /** @brief Returns the total number of columns in table |
|
215 @param [out] columnCount |
|
216 Number of columns in table (including columns outside the current viewport) |
|
217 @retval S_OK |
|
218 */ |
|
219 [propget] HRESULT nColumns |
|
220 ( |
|
221 [out, retval] long *columnCount |
|
222 ); |
|
223 |
|
224 /** @brief Returns the total number of rows in table |
|
225 @param [out] rowCount |
|
226 Number of rows in table (including rows outside the current viewport) |
|
227 @retval S_OK |
|
228 */ |
|
229 [propget] HRESULT nRows |
|
230 ( |
|
231 [out, retval] long *rowCount |
|
232 ); |
|
233 |
|
234 /** @brief Returns the total number of selected cells |
|
235 @param [out] cellCount |
|
236 Number of cells currently selected |
|
237 @retval S_OK |
|
238 */ |
|
239 [propget] HRESULT nSelectedChildren |
|
240 ( |
|
241 [out, retval] long *cellCount |
|
242 ); |
|
243 |
|
244 /** @brief Returns the total number of selected columns |
|
245 @param [out] columnCount |
|
246 Number of columns currently selected |
|
247 @retval S_OK |
|
248 */ |
|
249 [propget] HRESULT nSelectedColumns |
|
250 ( |
|
251 [out, retval] long *columnCount |
|
252 ); |
|
253 |
|
254 /** @brief Returns the total number of selected rows |
|
255 @param [out] rowCount |
|
256 Number of rows currently selected |
|
257 @retval S_OK |
|
258 */ |
|
259 [propget] HRESULT nSelectedRows |
|
260 ( |
|
261 [out, retval] long *rowCount |
|
262 ); |
|
263 |
|
264 /** @brief Returns the description text of the specified row in the table. |
|
265 @param [in] row |
|
266 The 0 based index of the row for which to retrieve the description. |
|
267 @param [out] description |
|
268 Returns the description text of the specified row in the table if such a |
|
269 description exists. Otherwise a NULL pointer is returned. |
|
270 @retval S_OK |
|
271 @retval S_FALSE if there is nothing to return, [out] value is NULL |
|
272 @retval E_INVALIDARG if bad [in] passed, [out] value is NULL |
|
273 */ |
|
274 [propget] HRESULT rowDescription |
|
275 ( |
|
276 [in] long row, |
|
277 [out, retval] BSTR *description |
|
278 ); |
|
279 |
|
280 /** @brief Returns the number of rows occupied by the accessible object |
|
281 at the specified row and column in the table. |
|
282 |
|
283 The result is greater than 1 if the specified cell spans multiple rows. |
|
284 @param [in] row |
|
285 0 based row index of the accessible for which to return the row extent. |
|
286 @param [in] column |
|
287 0 based column index of the accessible for which to return the row extent. |
|
288 @param [out] nRowsSpanned |
|
289 Returns the row extent of the specified cell. |
|
290 @retval S_OK |
|
291 @retval E_INVALIDARG if bad [in] passed, [out] value is 0 |
|
292 */ |
|
293 [propget] HRESULT rowExtentAt |
|
294 ( |
|
295 [in] long row, |
|
296 [in] long column, |
|
297 [out, retval] long *nRowsSpanned |
|
298 ); |
|
299 |
|
300 /** @brief Returns the row headers as an %IAccessibleTable object. |
|
301 |
|
302 Content and size of the returned table are implementation dependent. |
|
303 @param [out] accessibleTable |
|
304 The row header. |
|
305 @param [out] startingColumnIndex |
|
306 The 0 based column index where the header starts, usually 0. |
|
307 @retval S_OK |
|
308 @retval S_FALSE if there is no header, [out] values are NULL and 0 respectively |
|
309 */ |
|
310 [propget] HRESULT rowHeader |
|
311 ( |
|
312 [out] IAccessibleTable **accessibleTable, |
|
313 [out, retval] long *startingColumnIndex |
|
314 ); |
|
315 |
|
316 /** @brief Translates the given cell index into a row index. |
|
317 @param [in] cellIndex |
|
318 0 based index of the cell in the parent or closest ancestor table. Typically this |
|
319 is the value returned from IAccessible2::indexInParent, but in the case where the |
|
320 table cells are not direct children of the table this is the cell index specified |
|
321 by the "table-cell-index" object attribute obtained from parsing the attributes |
|
322 string returned by calling IAccessible2::attributes on the cell object. |
|
323 @param [out] rowIndex |
|
324 0 based row index |
|
325 @retval S_OK |
|
326 @retval E_INVALIDARG if bad [in] passed, [out] value is 0 |
|
327 */ |
|
328 [propget] HRESULT rowIndex |
|
329 ( |
|
330 [in] long cellIndex, |
|
331 [out, retval] long *rowIndex |
|
332 ); |
|
333 |
|
334 /** @brief Returns a list of cell indexes currently selected (0 based). |
|
335 @param [in] maxChildren |
|
336 This parameter is ignored. Refer to @ref _arrayConsideration |
|
337 "Special Consideration when using Arrays" for more details. |
|
338 @param [out] children |
|
339 An array of cell indexes of selected cells (each index is 0 based), |
|
340 allocated by the server. The client must free it with CoTaskMemFree. |
|
341 @param [out] nChildren |
|
342 The number of cell indexes returned; the size of the returned array. |
|
343 @retval S_OK |
|
344 @retval S_FALSE if there are none, [out] values are NULL and 0 respectively |
|
345 */ |
|
346 [propget] HRESULT selectedChildren |
|
347 ( |
|
348 [in] long maxChildren, |
|
349 [out, size_is(,maxChildren), length_is(,*nChildren)] long **children, |
|
350 [out, retval] long *nChildren |
|
351 ); |
|
352 |
|
353 /** @brief Returns a list of column indexes currently selected (0 based). |
|
354 @param [in] maxColumns |
|
355 This parameter is ignored. Refer to @ref _arrayConsideration |
|
356 "Special Consideration when using Arrays" for more details. |
|
357 @param [out] columns |
|
358 An array of column indexes of selected columns (each index is 0 based), allocated |
|
359 by the server. The client must free it with CoTaskMemFree. |
|
360 @param [out] nColumns |
|
361 The number of column indexes returned; the size of the returned array. |
|
362 @retval S_OK |
|
363 @retval S_FALSE if there are none, [out] values are NULL and 0 respectively |
|
364 */ |
|
365 [propget] HRESULT selectedColumns |
|
366 ( |
|
367 [in] long maxColumns, |
|
368 [out, size_is(,maxColumns), length_is(,*nColumns)] long **columns, |
|
369 [out, retval] long *nColumns |
|
370 ); |
|
371 |
|
372 /** @brief Returns a list of row indexes currently selected (0 based). |
|
373 @param [in] maxRows |
|
374 This parameter is ignored. Refer to @ref _arrayConsideration |
|
375 "Special Consideration when using Arrays" for more details. |
|
376 @param [out] rows |
|
377 An array of row indexes of selected rows (each index is 0 based), allocated |
|
378 by the server. The client must free it with CoTaskMemFree. |
|
379 @param [out] nRows |
|
380 The number of row indexes returned; the size of the returned array. |
|
381 @retval S_OK |
|
382 @retval S_FALSE if there are none, [out] values are NULL and 0 respectively |
|
383 */ |
|
384 [propget] HRESULT selectedRows |
|
385 ( |
|
386 [in] long maxRows, |
|
387 [out, size_is(,maxRows), length_is(,*nRows)] long **rows, |
|
388 [out, retval] long *nRows |
|
389 ); |
|
390 |
|
391 /** @brief Returns the summary description of the table. The returned object could be |
|
392 an IAccessible or an IAccessible2. |
|
393 @param [out] accessible |
|
394 Returns a reference to an implementation dependent accessible object |
|
395 representing the table's summary or a NULL pointer if the table |
|
396 does not support a summary. |
|
397 @retval S_OK |
|
398 @retval S_FALSE if there is nothing to return, [out] value is NULL |
|
399 */ |
|
400 [propget] HRESULT summary |
|
401 ( |
|
402 [out, retval] IUnknown **accessible |
|
403 ); |
|
404 |
|
405 /** @brief Returns a boolean value indicating whether the specified column is |
|
406 completely selected. |
|
407 @param [in] column |
|
408 0 based index of the column for which to determine whether it is selected. |
|
409 @param [out] isSelected |
|
410 Returns TRUE if the specified column is selected completely and FALSE otherwise. |
|
411 @retval S_OK |
|
412 @retval E_INVALIDARG if bad [in] passed, [out] value is FALSE |
|
413 */ |
|
414 [propget] HRESULT isColumnSelected |
|
415 ( |
|
416 [in] long column, |
|
417 [out, retval] boolean *isSelected |
|
418 ); |
|
419 |
|
420 /** @brief Returns a boolean value indicating whether the specified row is completely |
|
421 selected. |
|
422 @param [in] row |
|
423 0 based index of the row for which to determine whether it is selected. |
|
424 @param [out] isSelected |
|
425 Returns TRUE if the specified row is selected completely and FALSE otherwise. |
|
426 @retval S_OK |
|
427 @retval E_INVALIDARG if bad [in] passed, [out] value is FALSE |
|
428 */ |
|
429 [propget] HRESULT isRowSelected |
|
430 ( |
|
431 [in] long row, |
|
432 [out, retval] boolean *isSelected |
|
433 ); |
|
434 |
|
435 /** @brief Returns a boolean value indicating whether the specified cell is selected. |
|
436 @param [in] row |
|
437 0 based index of the row for the cell to determine whether it is selected. |
|
438 @param [in] column |
|
439 0 based index of the column for the cell to determine whether it is selected. |
|
440 @param [out] isSelected |
|
441 Returns TRUE if the specified cell is selected and FALSE otherwise. |
|
442 @retval S_OK |
|
443 @retval E_INVALIDARG if bad [in] passed, [out] value is FALSE |
|
444 */ |
|
445 [propget] HRESULT isSelected |
|
446 ( |
|
447 [in] long row, |
|
448 [in] long column, |
|
449 [out, retval] boolean *isSelected |
|
450 ); |
|
451 |
|
452 /** @brief Selects a row and unselects all previously selected rows. |
|
453 @param [in] row |
|
454 0 based index of the row to be selected. |
|
455 @retval S_OK |
|
456 @retval E_INVALIDARG if bad [in] passed |
|
457 */ |
|
458 HRESULT selectRow |
|
459 ( |
|
460 [in] long row |
|
461 ); |
|
462 |
|
463 /** @brief Selects a column and unselects all previously selected columns. |
|
464 @param [in] column |
|
465 0 based index of the column to be selected. |
|
466 @retval S_OK |
|
467 @retval E_INVALIDARG if bad [in] passed |
|
468 */ |
|
469 HRESULT selectColumn |
|
470 ( |
|
471 [in] long column |
|
472 ); |
|
473 |
|
474 /** @brief Unselects one row, leaving other selected rows selected (if any). |
|
475 @param [in] row |
|
476 0 based index of the row to be unselected. |
|
477 @retval S_OK |
|
478 @retval E_INVALIDARG if bad [in] passed |
|
479 */ |
|
480 HRESULT unselectRow |
|
481 ( |
|
482 [in] long row |
|
483 ); |
|
484 |
|
485 /** @brief Unselects one column, leaving other selected columns selected (if any). |
|
486 @param [in] column |
|
487 0 based index of the column to be unselected. |
|
488 @retval S_OK |
|
489 @retval E_INVALIDARG if bad [in] passed |
|
490 */ |
|
491 HRESULT unselectColumn |
|
492 ( |
|
493 [in] long column |
|
494 ); |
|
495 |
|
496 /** @brief Given a cell index, gets the row and column indexes and extents of a cell |
|
497 and whether or not it is selected. |
|
498 |
|
499 This is a convenience function. It is not mandatory to implement it. |
|
500 @param [in] index |
|
501 0 based index of this cell in the table. |
|
502 @param [out] row |
|
503 0 based row index. |
|
504 @param [out] column |
|
505 0 based column index. |
|
506 @param [out] rowExtents |
|
507 Number of cells spanned by this cell in this row. |
|
508 @param [out] columnExtents |
|
509 Number of cells spanned by this cell in this column. |
|
510 @param [out] isSelected |
|
511 Indicates if the specified cell is selected. |
|
512 @retval S_OK |
|
513 @retval E_INVALIDARG if bad [in] passed, [out] values are 0s and FALSE respectively |
|
514 */ |
|
515 [propget] HRESULT rowColumnExtentsAtIndex |
|
516 ( |
|
517 [in] long index, |
|
518 [out] long *row, |
|
519 [out] long *column, |
|
520 [out] long *rowExtents, |
|
521 [out] long *columnExtents, |
|
522 [out, retval] boolean *isSelected |
|
523 ); |
|
524 |
|
525 /** @brief Returns the type and extents describing how a table changed. |
|
526 |
|
527 Provided for use by the IA2_EVENT_TABLE_MODEL_CHANGED event handler. |
|
528 |
|
529 This data is only guaranteed to be valid while the thread notifying the event |
|
530 continues. Once the handler has returned, the validity of the data depends on |
|
531 how the server manages the life cycle of its objects. Also, note that the server |
|
532 may have different life cycle management strategies for controls depending on |
|
533 whether or not a control manages its children. Lists, trees, and tables can have |
|
534 a large number of children and thus it's possible that the child objects for those |
|
535 controls would only be created as needed. Servers should document their life cycle |
|
536 strategy as this will be of interest to assistive technology or script engines |
|
537 accessing data out of process or from other threads. Servers only need to save the |
|
538 most recent row and column values associated with the change and a scope of the |
|
539 entire application is adequate. |
|
540 |
|
541 @param [out] modelChange |
|
542 A struct of (type(insert, delete, update), firstRow, lastRow, firstColumn, lastColumn). |
|
543 @retval S_OK |
|
544 @retval S_FALSE if there is nothing to return, [out] value is NULL |
|
545 */ |
|
546 [propget] HRESULT modelChange |
|
547 ( |
|
548 [out, retval] IA2TableModelChange *modelChange |
|
549 ); |
|
550 |
|
551 } |