1 /* 2 * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 /* 27 * Wrapper functions around calls to the AccessBridge DLL 28 */ 29 30 #include <windows.h> 31 #include <jni.h> 32 #include "AccessBridgeCallbacks.h" 33 #include "AccessBridgePackages.h" 34 35 #ifdef __cplusplus 36 extern "C" { 37 #endif 38 39 #define null NULL 40 41 typedef JOBJECT64 AccessibleContext; 42 typedef JOBJECT64 AccessibleText; 43 typedef JOBJECT64 AccessibleValue; 44 typedef JOBJECT64 AccessibleSelection; 45 typedef JOBJECT64 Java_Object; 46 typedef JOBJECT64 PropertyChangeEvent; 47 typedef JOBJECT64 FocusEvent; 48 typedef JOBJECT64 CaretEvent; 49 typedef JOBJECT64 MouseEvent; 50 typedef JOBJECT64 MenuEvent; 51 typedef JOBJECT64 AccessibleTable; 52 typedef JOBJECT64 AccessibleHyperlink; 53 typedef JOBJECT64 AccessibleHypertext; 54 55 56 typedef void (*Windows_runFP) (); 57 58 typedef void (*SetPropertyChangeFP) (AccessBridge_PropertyChangeFP fp); 59 60 typedef void (*SetJavaShutdownFP) (AccessBridge_JavaShutdownFP fp); 61 typedef void (*SetFocusGainedFP) (AccessBridge_FocusGainedFP fp); 62 typedef void (*SetFocusLostFP) (AccessBridge_FocusLostFP fp); 63 64 typedef void (*SetCaretUpdateFP) (AccessBridge_CaretUpdateFP fp); 65 66 typedef void (*SetMouseClickedFP) (AccessBridge_MouseClickedFP fp); 67 typedef void (*SetMouseEnteredFP) (AccessBridge_MouseEnteredFP fp); 68 typedef void (*SetMouseExitedFP) (AccessBridge_MouseExitedFP fp); 69 typedef void (*SetMousePressedFP) (AccessBridge_MousePressedFP fp); 70 typedef void (*SetMouseReleasedFP) (AccessBridge_MouseReleasedFP fp); 71 72 typedef void (*SetMenuCanceledFP) (AccessBridge_MenuCanceledFP fp); 73 typedef void (*SetMenuDeselectedFP) (AccessBridge_MenuDeselectedFP fp); 74 typedef void (*SetMenuSelectedFP) (AccessBridge_MenuSelectedFP fp); 75 typedef void (*SetPopupMenuCanceledFP) (AccessBridge_PopupMenuCanceledFP fp); 76 typedef void (*SetPopupMenuWillBecomeInvisibleFP) (AccessBridge_PopupMenuWillBecomeInvisibleFP fp); 77 typedef void (*SetPopupMenuWillBecomeVisibleFP) (AccessBridge_PopupMenuWillBecomeVisibleFP fp); 78 79 typedef void (*SetPropertyNameChangeFP) (AccessBridge_PropertyNameChangeFP fp); 80 typedef void (*SetPropertyDescriptionChangeFP) (AccessBridge_PropertyDescriptionChangeFP fp); 81 typedef void (*SetPropertyStateChangeFP) (AccessBridge_PropertyStateChangeFP fp); 82 typedef void (*SetPropertyValueChangeFP) (AccessBridge_PropertyValueChangeFP fp); 83 typedef void (*SetPropertySelectionChangeFP) (AccessBridge_PropertySelectionChangeFP fp); 84 typedef void (*SetPropertyTextChangeFP) (AccessBridge_PropertyTextChangeFP fp); 85 typedef void (*SetPropertyCaretChangeFP) (AccessBridge_PropertyCaretChangeFP fp); 86 typedef void (*SetPropertyVisibleDataChangeFP) (AccessBridge_PropertyVisibleDataChangeFP fp); 87 typedef void (*SetPropertyChildChangeFP) (AccessBridge_PropertyChildChangeFP fp); 88 typedef void (*SetPropertyActiveDescendentChangeFP) (AccessBridge_PropertyActiveDescendentChangeFP fp); 89 90 typedef void (*SetPropertyTableModelChangeFP) (AccessBridge_PropertyTableModelChangeFP fp); 91 92 typedef void (*ReleaseJavaObjectFP) (long vmID, Java_Object object); 93 94 typedef BOOL (*GetVersionInfoFP) (long vmID, AccessBridgeVersionInfo *info); 95 96 typedef BOOL (*IsJavaWindowFP) (HWND window); 97 typedef BOOL (*IsSameObjectFP) (long vmID, JOBJECT64 obj1, JOBJECT64 obj2); 98 typedef BOOL (*GetAccessibleContextFromHWNDFP) (HWND window, long *vmID, AccessibleContext *ac); 99 typedef HWND (*getHWNDFromAccessibleContextFP) (long vmID, AccessibleContext ac); 100 101 typedef BOOL (*GetAccessibleContextAtFP) (long vmID, AccessibleContext acParent, 102 jint x, jint y, AccessibleContext *ac); 103 typedef BOOL (*GetAccessibleContextWithFocusFP) (HWND window, long *vmID, AccessibleContext *ac); 104 typedef BOOL (*GetAccessibleContextInfoFP) (long vmID, AccessibleContext ac, AccessibleContextInfo *info); 105 typedef AccessibleContext (*GetAccessibleChildFromContextFP) (long vmID, AccessibleContext ac, jint i); 106 typedef AccessibleContext (*GetAccessibleParentFromContextFP) (long vmID, AccessibleContext ac); 107 108 /* begin AccessibleTable */ 109 typedef BOOL (*getAccessibleTableInfoFP) (long vmID, AccessibleContext ac, AccessibleTableInfo *tableInfo); 110 typedef BOOL (*getAccessibleTableCellInfoFP) (long vmID, AccessibleTable accessibleTable, 111 jint row, jint column, AccessibleTableCellInfo *tableCellInfo); 112 113 typedef BOOL (*getAccessibleTableRowHeaderFP) (long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo); 114 typedef BOOL (*getAccessibleTableColumnHeaderFP) (long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo); 115 116 typedef AccessibleContext (*getAccessibleTableRowDescriptionFP) (long vmID, AccessibleContext acParent, jint row); 117 typedef AccessibleContext (*getAccessibleTableColumnDescriptionFP) (long vmID, AccessibleContext acParent, jint column); 118 119 typedef jint (*getAccessibleTableRowSelectionCountFP) (long vmID, AccessibleTable table); 120 typedef BOOL (*isAccessibleTableRowSelectedFP) (long vmID, AccessibleTable table, jint row); 121 typedef BOOL (*getAccessibleTableRowSelectionsFP) (long vmID, AccessibleTable table, jint count, 122 jint *selections); 123 124 typedef jint (*getAccessibleTableColumnSelectionCountFP) (long vmID, AccessibleTable table); 125 typedef BOOL (*isAccessibleTableColumnSelectedFP) (long vmID, AccessibleTable table, jint column); 126 typedef BOOL (*getAccessibleTableColumnSelectionsFP) (long vmID, AccessibleTable table, jint count, 127 jint *selections); 128 129 typedef jint (*getAccessibleTableRowFP) (long vmID, AccessibleTable table, jint index); 130 typedef jint (*getAccessibleTableColumnFP) (long vmID, AccessibleTable table, jint index); 131 typedef jint (*getAccessibleTableIndexFP) (long vmID, AccessibleTable table, jint row, jint column); 132 /* end AccessibleTable */ 133 134 /* AccessibleRelationSet */ 135 typedef BOOL (*getAccessibleRelationSetFP) (long vmID, AccessibleContext accessibleContext, 136 AccessibleRelationSetInfo *relationSetInfo); 137 138 /* AccessibleHypertext */ 139 typedef BOOL (*getAccessibleHypertextFP)(long vmID, AccessibleContext accessibleContext, 140 AccessibleHypertextInfo *hypertextInfo); 141 142 typedef BOOL (*activateAccessibleHyperlinkFP)(long vmID, AccessibleContext accessibleContext, 143 AccessibleHyperlink accessibleHyperlink); 144 145 typedef jint (*getAccessibleHyperlinkCountFP)(const long vmID, 146 const AccessibleContext accessibleContext); 147 148 typedef BOOL (*getAccessibleHypertextExtFP) (const long vmID, 149 const AccessibleContext accessibleContext, 150 const jint nStartIndex, 151 AccessibleHypertextInfo *hypertextInfo); 152 153 typedef jint (*getAccessibleHypertextLinkIndexFP)(const long vmID, 154 const AccessibleHypertext hypertext, 155 const jint nIndex); 156 157 typedef BOOL (*getAccessibleHyperlinkFP)(const long vmID, 158 const AccessibleHypertext hypertext, 159 const jint nIndex, 160 AccessibleHyperlinkInfo *hyperlinkInfo); 161 162 163 /* Accessible KeyBindings, Icons and Actions */ 164 typedef BOOL (*getAccessibleKeyBindingsFP)(long vmID, AccessibleContext accessibleContext, 165 AccessibleKeyBindings *keyBindings); 166 167 typedef BOOL (*getAccessibleIconsFP)(long vmID, AccessibleContext accessibleContext, 168 AccessibleIcons *icons); 169 170 typedef BOOL (*getAccessibleActionsFP)(long vmID, AccessibleContext accessibleContext, 171 AccessibleActions *actions); 172 173 typedef BOOL (*doAccessibleActionsFP)(long vmID, AccessibleContext accessibleContext, 174 AccessibleActionsToDo *actionsToDo, jint *failure); 175 176 177 /* AccessibleText */ 178 179 typedef BOOL (*GetAccessibleTextInfoFP) (long vmID, AccessibleText at, AccessibleTextInfo *textInfo, jint x, jint y); 180 typedef BOOL (*GetAccessibleTextItemsFP) (long vmID, AccessibleText at, AccessibleTextItemsInfo *textItems, jint index); 181 typedef BOOL (*GetAccessibleTextSelectionInfoFP) (long vmID, AccessibleText at, AccessibleTextSelectionInfo *textSelection); 182 typedef BOOL (*GetAccessibleTextAttributesFP) (long vmID, AccessibleText at, jint index, AccessibleTextAttributesInfo *attributes); 183 typedef BOOL (*GetAccessibleTextRectFP) (long vmID, AccessibleText at, AccessibleTextRectInfo *rectInfo, jint index); 184 typedef BOOL (*GetAccessibleTextLineBoundsFP) (long vmID, AccessibleText at, jint index, jint *startIndex, jint *endIndex); 185 typedef BOOL (*GetAccessibleTextRangeFP) (long vmID, AccessibleText at, jint start, jint end, wchar_t *text, short len); 186 187 typedef BOOL (*GetCurrentAccessibleValueFromContextFP) (long vmID, AccessibleValue av, wchar_t *value, short len); 188 typedef BOOL (*GetMaximumAccessibleValueFromContextFP) (long vmID, AccessibleValue av, wchar_t *value, short len); 189 typedef BOOL (*GetMinimumAccessibleValueFromContextFP) (long vmID, AccessibleValue av, wchar_t *value, short len); 190 191 typedef void (*AddAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as, int i); 192 typedef void (*ClearAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as); 193 typedef JOBJECT64 (*GetAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as, int i); 194 typedef int (*GetAccessibleSelectionCountFromContextFP) (long vmID, AccessibleSelection as); 195 typedef BOOL (*IsAccessibleChildSelectedFromContextFP) (long vmID, AccessibleSelection as, int i); 196 typedef void (*RemoveAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as, int i); 197 typedef void (*SelectAllAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as); 198 199 /* Utility methods */ 200 201 typedef BOOL (*setTextContentsFP) (const long vmID, const AccessibleContext ac, const wchar_t *text); 202 typedef AccessibleContext (*getParentWithRoleFP) (const long vmID, const AccessibleContext ac, const wchar_t *role); 203 typedef AccessibleContext (*getParentWithRoleElseRootFP) (const long vmID, const AccessibleContext ac, const wchar_t *role); 204 typedef AccessibleContext (*getTopLevelObjectFP) (const long vmID, const AccessibleContext ac); 205 typedef int (*getObjectDepthFP) (const long vmID, const AccessibleContext ac); 206 typedef AccessibleContext (*getActiveDescendentFP) (const long vmID, const AccessibleContext ac); 207 208 209 typedef BOOL (*getVirtualAccessibleNameFP) (const long vmID, const AccessibleContext accessibleContext, 210 wchar_t *name, int len); 211 212 typedef BOOL (*requestFocusFP) (const long vmID, const AccessibleContext accessibleContext); 213 214 typedef BOOL (*selectTextRangeFP) (const long vmID, const AccessibleContext accessibleContext, 215 const int startIndex, const int endIndex); 216 217 typedef BOOL (*getTextAttributesInRangeFP) (const long vmID, const AccessibleContext accessibleContext, 218 const int startIndex, const int endIndex, 219 AccessibleTextAttributesInfo *attributes, short *len); 220 221 typedef int (*getVisibleChildrenCountFP) (const long vmID, const AccessibleContext accessibleContext); 222 223 typedef BOOL (*getVisibleChildrenFP) (const long vmID, const AccessibleContext accessibleContext, 224 const int startIndex, VisibleChildrenInfo *children); 225 226 typedef BOOL (*setCaretPositionFP) (const long vmID, const AccessibleContext accessibleContext, const int position); 227 228 typedef BOOL (*getCaretLocationFP) (long vmID, AccessibleContext ac, AccessibleTextRectInfo *rectInfo, jint index); 229 230 typedef int (*getEventsWaitingFP) (); 231 232 typedef struct AccessBridgeFPsTag { 233 Windows_runFP Windows_run; 234 235 SetPropertyChangeFP SetPropertyChange; 236 237 SetJavaShutdownFP SetJavaShutdown; 238 SetFocusGainedFP SetFocusGained; 239 SetFocusLostFP SetFocusLost; 240 241 SetCaretUpdateFP SetCaretUpdate; 242 243 SetMouseClickedFP SetMouseClicked; 244 SetMouseEnteredFP SetMouseEntered; 245 SetMouseExitedFP SetMouseExited; 246 SetMousePressedFP SetMousePressed; 247 SetMouseReleasedFP SetMouseReleased; 248 249 SetMenuCanceledFP SetMenuCanceled; 250 SetMenuDeselectedFP SetMenuDeselected; 251 SetMenuSelectedFP SetMenuSelected; 252 SetPopupMenuCanceledFP SetPopupMenuCanceled; 253 SetPopupMenuWillBecomeInvisibleFP SetPopupMenuWillBecomeInvisible; 254 SetPopupMenuWillBecomeVisibleFP SetPopupMenuWillBecomeVisible; 255 256 SetPropertyNameChangeFP SetPropertyNameChange; 257 SetPropertyDescriptionChangeFP SetPropertyDescriptionChange; 258 SetPropertyStateChangeFP SetPropertyStateChange; 259 SetPropertyValueChangeFP SetPropertyValueChange; 260 SetPropertySelectionChangeFP SetPropertySelectionChange; 261 SetPropertyTextChangeFP SetPropertyTextChange; 262 SetPropertyCaretChangeFP SetPropertyCaretChange; 263 SetPropertyVisibleDataChangeFP SetPropertyVisibleDataChange; 264 SetPropertyChildChangeFP SetPropertyChildChange; 265 SetPropertyActiveDescendentChangeFP SetPropertyActiveDescendentChange; 266 267 SetPropertyTableModelChangeFP SetPropertyTableModelChange; 268 269 ReleaseJavaObjectFP ReleaseJavaObject; 270 GetVersionInfoFP GetVersionInfo; 271 272 IsJavaWindowFP IsJavaWindow; 273 IsSameObjectFP IsSameObject; 274 GetAccessibleContextFromHWNDFP GetAccessibleContextFromHWND; 275 getHWNDFromAccessibleContextFP getHWNDFromAccessibleContext; 276 277 GetAccessibleContextAtFP GetAccessibleContextAt; 278 GetAccessibleContextWithFocusFP GetAccessibleContextWithFocus; 279 GetAccessibleContextInfoFP GetAccessibleContextInfo; 280 GetAccessibleChildFromContextFP GetAccessibleChildFromContext; 281 GetAccessibleParentFromContextFP GetAccessibleParentFromContext; 282 283 getAccessibleTableInfoFP getAccessibleTableInfo; 284 getAccessibleTableCellInfoFP getAccessibleTableCellInfo; 285 286 getAccessibleTableRowHeaderFP getAccessibleTableRowHeader; 287 getAccessibleTableColumnHeaderFP getAccessibleTableColumnHeader; 288 289 getAccessibleTableRowDescriptionFP getAccessibleTableRowDescription; 290 getAccessibleTableColumnDescriptionFP getAccessibleTableColumnDescription; 291 292 getAccessibleTableRowSelectionCountFP getAccessibleTableRowSelectionCount; 293 isAccessibleTableRowSelectedFP isAccessibleTableRowSelected; 294 getAccessibleTableRowSelectionsFP getAccessibleTableRowSelections; 295 296 getAccessibleTableColumnSelectionCountFP getAccessibleTableColumnSelectionCount; 297 isAccessibleTableColumnSelectedFP isAccessibleTableColumnSelected; 298 getAccessibleTableColumnSelectionsFP getAccessibleTableColumnSelections; 299 300 getAccessibleTableRowFP getAccessibleTableRow; 301 getAccessibleTableColumnFP getAccessibleTableColumn; 302 getAccessibleTableIndexFP getAccessibleTableIndex; 303 304 getAccessibleRelationSetFP getAccessibleRelationSet; 305 306 getAccessibleHypertextFP getAccessibleHypertext; 307 activateAccessibleHyperlinkFP activateAccessibleHyperlink; 308 getAccessibleHyperlinkCountFP getAccessibleHyperlinkCount; 309 getAccessibleHypertextExtFP getAccessibleHypertextExt; 310 getAccessibleHypertextLinkIndexFP getAccessibleHypertextLinkIndex; 311 getAccessibleHyperlinkFP getAccessibleHyperlink; 312 313 getAccessibleKeyBindingsFP getAccessibleKeyBindings; 314 getAccessibleIconsFP getAccessibleIcons; 315 getAccessibleActionsFP getAccessibleActions; 316 doAccessibleActionsFP doAccessibleActions; 317 318 GetAccessibleTextInfoFP GetAccessibleTextInfo; 319 GetAccessibleTextItemsFP GetAccessibleTextItems; 320 GetAccessibleTextSelectionInfoFP GetAccessibleTextSelectionInfo; 321 GetAccessibleTextAttributesFP GetAccessibleTextAttributes; 322 GetAccessibleTextRectFP GetAccessibleTextRect; 323 GetAccessibleTextLineBoundsFP GetAccessibleTextLineBounds; 324 GetAccessibleTextRangeFP GetAccessibleTextRange; 325 326 GetCurrentAccessibleValueFromContextFP GetCurrentAccessibleValueFromContext; 327 GetMaximumAccessibleValueFromContextFP GetMaximumAccessibleValueFromContext; 328 GetMinimumAccessibleValueFromContextFP GetMinimumAccessibleValueFromContext; 329 330 AddAccessibleSelectionFromContextFP AddAccessibleSelectionFromContext; 331 ClearAccessibleSelectionFromContextFP ClearAccessibleSelectionFromContext; 332 GetAccessibleSelectionFromContextFP GetAccessibleSelectionFromContext; 333 GetAccessibleSelectionCountFromContextFP GetAccessibleSelectionCountFromContext; 334 IsAccessibleChildSelectedFromContextFP IsAccessibleChildSelectedFromContext; 335 RemoveAccessibleSelectionFromContextFP RemoveAccessibleSelectionFromContext; 336 SelectAllAccessibleSelectionFromContextFP SelectAllAccessibleSelectionFromContext; 337 338 setTextContentsFP setTextContents; 339 getParentWithRoleFP getParentWithRole; 340 getTopLevelObjectFP getTopLevelObject; 341 getParentWithRoleElseRootFP getParentWithRoleElseRoot; 342 getObjectDepthFP getObjectDepth; 343 getActiveDescendentFP getActiveDescendent; 344 345 getVirtualAccessibleNameFP getVirtualAccessibleName; 346 requestFocusFP requestFocus; 347 selectTextRangeFP selectTextRange; 348 getTextAttributesInRangeFP getTextAttributesInRange; 349 getVisibleChildrenCountFP getVisibleChildrenCount; 350 getVisibleChildrenFP getVisibleChildren; 351 setCaretPositionFP setCaretPosition; 352 getCaretLocationFP getCaretLocation; 353 354 getEventsWaitingFP getEventsWaiting; 355 356 } AccessBridgeFPs; 357 358 359 /** 360 * Initialize the world 361 */ 362 BOOL initializeAccessBridge(); 363 BOOL shutdownAccessBridge(); 364 365 /** 366 * Window routines 367 */ 368 BOOL IsJavaWindow(HWND window); 369 370 // Returns the virtual machine ID and AccessibleContext for a top-level window 371 BOOL GetAccessibleContextFromHWND(HWND target, long *vmID, AccessibleContext *ac); 372 373 // Returns the HWND from the AccessibleContext of a top-level window 374 HWND getHWNDFromAccessibleContext(long vmID, AccessibleContext ac); 375 376 377 /** 378 * Event handling routines 379 */ 380 void SetJavaShutdown(AccessBridge_JavaShutdownFP fp); 381 void SetFocusGained(AccessBridge_FocusGainedFP fp); 382 void SetFocusLost(AccessBridge_FocusLostFP fp); 383 384 void SetCaretUpdate(AccessBridge_CaretUpdateFP fp); 385 386 void SetMouseClicked(AccessBridge_MouseClickedFP fp); 387 void SetMouseEntered(AccessBridge_MouseEnteredFP fp); 388 void SetMouseExited(AccessBridge_MouseExitedFP fp); 389 void SetMousePressed(AccessBridge_MousePressedFP fp); 390 void SetMouseReleased(AccessBridge_MouseReleasedFP fp); 391 392 void SetMenuCanceled(AccessBridge_MenuCanceledFP fp); 393 void SetMenuDeselected(AccessBridge_MenuDeselectedFP fp); 394 void SetMenuSelected(AccessBridge_MenuSelectedFP fp); 395 void SetPopupMenuCanceled(AccessBridge_PopupMenuCanceledFP fp); 396 void SetPopupMenuWillBecomeInvisible(AccessBridge_PopupMenuWillBecomeInvisibleFP fp); 397 void SetPopupMenuWillBecomeVisible(AccessBridge_PopupMenuWillBecomeVisibleFP fp); 398 399 void SetPropertyNameChange(AccessBridge_PropertyNameChangeFP fp); 400 void SetPropertyDescriptionChange(AccessBridge_PropertyDescriptionChangeFP fp); 401 void SetPropertyStateChange(AccessBridge_PropertyStateChangeFP fp); 402 void SetPropertyValueChange(AccessBridge_PropertyValueChangeFP fp); 403 void SetPropertySelectionChange(AccessBridge_PropertySelectionChangeFP fp); 404 void SetPropertyTextChange(AccessBridge_PropertyTextChangeFP fp); 405 void SetPropertyCaretChange(AccessBridge_PropertyCaretChangeFP fp); 406 void SetPropertyVisibleDataChange(AccessBridge_PropertyVisibleDataChangeFP fp); 407 void SetPropertyChildChange(AccessBridge_PropertyChildChangeFP fp); 408 void SetPropertyActiveDescendentChange(AccessBridge_PropertyActiveDescendentChangeFP fp); 409 410 void SetPropertyTableModelChange(AccessBridge_PropertyTableModelChangeFP fp); 411 412 413 /** 414 * General routines 415 */ 416 void ReleaseJavaObject(long vmID, Java_Object object); 417 BOOL GetVersionInfo(long vmID, AccessBridgeVersionInfo *info); 418 HWND GetHWNDFromAccessibleContext(long vmID, JOBJECT64 accesibleContext); 419 420 /** 421 * Accessible Context routines 422 */ 423 BOOL GetAccessibleContextAt(long vmID, AccessibleContext acParent, 424 jint x, jint y, AccessibleContext *ac); 425 BOOL GetAccessibleContextWithFocus(HWND window, long *vmID, AccessibleContext *ac); 426 BOOL GetAccessibleContextInfo(long vmID, AccessibleContext ac, AccessibleContextInfo *info); 427 AccessibleContext GetAccessibleChildFromContext(long vmID, AccessibleContext ac, jint index); 428 AccessibleContext GetAccessibleParentFromContext(long vmID, AccessibleContext ac); 429 430 /** 431 * Accessible Text routines 432 */ 433 BOOL GetAccessibleTextInfo(long vmID, AccessibleText at, AccessibleTextInfo *textInfo, jint x, jint y); 434 BOOL GetAccessibleTextItems(long vmID, AccessibleText at, AccessibleTextItemsInfo *textItems, jint index); 435 BOOL GetAccessibleTextSelectionInfo(long vmID, AccessibleText at, AccessibleTextSelectionInfo *textSelection); 436 BOOL GetAccessibleTextAttributes(long vmID, AccessibleText at, jint index, AccessibleTextAttributesInfo *attributes); 437 BOOL GetAccessibleTextRect(long vmID, AccessibleText at, AccessibleTextRectInfo *rectInfo, jint index); 438 BOOL GetAccessibleTextLineBounds(long vmID, AccessibleText at, jint index, jint *startIndex, jint *endIndex); 439 BOOL GetAccessibleTextRange(long vmID, AccessibleText at, jint start, jint end, wchar_t *text, short len); 440 441 /* begin AccessibleTable routines */ 442 BOOL getAccessibleTableInfo(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo); 443 444 BOOL getAccessibleTableCellInfo(long vmID, AccessibleTable accessibleTable, jint row, jint column, 445 AccessibleTableCellInfo *tableCellInfo); 446 447 BOOL getAccessibleTableRowHeader(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo); 448 BOOL getAccessibleTableColumnHeader(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo); 449 450 AccessibleContext getAccessibleTableRowDescription(long vmID, AccessibleContext acParent, jint row); 451 AccessibleContext getAccessibleTableColumnDescription(long vmID, AccessibleContext acParent, jint column); 452 453 jint getAccessibleTableRowSelectionCount(long vmID, AccessibleTable table); 454 BOOL isAccessibleTableRowSelected(long vmID, AccessibleTable table, jint row); 455 BOOL getAccessibleTableRowSelections(long vmID, AccessibleTable table, jint count, jint *selections); 456 457 jint getAccessibleTableColumnSelectionCount(long vmID, AccessibleTable table); 458 BOOL isAccessibleTableColumnSelected(long vmID, AccessibleTable table, jint column); 459 BOOL getAccessibleTableColumnSelections(long vmID, AccessibleTable table, jint count, jint *selections); 460 461 jint getAccessibleTableRow(long vmID, AccessibleTable table, jint index); 462 jint getAccessibleTableColumn(long vmID, AccessibleTable table, jint index); 463 jint getAccessibleTableIndex(long vmID, AccessibleTable table, jint row, jint column); 464 /* end AccessibleTable */ 465 466 /* ----- AccessibleRelationSet routines */ 467 BOOL getAccessibleRelationSet(long vmID, AccessibleContext accessibleContext, 468 AccessibleRelationSetInfo *relationSetInfo); 469 470 /* ----- AccessibleHypertext routines */ 471 472 /* 473 * Returns hypertext information associated with a component. 474 */ 475 BOOL getAccessibleHypertext(long vmID, AccessibleContext accessibleContext, 476 AccessibleHypertextInfo *hypertextInfo); 477 478 /* 479 * Requests that a hyperlink be activated. 480 */ 481 BOOL activateAccessibleHyperlink(long vmID, AccessibleContext accessibleContext, 482 AccessibleHyperlink accessibleHyperlink); 483 484 /* 485 * Returns the number of hyperlinks in a component 486 * Maps to AccessibleHypertext.getLinkCount. 487 * Returns -1 on error. 488 */ 489 jint getAccessibleHyperlinkCount(const long vmID, 490 const AccessibleHypertext hypertext); 491 492 /* 493 * This method is used to iterate through the hyperlinks in a component. It 494 * returns hypertext information for a component starting at hyperlink index 495 * nStartIndex. No more than MAX_HYPERLINKS AccessibleHypertextInfo objects will 496 * be returned for each call to this method. 497 * Returns FALSE on error. 498 */ 499 BOOL getAccessibleHypertextExt(const long vmID, 500 const AccessibleContext accessibleContext, 501 const jint nStartIndex, 502 /* OUT */ AccessibleHypertextInfo *hypertextInfo); 503 504 /* 505 * Returns the index into an array of hyperlinks that is associated with 506 * a character index in document; maps to AccessibleHypertext.getLinkIndex 507 * Returns -1 on error. 508 */ 509 jint getAccessibleHypertextLinkIndex(const long vmID, 510 const AccessibleHypertext hypertext, 511 const jint nIndex); 512 513 /* 514 * Returns the nth hyperlink in a document 515 * Maps to AccessibleHypertext.getLink. 516 * Returns FALSE on error 517 */ 518 BOOL getAccessibleHyperlink(const long vmID, 519 const AccessibleHypertext hypertext, 520 const jint nIndex, 521 /* OUT */ AccessibleHyperlinkInfo *hyperlinkInfo); 522 523 /* Accessible KeyBindings, Icons and Actions */ 524 525 /* 526 * Returns a list of key bindings associated with a component. 527 */ 528 BOOL getAccessibleKeyBindings(long vmID, AccessibleContext accessibleContext, 529 AccessibleKeyBindings *keyBindings); 530 531 /* 532 * Returns a list of icons associate with a component. 533 */ 534 BOOL getAccessibleIcons(long vmID, AccessibleContext accessibleContext, 535 AccessibleIcons *icons); 536 537 /* 538 * Returns a list of actions that a component can perform. 539 */ 540 BOOL getAccessibleActions(long vmID, AccessibleContext accessibleContext, 541 AccessibleActions *actions); 542 543 /* 544 * Request that a list of AccessibleActions be performed by a component. 545 * Returns TRUE if all actions are performed. Returns FALSE 546 * when the first requested action fails in which case "failure" 547 * contains the index of the action that failed. 548 */ 549 BOOL doAccessibleActions(long vmID, AccessibleContext accessibleContext, 550 AccessibleActionsToDo *actionsToDo, jint *failure); 551 552 553 554 /* Additional utility methods */ 555 556 /* 557 * Returns whether two object references refer to the same object. 558 */ 559 BOOL IsSameObject(long vmID, JOBJECT64 obj1, JOBJECT64 obj2); 560 561 /** 562 * Sets editable text contents. The AccessibleContext must implement AccessibleEditableText and 563 * be editable. The maximum text length that can be set is MAX_STRING_SIZE - 1. 564 * Returns whether successful 565 */ 566 BOOL setTextContents (const long vmID, const AccessibleContext accessibleContext, const wchar_t *text); 567 568 /** 569 * Returns the Accessible Context with the specified role that is the 570 * ancestor of a given object. The role is one of the role strings 571 * defined in AccessBridgePackages.h 572 * If there is no ancestor object that has the specified role, 573 * returns (AccessibleContext)0. 574 */ 575 AccessibleContext getParentWithRole (const long vmID, const AccessibleContext accessibleContext, 576 const wchar_t *role); 577 578 /** 579 * Returns the Accessible Context with the specified role that is the 580 * ancestor of a given object. The role is one of the role strings 581 * defined in AccessBridgePackages.h. If an object with the specified 582 * role does not exist, returns the top level object for the Java Window. 583 * Returns (AccessibleContext)0 on error. 584 */ 585 AccessibleContext getParentWithRoleElseRoot (const long vmID, const AccessibleContext accessibleContext, 586 const wchar_t *role); 587 588 /** 589 * Returns the Accessible Context for the top level object in 590 * a Java Window. This is same Accessible Context that is obtained 591 * from GetAccessibleContextFromHWND for that window. Returns 592 * (AccessibleContext)0 on error. 593 */ 594 AccessibleContext getTopLevelObject (const long vmID, const AccessibleContext accessibleContext); 595 596 /** 597 * Returns how deep in the object hierarchy a given object is. 598 * The top most object in the object hierarchy has an object depth of 0. 599 * Returns -1 on error. 600 */ 601 int getObjectDepth (const long vmID, const AccessibleContext accessibleContext); 602 603 /** 604 * Returns the Accessible Context of the current ActiveDescendent of an object. 605 * This method assumes the ActiveDescendent is the component that is currently 606 * selected in a container object. 607 * Returns (AccessibleContext)0 on error or if there is no selection. 608 */ 609 AccessibleContext getActiveDescendent (const long vmID, const AccessibleContext accessibleContext); 610 611 /** 612 /** 613 * Accessible Value routines 614 */ 615 BOOL GetCurrentAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len); 616 BOOL GetMaximumAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len); 617 BOOL GetMinimumAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len); 618 619 /** 620 * Accessible Selection routines 621 */ 622 void AddAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i); 623 void ClearAccessibleSelectionFromContext(long vmID, AccessibleSelection as); 624 JOBJECT64 GetAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i); 625 int GetAccessibleSelectionCountFromContext(long vmID, AccessibleSelection as); 626 BOOL IsAccessibleChildSelectedFromContext(long vmID, AccessibleSelection as, int i); 627 void RemoveAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i); 628 void SelectAllAccessibleSelectionFromContext(long vmID, AccessibleSelection as); 629 630 /** 631 * Additional methods for Teton 632 */ 633 634 /** 635 * Gets the AccessibleName for a component based upon the JAWS algorithm. Returns 636 * whether successful. 637 * 638 * Bug ID 4916682 - Implement JAWS AccessibleName policy 639 */ 640 BOOL getVirtualAccessibleName(const long vmID, const AccessibleContext accessibleContext, 641 wchar_t *name, int len); 642 643 /** 644 * Request focus for a component. Returns whether successful. 645 * 646 * Bug ID 4944757 - requestFocus method needed 647 */ 648 BOOL requestFocus(const long vmID, const AccessibleContext accessibleContext); 649 650 /** 651 * Selects text between two indices. Selection includes the text at the start index 652 * and the text at the end index. Returns whether successful. 653 * 654 * Bug ID 4944758 - selectTextRange method needed 655 */ 656 BOOL selectTextRange(const long vmID, const AccessibleContext accessibleContext, const int startIndex, 657 const int endIndex); 658 659 /** 660 * Get text attributes between two indices. The attribute list includes the text at the 661 * start index and the text at the end index. Returns whether successful; 662 * 663 * Bug ID 4944761 - getTextAttributes between two indices method needed 664 */ 665 BOOL getTextAttributesInRange(const long vmID, const AccessibleContext accessibleContext, 666 const int startIndex, const int endIndex, 667 AccessibleTextAttributesInfo *attributes, short *len); 668 669 /** 670 * Returns the number of visible children of a component. Returns -1 on error. 671 * 672 * Bug ID 4944762- getVisibleChildren for list-like components needed 673 */ 674 int getVisibleChildrenCount(const long vmID, const AccessibleContext accessibleContext); 675 676 /** 677 * Gets the visible children of an AccessibleContext. Returns whether successful. 678 * 679 * Bug ID 4944762- getVisibleChildren for list-like components needed 680 */ 681 BOOL getVisibleChildren(const long vmID, const AccessibleContext accessibleContext, 682 const int startIndex, 683 VisibleChildrenInfo *visibleChildrenInfo); 684 685 /** 686 * Set the caret to a text position. Returns whether successful. 687 * 688 * Bug ID 4944770 - setCaretPosition method needed 689 */ 690 BOOL setCaretPosition(const long vmID, const AccessibleContext accessibleContext, 691 const int position); 692 693 /** 694 * Gets the text caret location 695 */ 696 BOOL getCaretLocation(long vmID, AccessibleContext ac, 697 AccessibleTextRectInfo *rectInfo, jint index); 698 699 /** 700 * Gets the number of events waiting to fire 701 */ 702 int getEventsWaiting(); 703 704 #ifdef __cplusplus 705 } 706 #endif