1 /* 2 * 3 * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 9 * - Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 12 * - Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * - Neither the name of Oracle nor the names of its 17 * contributors may be used to endorse or promote products derived 18 * from this software without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 21 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 22 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 27 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 28 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 29 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 33 /* 34 * Wrapper functions around calls to the AccessBridge DLL 35 */ 36 37 38 #include <windows.h> 39 #include <jni.h> 40 41 42 //#define ACCESSBRIDGE_32 43 //#define ACCESSBRIDGE_64 44 45 #include "AccessBridgeCalls.h" 46 47 #ifdef __cplusplus 48 extern "C" { 49 #endif 50 51 HINSTANCE theAccessBridgeInstance; 52 AccessBridgeFPs theAccessBridge; 53 54 BOOL theAccessBridgeInitializedFlag = FALSE; 55 56 #define LOAD_FP(result, type, name) \ 57 if ((theAccessBridge.result = \ 58 (type) GetProcAddress(theAccessBridgeInstance, name)) == (type) 0) { \ 59 return FALSE; \ 60 } 61 62 BOOL initializeAccessBridge() { 63 64 #ifdef ACCESSBRIDGE_ARCH_32 // For 32 bit AT interfacing with Java on 64 bit OS 65 theAccessBridgeInstance = LoadLibrary("WINDOWSACCESSBRIDGE-32"); 66 #else 67 #ifdef ACCESSBRIDGE_ARCH_64 // For 64 bit AT interfacing with Java on 64 bit OS 68 theAccessBridgeInstance = LoadLibrary("WINDOWSACCESSBRIDGE-64"); 69 #else // For 32 bit AT interfacing with Java on 32 bit OS 70 theAccessBridgeInstance = LoadLibrary("WINDOWSACCESSBRIDGE"); 71 #endif 72 #endif 73 if (theAccessBridgeInstance != 0) { 74 LOAD_FP(Windows_run, Windows_runFP, "Windows_run"); 75 76 LOAD_FP(SetJavaShutdown, SetJavaShutdownFP, "setJavaShutdownFP"); 77 LOAD_FP(SetFocusGained, SetFocusGainedFP, "setFocusGainedFP"); 78 LOAD_FP(SetFocusLost, SetFocusLostFP, "setFocusLostFP"); 79 80 LOAD_FP(SetCaretUpdate, SetCaretUpdateFP, "setCaretUpdateFP"); 81 82 LOAD_FP(SetMouseClicked, SetMouseClickedFP, "setMouseClickedFP"); 83 LOAD_FP(SetMouseEntered, SetMouseEnteredFP, "setMouseEnteredFP"); 84 LOAD_FP(SetMouseExited, SetMouseExitedFP, "setMouseExitedFP"); 85 LOAD_FP(SetMousePressed, SetMousePressedFP, "setMousePressedFP"); 86 LOAD_FP(SetMouseReleased, SetMouseReleasedFP, "setMouseReleasedFP"); 87 88 LOAD_FP(SetMenuCanceled, SetMenuCanceledFP, "setMenuCanceledFP"); 89 LOAD_FP(SetMenuDeselected, SetMenuDeselectedFP, "setMenuDeselectedFP"); 90 LOAD_FP(SetMenuSelected, SetMenuSelectedFP, "setMenuSelectedFP"); 91 LOAD_FP(SetPopupMenuCanceled, SetPopupMenuCanceledFP, "setPopupMenuCanceledFP"); 92 LOAD_FP(SetPopupMenuWillBecomeInvisible, SetPopupMenuWillBecomeInvisibleFP, "setPopupMenuWillBecomeInvisibleFP"); 93 LOAD_FP(SetPopupMenuWillBecomeVisible, SetPopupMenuWillBecomeVisibleFP, "setPopupMenuWillBecomeVisibleFP"); 94 95 LOAD_FP(SetPropertyNameChange, SetPropertyNameChangeFP, "setPropertyNameChangeFP"); 96 LOAD_FP(SetPropertyDescriptionChange, SetPropertyDescriptionChangeFP, "setPropertyDescriptionChangeFP"); 97 LOAD_FP(SetPropertyStateChange, SetPropertyStateChangeFP, "setPropertyStateChangeFP"); 98 LOAD_FP(SetPropertyValueChange, SetPropertyValueChangeFP, "setPropertyValueChangeFP"); 99 LOAD_FP(SetPropertySelectionChange, SetPropertySelectionChangeFP, "setPropertySelectionChangeFP"); 100 LOAD_FP(SetPropertyTextChange, SetPropertyTextChangeFP, "setPropertyTextChangeFP"); 101 LOAD_FP(SetPropertyCaretChange, SetPropertyCaretChangeFP, "setPropertyCaretChangeFP"); 102 LOAD_FP(SetPropertyVisibleDataChange, SetPropertyVisibleDataChangeFP, "setPropertyVisibleDataChangeFP"); 103 LOAD_FP(SetPropertyChildChange, SetPropertyChildChangeFP, "setPropertyChildChangeFP"); 104 LOAD_FP(SetPropertyActiveDescendentChange, SetPropertyActiveDescendentChangeFP, "setPropertyActiveDescendentChangeFP"); 105 106 LOAD_FP(SetPropertyTableModelChange, SetPropertyTableModelChangeFP, "setPropertyTableModelChangeFP"); 107 108 LOAD_FP(ReleaseJavaObject, ReleaseJavaObjectFP, "releaseJavaObject"); 109 LOAD_FP(GetVersionInfo, GetVersionInfoFP, "getVersionInfo"); 110 111 LOAD_FP(IsJavaWindow, IsJavaWindowFP, "isJavaWindow"); 112 LOAD_FP(IsSameObject, IsSameObjectFP, "isSameObject"); 113 LOAD_FP(GetAccessibleContextFromHWND, GetAccessibleContextFromHWNDFP, "getAccessibleContextFromHWND"); 114 LOAD_FP(getHWNDFromAccessibleContext, getHWNDFromAccessibleContextFP, "getHWNDFromAccessibleContext"); 115 116 LOAD_FP(GetAccessibleContextAt, GetAccessibleContextAtFP, "getAccessibleContextAt"); 117 LOAD_FP(GetAccessibleContextWithFocus, GetAccessibleContextWithFocusFP, "getAccessibleContextWithFocus"); 118 LOAD_FP(GetAccessibleContextInfo, GetAccessibleContextInfoFP, "getAccessibleContextInfo"); 119 LOAD_FP(GetAccessibleChildFromContext, GetAccessibleChildFromContextFP, "getAccessibleChildFromContext"); 120 LOAD_FP(GetAccessibleParentFromContext, GetAccessibleParentFromContextFP, "getAccessibleParentFromContext"); 121 122 /* begin AccessibleTable */ 123 LOAD_FP(getAccessibleTableInfo, getAccessibleTableInfoFP, "getAccessibleTableInfo"); 124 LOAD_FP(getAccessibleTableCellInfo, getAccessibleTableCellInfoFP, "getAccessibleTableCellInfo"); 125 126 LOAD_FP(getAccessibleTableRowHeader, getAccessibleTableRowHeaderFP, "getAccessibleTableRowHeader"); 127 LOAD_FP(getAccessibleTableColumnHeader, getAccessibleTableColumnHeaderFP, "getAccessibleTableColumnHeader"); 128 129 LOAD_FP(getAccessibleTableRowDescription, getAccessibleTableRowDescriptionFP, "getAccessibleTableRowDescription"); 130 LOAD_FP(getAccessibleTableColumnDescription, getAccessibleTableColumnDescriptionFP, "getAccessibleTableColumnDescription"); 131 132 LOAD_FP(getAccessibleTableRowSelectionCount, getAccessibleTableRowSelectionCountFP, 133 "getAccessibleTableRowSelectionCount"); 134 LOAD_FP(isAccessibleTableRowSelected, isAccessibleTableRowSelectedFP, 135 "isAccessibleTableRowSelected"); 136 LOAD_FP(getAccessibleTableRowSelections, getAccessibleTableRowSelectionsFP, 137 "getAccessibleTableRowSelections"); 138 139 LOAD_FP(getAccessibleTableColumnSelectionCount, getAccessibleTableColumnSelectionCountFP, 140 "getAccessibleTableColumnSelectionCount"); 141 LOAD_FP(isAccessibleTableColumnSelected, isAccessibleTableColumnSelectedFP, 142 "isAccessibleTableColumnSelected"); 143 LOAD_FP(getAccessibleTableColumnSelections, getAccessibleTableColumnSelectionsFP, 144 "getAccessibleTableColumnSelections"); 145 146 LOAD_FP(getAccessibleTableRow, getAccessibleTableRowFP, 147 "getAccessibleTableRow"); 148 LOAD_FP(getAccessibleTableColumn, getAccessibleTableColumnFP, 149 "getAccessibleTableColumn"); 150 LOAD_FP(getAccessibleTableIndex, getAccessibleTableIndexFP, 151 "getAccessibleTableIndex"); 152 153 /* end AccessibleTable */ 154 155 /* AccessibleRelationSet */ 156 LOAD_FP(getAccessibleRelationSet, getAccessibleRelationSetFP, "getAccessibleRelationSet"); 157 158 /* AccessibleHypertext */ 159 LOAD_FP(getAccessibleHypertext, getAccessibleHypertextFP, "getAccessibleHypertext"); 160 LOAD_FP(activateAccessibleHyperlink, activateAccessibleHyperlinkFP, "activateAccessibleHyperlink"); 161 LOAD_FP(getAccessibleHyperlinkCount, getAccessibleHyperlinkCountFP, "getAccessibleHyperlinkCount"); 162 LOAD_FP(getAccessibleHypertextExt, getAccessibleHypertextExtFP, "getAccessibleHypertextExt"); 163 LOAD_FP(getAccessibleHypertextLinkIndex, getAccessibleHypertextLinkIndexFP, "getAccessibleHypertextLinkIndex"); 164 LOAD_FP(getAccessibleHyperlink, getAccessibleHyperlinkFP, "getAccessibleHyperlink"); 165 166 /* Accessible KeyBinding, Icon and Action */ 167 LOAD_FP(getAccessibleKeyBindings, getAccessibleKeyBindingsFP, "getAccessibleKeyBindings"); 168 LOAD_FP(getAccessibleIcons, getAccessibleIconsFP, "getAccessibleIcons"); 169 LOAD_FP(getAccessibleActions, getAccessibleActionsFP, "getAccessibleActions"); 170 LOAD_FP(doAccessibleActions, doAccessibleActionsFP, "doAccessibleActions"); 171 172 /* AccessibleText */ 173 LOAD_FP(GetAccessibleTextInfo, GetAccessibleTextInfoFP, "getAccessibleTextInfo"); 174 LOAD_FP(GetAccessibleTextItems, GetAccessibleTextItemsFP, "getAccessibleTextItems"); 175 LOAD_FP(GetAccessibleTextSelectionInfo, GetAccessibleTextSelectionInfoFP, "getAccessibleTextSelectionInfo"); 176 LOAD_FP(GetAccessibleTextAttributes, GetAccessibleTextAttributesFP, "getAccessibleTextAttributes"); 177 LOAD_FP(GetAccessibleTextRect, GetAccessibleTextRectFP, "getAccessibleTextRect"); 178 LOAD_FP(GetAccessibleTextLineBounds, GetAccessibleTextLineBoundsFP, "getAccessibleTextLineBounds"); 179 LOAD_FP(GetAccessibleTextRange, GetAccessibleTextRangeFP, "getAccessibleTextRange"); 180 181 LOAD_FP(GetCurrentAccessibleValueFromContext, GetCurrentAccessibleValueFromContextFP, "getCurrentAccessibleValueFromContext"); 182 LOAD_FP(GetMaximumAccessibleValueFromContext, GetMaximumAccessibleValueFromContextFP, "getMaximumAccessibleValueFromContext"); 183 LOAD_FP(GetMinimumAccessibleValueFromContext, GetMinimumAccessibleValueFromContextFP, "getMinimumAccessibleValueFromContext"); 184 185 LOAD_FP(AddAccessibleSelectionFromContext, AddAccessibleSelectionFromContextFP, "addAccessibleSelectionFromContext"); 186 LOAD_FP(ClearAccessibleSelectionFromContext, ClearAccessibleSelectionFromContextFP, "clearAccessibleSelectionFromContext"); 187 LOAD_FP(GetAccessibleSelectionFromContext, GetAccessibleSelectionFromContextFP, "getAccessibleSelectionFromContext"); 188 LOAD_FP(GetAccessibleSelectionCountFromContext, GetAccessibleSelectionCountFromContextFP, "getAccessibleSelectionCountFromContext"); 189 LOAD_FP(IsAccessibleChildSelectedFromContext, IsAccessibleChildSelectedFromContextFP, "isAccessibleChildSelectedFromContext"); 190 LOAD_FP(RemoveAccessibleSelectionFromContext, RemoveAccessibleSelectionFromContextFP, "removeAccessibleSelectionFromContext"); 191 LOAD_FP(SelectAllAccessibleSelectionFromContext, SelectAllAccessibleSelectionFromContextFP, "selectAllAccessibleSelectionFromContext"); 192 193 LOAD_FP(setTextContents, setTextContentsFP, "setTextContents"); 194 LOAD_FP(getParentWithRole, getParentWithRoleFP, "getParentWithRole"); 195 LOAD_FP(getTopLevelObject, getTopLevelObjectFP, "getTopLevelObject"); 196 LOAD_FP(getParentWithRoleElseRoot, getParentWithRoleElseRootFP, "getParentWithRoleElseRoot"); 197 LOAD_FP(getObjectDepth, getObjectDepthFP, "getObjectDepth"); 198 LOAD_FP(getActiveDescendent, getActiveDescendentFP, "getActiveDescendent"); 199 200 // additional methods for Teton 201 LOAD_FP(getVirtualAccessibleName, getVirtualAccessibleNameFP, "getVirtualAccessibleName"); 202 LOAD_FP(requestFocus, requestFocusFP, "requestFocus"); 203 LOAD_FP(selectTextRange, selectTextRangeFP, "selectTextRange"); 204 LOAD_FP(getTextAttributesInRange, getTextAttributesInRangeFP, "getTextAttributesInRange"); 205 LOAD_FP(getVisibleChildrenCount, getVisibleChildrenCountFP, "getVisibleChildrenCount"); 206 LOAD_FP(getVisibleChildren, getVisibleChildrenFP, "getVisibleChildren"); 207 LOAD_FP(setCaretPosition, setCaretPositionFP, "setCaretPosition"); 208 LOAD_FP(getCaretLocation, getCaretLocationFP, "getCaretLocation"); 209 210 LOAD_FP(getEventsWaiting, getEventsWaitingFP, "getEventsWaiting"); 211 212 theAccessBridge.Windows_run(); 213 214 theAccessBridgeInitializedFlag = TRUE; 215 return TRUE; 216 } else { 217 return FALSE; 218 } 219 } 220 221 222 BOOL shutdownAccessBridge() { 223 BOOL result; 224 DWORD error; 225 theAccessBridgeInitializedFlag = FALSE; 226 if (theAccessBridgeInstance != (HANDLE) 0) { 227 result = FreeLibrary(theAccessBridgeInstance); 228 if (result != TRUE) { 229 error = GetLastError(); 230 } 231 return TRUE; 232 } 233 return FALSE; 234 } 235 236 237 void SetJavaShutdown(AccessBridge_JavaShutdownFP fp) { 238 if (theAccessBridgeInitializedFlag == TRUE) { 239 theAccessBridge.SetJavaShutdown(fp); 240 } 241 } 242 243 void SetFocusGained(AccessBridge_FocusGainedFP fp) { 244 if (theAccessBridgeInitializedFlag == TRUE) { 245 theAccessBridge.SetFocusGained(fp); 246 } 247 } 248 249 void SetFocusLost(AccessBridge_FocusLostFP fp) { 250 if (theAccessBridgeInitializedFlag == TRUE) { 251 theAccessBridge.SetFocusLost(fp); 252 } 253 } 254 255 256 void SetCaretUpdate(AccessBridge_CaretUpdateFP fp) { 257 if (theAccessBridgeInitializedFlag == TRUE) { 258 theAccessBridge.SetCaretUpdate(fp); 259 } 260 } 261 262 263 void SetMouseClicked(AccessBridge_MouseClickedFP fp) { 264 if (theAccessBridgeInitializedFlag == TRUE) { 265 theAccessBridge.SetMouseClicked(fp); 266 } 267 } 268 269 void SetMouseEntered(AccessBridge_MouseEnteredFP fp) { 270 if (theAccessBridgeInitializedFlag == TRUE) { 271 theAccessBridge.SetMouseEntered(fp); 272 } 273 } 274 275 void SetMouseExited(AccessBridge_MouseExitedFP fp) { 276 if (theAccessBridgeInitializedFlag == TRUE) { 277 theAccessBridge.SetMouseExited(fp); 278 } 279 } 280 281 void SetMousePressed(AccessBridge_MousePressedFP fp) { 282 if (theAccessBridgeInitializedFlag == TRUE) { 283 theAccessBridge.SetMousePressed(fp); 284 } 285 } 286 287 void SetMouseReleased(AccessBridge_MouseReleasedFP fp) { 288 if (theAccessBridgeInitializedFlag == TRUE) { 289 theAccessBridge.SetMouseReleased(fp); 290 } 291 } 292 293 294 void SetMenuCanceled(AccessBridge_MenuCanceledFP fp) { 295 if (theAccessBridgeInitializedFlag == TRUE) { 296 theAccessBridge.SetMenuCanceled(fp); 297 } 298 } 299 300 void SetMenuDeselected(AccessBridge_MenuDeselectedFP fp) { 301 if (theAccessBridgeInitializedFlag == TRUE) { 302 theAccessBridge.SetMenuDeselected(fp); 303 } 304 } 305 306 void SetMenuSelected(AccessBridge_MenuSelectedFP fp) { 307 if (theAccessBridgeInitializedFlag == TRUE) { 308 theAccessBridge.SetMenuSelected(fp); 309 } 310 } 311 312 void SetPopupMenuCanceled(AccessBridge_PopupMenuCanceledFP fp) { 313 if (theAccessBridgeInitializedFlag == TRUE) { 314 theAccessBridge.SetPopupMenuCanceled(fp); 315 } 316 } 317 318 void SetPopupMenuWillBecomeInvisible(AccessBridge_PopupMenuWillBecomeInvisibleFP fp) { 319 if (theAccessBridgeInitializedFlag == TRUE) { 320 theAccessBridge.SetPopupMenuWillBecomeInvisible(fp); 321 } 322 } 323 324 void SetPopupMenuWillBecomeVisible(AccessBridge_PopupMenuWillBecomeVisibleFP fp) { 325 if (theAccessBridgeInitializedFlag == TRUE) { 326 theAccessBridge.SetPopupMenuWillBecomeVisible(fp); 327 } 328 } 329 330 331 void SetPropertyNameChange(AccessBridge_PropertyNameChangeFP fp) { 332 if (theAccessBridgeInitializedFlag == TRUE) { 333 theAccessBridge.SetPropertyNameChange(fp); 334 } 335 } 336 337 void SetPropertyDescriptionChange(AccessBridge_PropertyDescriptionChangeFP fp) { 338 if (theAccessBridgeInitializedFlag == TRUE) { 339 theAccessBridge.SetPropertyDescriptionChange(fp); 340 } 341 } 342 343 void SetPropertyStateChange(AccessBridge_PropertyStateChangeFP fp) { 344 if (theAccessBridgeInitializedFlag == TRUE) { 345 theAccessBridge.SetPropertyStateChange(fp); 346 } 347 } 348 349 void SetPropertyValueChange(AccessBridge_PropertyValueChangeFP fp) { 350 if (theAccessBridgeInitializedFlag == TRUE) { 351 theAccessBridge.SetPropertyValueChange(fp); 352 } 353 } 354 355 void SetPropertySelectionChange(AccessBridge_PropertySelectionChangeFP fp) { 356 if (theAccessBridgeInitializedFlag == TRUE) { 357 theAccessBridge.SetPropertySelectionChange(fp); 358 } 359 } 360 361 void SetPropertyTextChange(AccessBridge_PropertyTextChangeFP fp) { 362 if (theAccessBridgeInitializedFlag == TRUE) { 363 theAccessBridge.SetPropertyTextChange(fp); 364 } 365 } 366 367 void SetPropertyCaretChange(AccessBridge_PropertyCaretChangeFP fp) { 368 if (theAccessBridgeInitializedFlag == TRUE) { 369 theAccessBridge.SetPropertyCaretChange(fp); 370 } 371 } 372 373 void SetPropertyVisibleDataChange(AccessBridge_PropertyVisibleDataChangeFP fp) { 374 if (theAccessBridgeInitializedFlag == TRUE) { 375 theAccessBridge.SetPropertyVisibleDataChange(fp); 376 } 377 } 378 379 void SetPropertyChildChange(AccessBridge_PropertyChildChangeFP fp) { 380 if (theAccessBridgeInitializedFlag == TRUE) { 381 theAccessBridge.SetPropertyChildChange(fp); 382 } 383 } 384 385 void SetPropertyActiveDescendentChange(AccessBridge_PropertyActiveDescendentChangeFP fp) { 386 if (theAccessBridgeInitializedFlag == TRUE) { 387 theAccessBridge.SetPropertyActiveDescendentChange(fp); 388 } 389 } 390 391 void SetPropertyTableModelChange(AccessBridge_PropertyTableModelChangeFP fp) { 392 if (theAccessBridgeInitializedFlag == TRUE) { 393 theAccessBridge.SetPropertyTableModelChange(fp); 394 } 395 } 396 397 /** 398 * General routines 399 */ 400 void ReleaseJavaObject(long vmID, Java_Object object) { 401 if (theAccessBridgeInitializedFlag == TRUE) { 402 theAccessBridge.ReleaseJavaObject(vmID, object); 403 } 404 } 405 406 BOOL GetVersionInfo(long vmID, AccessBridgeVersionInfo *info) { 407 if (theAccessBridgeInitializedFlag == TRUE) { 408 return theAccessBridge.GetVersionInfo(vmID, info); 409 } 410 return FALSE; 411 } 412 413 414 /** 415 * Window routines 416 */ 417 BOOL IsJavaWindow(HWND window) { 418 if (theAccessBridgeInitializedFlag == TRUE) { 419 BOOL ret ; 420 ret = theAccessBridge.IsJavaWindow(window); 421 return ret ; 422 423 } 424 return FALSE; 425 } 426 427 428 /** 429 * Returns the virtual machine ID and AccessibleContext for a top-level window 430 */ 431 BOOL GetAccessibleContextFromHWND(HWND target, long *vmID, AccessibleContext *ac) { 432 if (theAccessBridgeInitializedFlag == TRUE) { 433 return theAccessBridge.GetAccessibleContextFromHWND(target, vmID, ac); 434 } 435 return FALSE; 436 } 437 438 /** 439 * Returns the HWND from the AccessibleContext of a top-level window. Returns 0 440 * on error or if the AccessibleContext does not refer to a top-level window. 441 */ 442 HWND getHWNDFromAccessibleContext(long vmID, JOBJECT64 accesibleContext) { 443 if (theAccessBridgeInitializedFlag == TRUE) { 444 return theAccessBridge.getHWNDFromAccessibleContext(vmID, accesibleContext); 445 } 446 return (HWND)0; 447 } 448 449 /** 450 * returns whether two objects are the same 451 */ 452 BOOL IsSameObject(long vmID, JOBJECT64 obj1, JOBJECT64 obj2) { 453 if (theAccessBridgeInitializedFlag == TRUE) { 454 return theAccessBridge.IsSameObject(vmID, obj1, obj2); 455 } 456 return FALSE; 457 } 458 459 /** 460 * Sets editable text contents. The AccessibleContext must implement AccessibleEditableText and 461 * be editable. The maximum text length is MAX_STRING_SIZE - 1. 462 * Returns whether successful 463 */ 464 BOOL setTextContents (const long vmID, const AccessibleContext accessibleContext, const wchar_t *text) { 465 466 if (theAccessBridgeInitializedFlag == TRUE) { 467 return theAccessBridge.setTextContents(vmID, accessibleContext, text); 468 } 469 return FALSE; 470 } 471 472 /** 473 * Returns the Accessible Context with the specified role that is the 474 * ancestor of a given object. The role is one of the role strings 475 * defined in AccessBridgePackages.h 476 * If there is no ancestor object that has the specified role, 477 * returns (AccessibleContext)0. 478 */ 479 AccessibleContext getParentWithRole (const long vmID, const AccessibleContext accessibleContext, 480 const wchar_t *role) { 481 482 if (theAccessBridgeInitializedFlag == TRUE) { 483 return theAccessBridge.getParentWithRole(vmID, accessibleContext, role); 484 } 485 return (AccessibleContext)0; 486 } 487 488 /** 489 * Returns the Accessible Context with the specified role that is the 490 * ancestor of a given object. The role is one of the role strings 491 * defined in AccessBridgePackages.h. If an object with the specified 492 * role does not exist, returns the top level object for the Java Window. 493 * Returns (AccessibleContext)0 on error. 494 */ 495 AccessibleContext getParentWithRoleElseRoot (const long vmID, const AccessibleContext accessibleContext, 496 const wchar_t *role) { 497 498 if (theAccessBridgeInitializedFlag == TRUE) { 499 return theAccessBridge.getParentWithRoleElseRoot(vmID, accessibleContext, role); 500 } 501 return (AccessibleContext)0; 502 } 503 504 /** 505 * Returns the Accessible Context for the top level object in 506 * a Java Window. This is same Accessible Context that is obtained 507 * from GetAccessibleContextFromHWND for that window. Returns 508 * (AccessibleContext)0 on error. 509 */ 510 AccessibleContext getTopLevelObject (const long vmID, const AccessibleContext accessibleContext) { 511 512 if (theAccessBridgeInitializedFlag == TRUE) { 513 return theAccessBridge.getTopLevelObject(vmID, accessibleContext); 514 } 515 return (AccessibleContext)0; 516 } 517 518 /** 519 * Returns how deep in the object hierarchy a given object is. 520 * The top most object in the object hierarchy has an object depth of 0. 521 * Returns -1 on error. 522 */ 523 int getObjectDepth (const long vmID, const AccessibleContext accessibleContext) { 524 525 if (theAccessBridgeInitializedFlag == TRUE) { 526 return theAccessBridge.getObjectDepth(vmID, accessibleContext); 527 } 528 return -1; 529 } 530 531 /** 532 * Returns the Accessible Context of the current ActiveDescendent of an object. 533 * This method assumes the ActiveDescendent is the component that is currently 534 * selected in a container object. 535 * Returns (AccessibleContext)0 on error or if there is no selection. 536 */ 537 AccessibleContext getActiveDescendent (const long vmID, const AccessibleContext accessibleContext) { 538 539 if (theAccessBridgeInitializedFlag == TRUE) { 540 return theAccessBridge.getActiveDescendent(vmID, accessibleContext); 541 } 542 return (AccessibleContext)0; 543 } 544 545 546 /** 547 * Accessible Context routines 548 */ 549 BOOL GetAccessibleContextAt(long vmID, AccessibleContext acParent, 550 jint x, jint y, AccessibleContext *ac) { 551 if (theAccessBridgeInitializedFlag == TRUE) { 552 return theAccessBridge.GetAccessibleContextAt(vmID, acParent, x, y, ac); 553 } 554 return FALSE; 555 } 556 557 BOOL GetAccessibleContextWithFocus(HWND window, long *vmID, AccessibleContext *ac) { 558 if (theAccessBridgeInitializedFlag == TRUE) { 559 return theAccessBridge.GetAccessibleContextWithFocus(window, vmID, ac); 560 } 561 return FALSE; 562 } 563 564 BOOL GetAccessibleContextInfo(long vmID, AccessibleContext ac, AccessibleContextInfo *info) { 565 if (theAccessBridgeInitializedFlag == TRUE) { 566 return theAccessBridge.GetAccessibleContextInfo(vmID, ac, info); 567 } 568 return FALSE; 569 } 570 571 AccessibleContext GetAccessibleChildFromContext(long vmID, AccessibleContext ac, jint index) { 572 if (theAccessBridgeInitializedFlag == TRUE) { 573 return theAccessBridge.GetAccessibleChildFromContext(vmID, ac, index); 574 } 575 return (AccessibleContext) 0; 576 } 577 578 AccessibleContext GetAccessibleParentFromContext(long vmID, AccessibleContext ac) { 579 if (theAccessBridgeInitializedFlag == TRUE) { 580 return theAccessBridge.GetAccessibleParentFromContext(vmID, ac); 581 } 582 return (AccessibleContext) 0; 583 } 584 585 /* begin AccessibleTable routines */ 586 587 /* 588 * get information about an AccessibleTable 589 */ 590 BOOL getAccessibleTableInfo(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo) { 591 if (theAccessBridgeInitializedFlag == TRUE) { 592 return theAccessBridge.getAccessibleTableInfo(vmID, acParent, tableInfo); 593 } 594 return FALSE; 595 } 596 597 /* 598 * get information about an AccessibleTable cell 599 */ 600 BOOL getAccessibleTableCellInfo(long vmID, AccessibleTable accessibleTable, 601 jint row, jint column, AccessibleTableCellInfo *tableCellInfo) { 602 if (theAccessBridgeInitializedFlag == TRUE) { 603 return theAccessBridge.getAccessibleTableCellInfo(vmID, accessibleTable, row, column, tableCellInfo); 604 } 605 return FALSE; 606 } 607 608 /* 609 * get information about an AccessibleTable row header 610 */ 611 BOOL getAccessibleTableRowHeader(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo) { 612 if (theAccessBridgeInitializedFlag == TRUE) { 613 return theAccessBridge.getAccessibleTableRowHeader(vmID, acParent, tableInfo); 614 } 615 return FALSE; 616 } 617 618 /* 619 * get information about an AccessibleTable column header 620 */ 621 BOOL getAccessibleTableColumnHeader(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo) { 622 623 if (theAccessBridgeInitializedFlag == TRUE) { 624 return theAccessBridge.getAccessibleTableColumnHeader(vmID, acParent, tableInfo); 625 } 626 return FALSE; 627 } 628 629 /* 630 * return a description of an AccessibleTable row header 631 */ 632 AccessibleContext getAccessibleTableRowDescription(long vmID, AccessibleContext acParent, jint row) { 633 if (theAccessBridgeInitializedFlag == TRUE) { 634 return theAccessBridge.getAccessibleTableRowDescription(vmID, acParent, row); 635 } 636 return (AccessibleContext)0; 637 } 638 639 /* 640 * return a description of an AccessibleTable column header 641 */ 642 AccessibleContext getAccessibleTableColumnDescription(long vmID, AccessibleContext acParent, jint column) { 643 if (theAccessBridgeInitializedFlag == TRUE) { 644 return theAccessBridge.getAccessibleTableColumnDescription(vmID, acParent, column); 645 } 646 return (AccessibleContext)0; 647 } 648 649 /* 650 * return the number of rows selected in an AccessibleTable 651 */ 652 jint getAccessibleTableRowSelectionCount(long vmID, AccessibleTable table) { 653 if (theAccessBridgeInitializedFlag == TRUE) { 654 return theAccessBridge.getAccessibleTableRowSelectionCount(vmID, table); 655 } 656 return -1; 657 } 658 659 /* 660 * return whether a row is selected in an AccessibleTable 661 */ 662 BOOL isAccessibleTableRowSelected(long vmID, AccessibleTable table, jint row) { 663 if (theAccessBridgeInitializedFlag == TRUE) { 664 return theAccessBridge.isAccessibleTableRowSelected(vmID, table, row); 665 } 666 return FALSE; 667 } 668 669 /* 670 * get an array of selected rows in an AccessibleTable 671 */ 672 BOOL getAccessibleTableRowSelections(long vmID, AccessibleTable table, jint count, jint *selections) { 673 if (theAccessBridgeInitializedFlag == TRUE) { 674 return theAccessBridge.getAccessibleTableRowSelections(vmID, table, count, selections); 675 } 676 return FALSE; 677 } 678 679 /* 680 * return the number of columns selected in an AccessibleTable 681 */ 682 jint getAccessibleTableColumnSelectionCount(long vmID, AccessibleTable table) { 683 if (theAccessBridgeInitializedFlag == TRUE) { 684 return theAccessBridge.getAccessibleTableColumnSelectionCount(vmID, table); 685 } 686 return -1; 687 } 688 689 /* 690 * return whether a column is selected in an AccessibleTable 691 */ 692 BOOL isAccessibleTableColumnSelected(long vmID, AccessibleTable table, jint column) { 693 if (theAccessBridgeInitializedFlag == TRUE) { 694 return theAccessBridge.isAccessibleTableColumnSelected(vmID, table, column); 695 } 696 return FALSE; 697 } 698 699 /* 700 * get an array of columns selected in an AccessibleTable 701 */ 702 BOOL getAccessibleTableColumnSelections(long vmID, AccessibleTable table, jint count, jint *selections) { 703 if (theAccessBridgeInitializedFlag == TRUE) { 704 return theAccessBridge.getAccessibleTableColumnSelections(vmID, table, count, selections); 705 } 706 return FALSE; 707 } 708 709 /* 710 * return the row number for a cell at a given index 711 */ 712 jint 713 getAccessibleTableRow(long vmID, AccessibleTable table, jint index) { 714 if (theAccessBridgeInitializedFlag == TRUE) { 715 return theAccessBridge.getAccessibleTableRow(vmID, table, index); 716 } 717 return -1; 718 } 719 720 /* 721 * return the column number for a cell at a given index 722 */ 723 jint 724 getAccessibleTableColumn(long vmID, AccessibleTable table, jint index) { 725 if (theAccessBridgeInitializedFlag == TRUE) { 726 return theAccessBridge.getAccessibleTableColumn(vmID, table, index); 727 } 728 return -1; 729 } 730 731 /* 732 * return the index of a cell at a given row and column 733 */ 734 jint 735 getAccessibleTableIndex(long vmID, AccessibleTable table, jint row, jint column) { 736 if (theAccessBridgeInitializedFlag == TRUE) { 737 return theAccessBridge.getAccessibleTableIndex(vmID, table, row, column); 738 } 739 return -1; 740 } 741 742 /* end AccessibleTable routines */ 743 744 745 /** 746 * Accessible Text routines 747 */ 748 BOOL GetAccessibleTextInfo(long vmID, AccessibleText at, AccessibleTextInfo *textInfo, jint x, jint y) { 749 if (theAccessBridgeInitializedFlag == TRUE) { 750 return theAccessBridge.GetAccessibleTextInfo(vmID, at, textInfo, x, y); 751 } 752 return FALSE; 753 } 754 755 BOOL GetAccessibleTextItems(long vmID, AccessibleText at, AccessibleTextItemsInfo *textItems, jint index) { 756 if (theAccessBridgeInitializedFlag == TRUE) { 757 return theAccessBridge.GetAccessibleTextItems(vmID, at, textItems, index); 758 } 759 return FALSE; 760 } 761 762 BOOL GetAccessibleTextSelectionInfo(long vmID, AccessibleText at, AccessibleTextSelectionInfo *textSelection) { 763 if (theAccessBridgeInitializedFlag == TRUE) { 764 return theAccessBridge.GetAccessibleTextSelectionInfo(vmID, at, textSelection); 765 } 766 return FALSE; 767 } 768 769 BOOL GetAccessibleTextAttributes(long vmID, AccessibleText at, jint index, AccessibleTextAttributesInfo *attributes) { 770 if (theAccessBridgeInitializedFlag == TRUE) { 771 return theAccessBridge.GetAccessibleTextAttributes(vmID, at, index, attributes); 772 } 773 return FALSE; 774 } 775 776 BOOL GetAccessibleTextRect(long vmID, AccessibleText at, AccessibleTextRectInfo *rectInfo, jint index) { 777 if (theAccessBridgeInitializedFlag == TRUE) { 778 return theAccessBridge.GetAccessibleTextRect(vmID, at, rectInfo, index); 779 } 780 return FALSE; 781 } 782 783 BOOL GetAccessibleTextLineBounds(long vmID, AccessibleText at, jint index, jint *startIndex, jint *endIndex) { 784 if (theAccessBridgeInitializedFlag == TRUE) { 785 return theAccessBridge.GetAccessibleTextLineBounds(vmID, at, index, startIndex, endIndex); 786 } 787 return FALSE; 788 } 789 790 BOOL GetAccessibleTextRange(long vmID, AccessibleText at, jint start, jint end, wchar_t *text, short len) { 791 if (theAccessBridgeInitializedFlag == TRUE) { 792 return theAccessBridge.GetAccessibleTextRange(vmID, at, start, end, text, len); 793 } 794 return FALSE; 795 } 796 797 /** 798 * AccessibleRelationSet routines 799 */ 800 BOOL getAccessibleRelationSet(long vmID, AccessibleContext accessibleContext, 801 AccessibleRelationSetInfo *relationSetInfo) { 802 if (theAccessBridgeInitializedFlag == TRUE) { 803 return theAccessBridge.getAccessibleRelationSet(vmID, accessibleContext, relationSetInfo); 804 } 805 return FALSE; 806 } 807 808 /** 809 * AccessibleHypertext routines 810 */ 811 812 // Gets AccessibleHypertext for an AccessibleContext 813 BOOL getAccessibleHypertext(long vmID, AccessibleContext accessibleContext, 814 AccessibleHypertextInfo *hypertextInfo) { 815 if (theAccessBridgeInitializedFlag == TRUE) { 816 return theAccessBridge.getAccessibleHypertext(vmID, accessibleContext, hypertextInfo); 817 } 818 return FALSE; 819 } 820 821 // Activates an AccessibleHyperlink for an AccessibleContext 822 BOOL activateAccessibleHyperlink(long vmID, AccessibleContext accessibleContext, 823 AccessibleHyperlink accessibleHyperlink) { 824 if (theAccessBridgeInitializedFlag == TRUE) { 825 return theAccessBridge.activateAccessibleHyperlink(vmID, accessibleContext, accessibleHyperlink); 826 } 827 return FALSE; 828 } 829 830 /* 831 * Returns the number of hyperlinks in a component 832 * Maps to AccessibleHypertext.getLinkCount. 833 * Returns -1 on error. 834 */ 835 jint getAccessibleHyperlinkCount(const long vmID, 836 const AccessibleContext accessibleContext) { 837 838 if (theAccessBridgeInitializedFlag == TRUE) { 839 return theAccessBridge.getAccessibleHyperlinkCount(vmID, accessibleContext); 840 } 841 return -1; 842 } 843 844 /* 845 * This method is used to iterate through the hyperlinks in a component. It 846 * returns hypertext information for a component starting at hyperlink index 847 * nStartIndex. No more than MAX_HYPERLINKS AccessibleHypertextInfo objects will 848 * be returned for each call to this method. 849 * returns FALSE on error. 850 */ 851 BOOL getAccessibleHypertextExt(const long vmID, 852 const AccessibleContext accessibleContext, 853 const jint nStartIndex, 854 /* OUT */ AccessibleHypertextInfo *hypertextInfo) { 855 856 if (theAccessBridgeInitializedFlag == TRUE) { 857 return theAccessBridge.getAccessibleHypertextExt(vmID, 858 accessibleContext, 859 nStartIndex, 860 hypertextInfo); 861 } 862 return FALSE; 863 } 864 865 /* 866 * Returns the index into an array of hyperlinks that is associated with 867 * a character index in document; 868 * Maps to AccessibleHypertext.getLinkIndex. 869 * Returns -1 on error. 870 */ 871 jint getAccessibleHypertextLinkIndex(const long vmID, 872 const AccessibleHypertext hypertext, 873 const jint nIndex) { 874 875 if (theAccessBridgeInitializedFlag == TRUE) { 876 return theAccessBridge.getAccessibleHypertextLinkIndex(vmID, 877 hypertext, 878 nIndex); 879 } 880 return -1; 881 } 882 883 /* 884 * Returns the nth hyperlink in a document. 885 * Maps to AccessibleHypertext.getLink. 886 * Returns -1 on error 887 */ 888 BOOL getAccessibleHyperlink(const long vmID, 889 const AccessibleHypertext hypertext, 890 const jint nIndex, 891 /* OUT */ AccessibleHyperlinkInfo *hyperlinkInfo) { 892 893 if (theAccessBridgeInitializedFlag == TRUE) { 894 return theAccessBridge.getAccessibleHyperlink(vmID, 895 hypertext, 896 nIndex, 897 hyperlinkInfo); 898 } 899 return FALSE; 900 } 901 902 903 /* Accessible KeyBindings, Icons and Actions */ 904 BOOL getAccessibleKeyBindings(long vmID, AccessibleContext accessibleContext, 905 AccessibleKeyBindings *keyBindings) { 906 if (theAccessBridgeInitializedFlag == TRUE) { 907 return theAccessBridge.getAccessibleKeyBindings(vmID, accessibleContext, keyBindings); 908 } 909 return FALSE; 910 } 911 912 BOOL getAccessibleIcons(long vmID, AccessibleContext accessibleContext, 913 AccessibleIcons *icons) { 914 if (theAccessBridgeInitializedFlag == TRUE) { 915 return theAccessBridge.getAccessibleIcons(vmID, accessibleContext, icons); 916 } 917 return FALSE; 918 } 919 920 BOOL getAccessibleActions(long vmID, AccessibleContext accessibleContext, 921 AccessibleActions *actions) { 922 if (theAccessBridgeInitializedFlag == TRUE) { 923 return theAccessBridge.getAccessibleActions(vmID, accessibleContext, actions); 924 } 925 return FALSE; 926 } 927 928 BOOL doAccessibleActions(long vmID, AccessibleContext accessibleContext, 929 AccessibleActionsToDo *actionsToDo, jint *failure) { 930 if (theAccessBridgeInitializedFlag == TRUE) { 931 return theAccessBridge.doAccessibleActions(vmID, accessibleContext, actionsToDo, failure); 932 } 933 return FALSE; 934 } 935 936 /** 937 * Accessible Value routines 938 */ 939 BOOL GetCurrentAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len) { 940 if (theAccessBridgeInitializedFlag == TRUE) { 941 return theAccessBridge.GetCurrentAccessibleValueFromContext(vmID, av, value, len); 942 } 943 return FALSE; 944 } 945 946 BOOL GetMaximumAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len) { 947 if (theAccessBridgeInitializedFlag == TRUE) { 948 return theAccessBridge.GetMaximumAccessibleValueFromContext(vmID, av, value, len); 949 } 950 return FALSE; 951 } 952 953 BOOL GetMinimumAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len) { 954 if (theAccessBridgeInitializedFlag == TRUE) { 955 return theAccessBridge.GetMinimumAccessibleValueFromContext(vmID, av, value, len); 956 } 957 return FALSE; 958 } 959 960 961 /** 962 * Accessible Selection routines 963 */ 964 void addAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i) { 965 if (theAccessBridgeInitializedFlag == TRUE) { 966 theAccessBridge.AddAccessibleSelectionFromContext(vmID, as, i); 967 } 968 } 969 970 void clearAccessibleSelectionFromContext(long vmID, AccessibleSelection as) { 971 if (theAccessBridgeInitializedFlag == TRUE) { 972 theAccessBridge.ClearAccessibleSelectionFromContext(vmID, as); 973 } 974 } 975 976 JOBJECT64 GetAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i) { 977 if (theAccessBridgeInitializedFlag == TRUE) { 978 return theAccessBridge.GetAccessibleSelectionFromContext(vmID, as, i); 979 } 980 return (JOBJECT64) 0; 981 } 982 983 int GetAccessibleSelectionCountFromContext(long vmID, AccessibleSelection as) { 984 if (theAccessBridgeInitializedFlag == TRUE) { 985 return theAccessBridge.GetAccessibleSelectionCountFromContext(vmID, as); 986 } 987 return -1; 988 } 989 990 BOOL IsAccessibleChildSelectedFromContext(long vmID, AccessibleSelection as, int i) { 991 if (theAccessBridgeInitializedFlag == TRUE) { 992 return theAccessBridge.IsAccessibleChildSelectedFromContext(vmID, as, i); 993 } 994 return FALSE; 995 } 996 997 void RemoveAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i) { 998 if (theAccessBridgeInitializedFlag == TRUE) { 999 theAccessBridge.RemoveAccessibleSelectionFromContext(vmID, as, i); 1000 } 1001 } 1002 1003 void SelectAllAccessibleSelectionFromContext(long vmID, AccessibleSelection as) { 1004 if (theAccessBridgeInitializedFlag == TRUE) { 1005 theAccessBridge.SelectAllAccessibleSelectionFromContext(vmID, as); 1006 } 1007 } 1008 1009 /** 1010 * Additional methods for Teton 1011 */ 1012 1013 /** 1014 * Gets the AccessibleName for a component based upon the JAWS algorithm. Returns 1015 * whether successful. 1016 * 1017 * Bug ID 4916682 - Implement JAWS AccessibleName policy 1018 */ 1019 BOOL getVirtualAccessibleName(const long vmID, const AccessibleContext accessibleContext, 1020 wchar_t *name, int len) { 1021 if (theAccessBridgeInitializedFlag == TRUE) { 1022 return theAccessBridge.getVirtualAccessibleName(vmID, accessibleContext, name, len); 1023 } 1024 return FALSE; 1025 } 1026 1027 /** 1028 * Request focus for a component. Returns whether successful; 1029 * 1030 * Bug ID 4944757 - requestFocus method needed 1031 */ 1032 BOOL requestFocus(const long vmID, const AccessibleContext accessibleContext) { 1033 if (theAccessBridgeInitializedFlag == TRUE) { 1034 return theAccessBridge.requestFocus(vmID, accessibleContext); 1035 } 1036 return FALSE; 1037 } 1038 1039 /** 1040 * Selects text between two indices. Selection includes the text at the start index 1041 * and the text at the end index. Returns whether successful; 1042 * 1043 * Bug ID 4944758 - selectTextRange method needed 1044 */ 1045 BOOL selectTextRange(const long vmID, const AccessibleContext accessibleContext, 1046 const int startIndex, const int endIndex) { 1047 if (theAccessBridgeInitializedFlag == TRUE) { 1048 return theAccessBridge.selectTextRange(vmID, accessibleContext, startIndex, endIndex); 1049 } 1050 return FALSE; 1051 } 1052 1053 /** 1054 * Get text attributes between two indices. The attribute list includes the text at the 1055 * start index and the text at the end index. Returns whether successful; 1056 * 1057 * Bug ID 4944761 - getTextAttributes between two indices method needed 1058 */ 1059 BOOL getTextAttributesInRange(const long vmID, const AccessibleContext accessibleContext, 1060 const int startIndex, const int endIndex, 1061 AccessibleTextAttributesInfo *attributes, short *len) { 1062 if (theAccessBridgeInitializedFlag == TRUE) { 1063 return theAccessBridge.getTextAttributesInRange(vmID, accessibleContext, startIndex, 1064 endIndex, attributes, len); 1065 } 1066 return FALSE; 1067 } 1068 1069 /** 1070 * Returns the number of visible children of a component. Returns -1 on error. 1071 * 1072 * Bug ID 4944762- getVisibleChildren for list-like components needed 1073 */ 1074 int getVisibleChildrenCount(const long vmID, const AccessibleContext accessibleContext) { 1075 if (theAccessBridgeInitializedFlag == TRUE) { 1076 return theAccessBridge.getVisibleChildrenCount(vmID, accessibleContext); 1077 } 1078 return FALSE; 1079 } 1080 1081 /** 1082 * Gets the visible children of an AccessibleContext. Returns whether successful; 1083 * 1084 * Bug ID 4944762- getVisibleChildren for list-like components needed 1085 */ 1086 BOOL getVisibleChildren(const long vmID, const AccessibleContext accessibleContext, 1087 const int startIndex, VisibleChildrenInfo *visibleChildrenInfo) { 1088 if (theAccessBridgeInitializedFlag == TRUE) { 1089 return theAccessBridge.getVisibleChildren(vmID, accessibleContext, startIndex, 1090 visibleChildrenInfo); 1091 } 1092 return FALSE; 1093 } 1094 1095 /** 1096 * Set the caret to a text position. Returns whether successful; 1097 * 1098 * Bug ID 4944770 - setCaretPosition method needed 1099 */ 1100 BOOL setCaretPosition(const long vmID, const AccessibleContext accessibleContext, 1101 const int position) { 1102 if (theAccessBridgeInitializedFlag == TRUE) { 1103 return theAccessBridge.setCaretPosition(vmID, accessibleContext, position); 1104 } 1105 return FALSE; 1106 } 1107 1108 /** 1109 * Gets the text caret location 1110 */ 1111 BOOL getCaretLocation(long vmID, AccessibleContext ac, AccessibleTextRectInfo *rectInfo, jint index) { 1112 if (theAccessBridgeInitializedFlag == TRUE) { 1113 return theAccessBridge.getCaretLocation(vmID, ac, rectInfo, index); 1114 } 1115 return FALSE; 1116 } 1117 1118 /** 1119 * Gets the number of events waiting to fire 1120 */ 1121 int getEventsWaiting() { 1122 if (theAccessBridgeInitializedFlag == TRUE) { 1123 return theAccessBridge.getEventsWaiting(); 1124 } 1125 return FALSE; 1126 } 1127 1128 #ifdef __cplusplus 1129 } 1130 #endif