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