| /* | |
| * | |
| * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved. | |
| * | |
| * Redistribution and use in source and binary forms, with or without | |
| * modification, are permitted provided that the following conditions | |
| * are met: | |
| * | |
| * - Redistributions of source code must retain the above copyright | |
| * notice, this list of conditions and the following disclaimer. | |
| * | |
| * - Redistributions in binary form must reproduce the above copyright | |
| * notice, this list of conditions and the following disclaimer in the | |
| * documentation and/or other materials provided with the distribution. | |
| * | |
| * - Neither the name of Oracle nor the names of its | |
| * contributors may be used to endorse or promote products derived | |
| * from this software without specific prior written permission. | |
| * | |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS | |
| * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, | |
| * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | |
| * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR | |
| * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | |
| * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | |
| * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | |
| * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |
| * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | |
| * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | |
| * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
| */ | |
| /* | |
| * Wrapper functions around calls to the AccessBridge DLL | |
| */ | |
| #include <windows.h> | |
| #include <jni.h> | |
| //#define ACCESSBRIDGE_32 | |
| //#define ACCESSBRIDGE_64 | |
| #include "AccessBridgeCalls.h" | |
| #ifdef __cplusplus | |
| extern "C" { | |
| #endif | |
| HINSTANCE theAccessBridgeInstance; | |
| AccessBridgeFPs theAccessBridge; | |
| BOOL theAccessBridgeInitializedFlag = FALSE; | |
| #define LOAD_FP(result, type, name) \ | |
| if ((theAccessBridge.result = \ | |
| (type) GetProcAddress(theAccessBridgeInstance, name)) == (type) 0) { \ | |
| return FALSE; \ | |
| } | |
| BOOL initializeAccessBridge() { | |
| #ifdef ACCESSBRIDGE_ARCH_32 // For 32 bit AT interfacing with Java on 64 bit OS | |
| theAccessBridgeInstance = LoadLibrary("WINDOWSACCESSBRIDGE-32"); | |
| #else | |
| #ifdef ACCESSBRIDGE_ARCH_64 // For 64 bit AT interfacing with Java on 64 bit OS | |
| theAccessBridgeInstance = LoadLibrary("WINDOWSACCESSBRIDGE-64"); | |
| #else // For 32 bit AT interfacing with Java on 32 bit OS | |
| theAccessBridgeInstance = LoadLibrary("WINDOWSACCESSBRIDGE"); | |
| #endif | |
| #endif | |
| if (theAccessBridgeInstance != 0) { | |
| LOAD_FP(Windows_run, Windows_runFP, "Windows_run"); | |
| LOAD_FP(SetJavaShutdown, SetJavaShutdownFP, "setJavaShutdownFP"); | |
| LOAD_FP(SetFocusGained, SetFocusGainedFP, "setFocusGainedFP"); | |
| LOAD_FP(SetFocusLost, SetFocusLostFP, "setFocusLostFP"); | |
| LOAD_FP(SetCaretUpdate, SetCaretUpdateFP, "setCaretUpdateFP"); | |
| LOAD_FP(SetMouseClicked, SetMouseClickedFP, "setMouseClickedFP"); | |
| LOAD_FP(SetMouseEntered, SetMouseEnteredFP, "setMouseEnteredFP"); | |
| LOAD_FP(SetMouseExited, SetMouseExitedFP, "setMouseExitedFP"); | |
| LOAD_FP(SetMousePressed, SetMousePressedFP, "setMousePressedFP"); | |
| LOAD_FP(SetMouseReleased, SetMouseReleasedFP, "setMouseReleasedFP"); | |
| LOAD_FP(SetMenuCanceled, SetMenuCanceledFP, "setMenuCanceledFP"); | |
| LOAD_FP(SetMenuDeselected, SetMenuDeselectedFP, "setMenuDeselectedFP"); | |
| LOAD_FP(SetMenuSelected, SetMenuSelectedFP, "setMenuSelectedFP"); | |
| LOAD_FP(SetPopupMenuCanceled, SetPopupMenuCanceledFP, "setPopupMenuCanceledFP"); | |
| LOAD_FP(SetPopupMenuWillBecomeInvisible, SetPopupMenuWillBecomeInvisibleFP, "setPopupMenuWillBecomeInvisibleFP"); | |
| LOAD_FP(SetPopupMenuWillBecomeVisible, SetPopupMenuWillBecomeVisibleFP, "setPopupMenuWillBecomeVisibleFP"); | |
| LOAD_FP(SetPropertyNameChange, SetPropertyNameChangeFP, "setPropertyNameChangeFP"); | |
| LOAD_FP(SetPropertyDescriptionChange, SetPropertyDescriptionChangeFP, "setPropertyDescriptionChangeFP"); | |
| LOAD_FP(SetPropertyStateChange, SetPropertyStateChangeFP, "setPropertyStateChangeFP"); | |
| LOAD_FP(SetPropertyValueChange, SetPropertyValueChangeFP, "setPropertyValueChangeFP"); | |
| LOAD_FP(SetPropertySelectionChange, SetPropertySelectionChangeFP, "setPropertySelectionChangeFP"); | |
| LOAD_FP(SetPropertyTextChange, SetPropertyTextChangeFP, "setPropertyTextChangeFP"); | |
| LOAD_FP(SetPropertyCaretChange, SetPropertyCaretChangeFP, "setPropertyCaretChangeFP"); | |
| LOAD_FP(SetPropertyVisibleDataChange, SetPropertyVisibleDataChangeFP, "setPropertyVisibleDataChangeFP"); | |
| LOAD_FP(SetPropertyChildChange, SetPropertyChildChangeFP, "setPropertyChildChangeFP"); | |
| LOAD_FP(SetPropertyActiveDescendentChange, SetPropertyActiveDescendentChangeFP, "setPropertyActiveDescendentChangeFP"); | |
| LOAD_FP(SetPropertyTableModelChange, SetPropertyTableModelChangeFP, "setPropertyTableModelChangeFP"); | |
| LOAD_FP(ReleaseJavaObject, ReleaseJavaObjectFP, "releaseJavaObject"); | |
| LOAD_FP(GetVersionInfo, GetVersionInfoFP, "getVersionInfo"); | |
| LOAD_FP(IsJavaWindow, IsJavaWindowFP, "isJavaWindow"); | |
| LOAD_FP(IsSameObject, IsSameObjectFP, "isSameObject"); | |
| LOAD_FP(GetAccessibleContextFromHWND, GetAccessibleContextFromHWNDFP, "getAccessibleContextFromHWND"); | |
| LOAD_FP(getHWNDFromAccessibleContext, getHWNDFromAccessibleContextFP, "getHWNDFromAccessibleContext"); | |
| LOAD_FP(GetAccessibleContextAt, GetAccessibleContextAtFP, "getAccessibleContextAt"); | |
| LOAD_FP(GetAccessibleContextWithFocus, GetAccessibleContextWithFocusFP, "getAccessibleContextWithFocus"); | |
| LOAD_FP(GetAccessibleContextInfo, GetAccessibleContextInfoFP, "getAccessibleContextInfo"); | |
| LOAD_FP(GetAccessibleChildFromContext, GetAccessibleChildFromContextFP, "getAccessibleChildFromContext"); | |
| LOAD_FP(GetAccessibleParentFromContext, GetAccessibleParentFromContextFP, "getAccessibleParentFromContext"); | |
| /* begin AccessibleTable */ | |
| LOAD_FP(getAccessibleTableInfo, getAccessibleTableInfoFP, "getAccessibleTableInfo"); | |
| LOAD_FP(getAccessibleTableCellInfo, getAccessibleTableCellInfoFP, "getAccessibleTableCellInfo"); | |
| LOAD_FP(getAccessibleTableRowHeader, getAccessibleTableRowHeaderFP, "getAccessibleTableRowHeader"); | |
| LOAD_FP(getAccessibleTableColumnHeader, getAccessibleTableColumnHeaderFP, "getAccessibleTableColumnHeader"); | |
| LOAD_FP(getAccessibleTableRowDescription, getAccessibleTableRowDescriptionFP, "getAccessibleTableRowDescription"); | |
| LOAD_FP(getAccessibleTableColumnDescription, getAccessibleTableColumnDescriptionFP, "getAccessibleTableColumnDescription"); | |
| LOAD_FP(getAccessibleTableRowSelectionCount, getAccessibleTableRowSelectionCountFP, | |
| "getAccessibleTableRowSelectionCount"); | |
| LOAD_FP(isAccessibleTableRowSelected, isAccessibleTableRowSelectedFP, | |
| "isAccessibleTableRowSelected"); | |
| LOAD_FP(getAccessibleTableRowSelections, getAccessibleTableRowSelectionsFP, | |
| "getAccessibleTableRowSelections"); | |
| LOAD_FP(getAccessibleTableColumnSelectionCount, getAccessibleTableColumnSelectionCountFP, | |
| "getAccessibleTableColumnSelectionCount"); | |
| LOAD_FP(isAccessibleTableColumnSelected, isAccessibleTableColumnSelectedFP, | |
| "isAccessibleTableColumnSelected"); | |
| LOAD_FP(getAccessibleTableColumnSelections, getAccessibleTableColumnSelectionsFP, | |
| "getAccessibleTableColumnSelections"); | |
| LOAD_FP(getAccessibleTableRow, getAccessibleTableRowFP, | |
| "getAccessibleTableRow"); | |
| LOAD_FP(getAccessibleTableColumn, getAccessibleTableColumnFP, | |
| "getAccessibleTableColumn"); | |
| LOAD_FP(getAccessibleTableIndex, getAccessibleTableIndexFP, | |
| "getAccessibleTableIndex"); | |
| /* end AccessibleTable */ | |
| /* AccessibleRelationSet */ | |
| LOAD_FP(getAccessibleRelationSet, getAccessibleRelationSetFP, "getAccessibleRelationSet"); | |
| /* AccessibleHypertext */ | |
| LOAD_FP(getAccessibleHypertext, getAccessibleHypertextFP, "getAccessibleHypertext"); | |
| LOAD_FP(activateAccessibleHyperlink, activateAccessibleHyperlinkFP, "activateAccessibleHyperlink"); | |
| LOAD_FP(getAccessibleHyperlinkCount, getAccessibleHyperlinkCountFP, "getAccessibleHyperlinkCount"); | |
| LOAD_FP(getAccessibleHypertextExt, getAccessibleHypertextExtFP, "getAccessibleHypertextExt"); | |
| LOAD_FP(getAccessibleHypertextLinkIndex, getAccessibleHypertextLinkIndexFP, "getAccessibleHypertextLinkIndex"); | |
| LOAD_FP(getAccessibleHyperlink, getAccessibleHyperlinkFP, "getAccessibleHyperlink"); | |
| /* Accessible KeyBinding, Icon and Action */ | |
| LOAD_FP(getAccessibleKeyBindings, getAccessibleKeyBindingsFP, "getAccessibleKeyBindings"); | |
| LOAD_FP(getAccessibleIcons, getAccessibleIconsFP, "getAccessibleIcons"); | |
| LOAD_FP(getAccessibleActions, getAccessibleActionsFP, "getAccessibleActions"); | |
| LOAD_FP(doAccessibleActions, doAccessibleActionsFP, "doAccessibleActions"); | |
| /* AccessibleText */ | |
| LOAD_FP(GetAccessibleTextInfo, GetAccessibleTextInfoFP, "getAccessibleTextInfo"); | |
| LOAD_FP(GetAccessibleTextItems, GetAccessibleTextItemsFP, "getAccessibleTextItems"); | |
| LOAD_FP(GetAccessibleTextSelectionInfo, GetAccessibleTextSelectionInfoFP, "getAccessibleTextSelectionInfo"); | |
| LOAD_FP(GetAccessibleTextAttributes, GetAccessibleTextAttributesFP, "getAccessibleTextAttributes"); | |
| LOAD_FP(GetAccessibleTextRect, GetAccessibleTextRectFP, "getAccessibleTextRect"); | |
| LOAD_FP(GetAccessibleTextLineBounds, GetAccessibleTextLineBoundsFP, "getAccessibleTextLineBounds"); | |
| LOAD_FP(GetAccessibleTextRange, GetAccessibleTextRangeFP, "getAccessibleTextRange"); | |
| LOAD_FP(GetCurrentAccessibleValueFromContext, GetCurrentAccessibleValueFromContextFP, "getCurrentAccessibleValueFromContext"); | |
| LOAD_FP(GetMaximumAccessibleValueFromContext, GetMaximumAccessibleValueFromContextFP, "getMaximumAccessibleValueFromContext"); | |
| LOAD_FP(GetMinimumAccessibleValueFromContext, GetMinimumAccessibleValueFromContextFP, "getMinimumAccessibleValueFromContext"); | |
| LOAD_FP(AddAccessibleSelectionFromContext, AddAccessibleSelectionFromContextFP, "addAccessibleSelectionFromContext"); | |
| LOAD_FP(ClearAccessibleSelectionFromContext, ClearAccessibleSelectionFromContextFP, "clearAccessibleSelectionFromContext"); | |
| LOAD_FP(GetAccessibleSelectionFromContext, GetAccessibleSelectionFromContextFP, "getAccessibleSelectionFromContext"); | |
| LOAD_FP(GetAccessibleSelectionCountFromContext, GetAccessibleSelectionCountFromContextFP, "getAccessibleSelectionCountFromContext"); | |
| LOAD_FP(IsAccessibleChildSelectedFromContext, IsAccessibleChildSelectedFromContextFP, "isAccessibleChildSelectedFromContext"); | |
| LOAD_FP(RemoveAccessibleSelectionFromContext, RemoveAccessibleSelectionFromContextFP, "removeAccessibleSelectionFromContext"); | |
| LOAD_FP(SelectAllAccessibleSelectionFromContext, SelectAllAccessibleSelectionFromContextFP, "selectAllAccessibleSelectionFromContext"); | |
| LOAD_FP(setTextContents, setTextContentsFP, "setTextContents"); | |
| LOAD_FP(getParentWithRole, getParentWithRoleFP, "getParentWithRole"); | |
| LOAD_FP(getTopLevelObject, getTopLevelObjectFP, "getTopLevelObject"); | |
| LOAD_FP(getParentWithRoleElseRoot, getParentWithRoleElseRootFP, "getParentWithRoleElseRoot"); | |
| LOAD_FP(getObjectDepth, getObjectDepthFP, "getObjectDepth"); | |
| LOAD_FP(getActiveDescendent, getActiveDescendentFP, "getActiveDescendent"); | |
| // additional methods for Teton | |
| LOAD_FP(getVirtualAccessibleName, getVirtualAccessibleNameFP, "getVirtualAccessibleName"); | |
| LOAD_FP(requestFocus, requestFocusFP, "requestFocus"); | |
| LOAD_FP(selectTextRange, selectTextRangeFP, "selectTextRange"); | |
| LOAD_FP(getTextAttributesInRange, getTextAttributesInRangeFP, "getTextAttributesInRange"); | |
| LOAD_FP(getVisibleChildrenCount, getVisibleChildrenCountFP, "getVisibleChildrenCount"); | |
| LOAD_FP(getVisibleChildren, getVisibleChildrenFP, "getVisibleChildren"); | |
| LOAD_FP(setCaretPosition, setCaretPositionFP, "setCaretPosition"); | |
| LOAD_FP(getCaretLocation, getCaretLocationFP, "getCaretLocation"); | |
| LOAD_FP(getEventsWaiting, getEventsWaitingFP, "getEventsWaiting"); | |
| theAccessBridge.Windows_run(); | |
| theAccessBridgeInitializedFlag = TRUE; | |
| return TRUE; | |
| } else { | |
| return FALSE; | |
| } | |
| } | |
| BOOL shutdownAccessBridge() { | |
| BOOL result; | |
| DWORD error; | |
| theAccessBridgeInitializedFlag = FALSE; | |
| if (theAccessBridgeInstance != (HANDLE) 0) { | |
| result = FreeLibrary(theAccessBridgeInstance); | |
| if (result != TRUE) { | |
| error = GetLastError(); | |
| } | |
| return TRUE; | |
| } | |
| return FALSE; | |
| } | |
| void SetJavaShutdown(AccessBridge_JavaShutdownFP fp) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.SetJavaShutdown(fp); | |
| } | |
| } | |
| void SetFocusGained(AccessBridge_FocusGainedFP fp) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.SetFocusGained(fp); | |
| } | |
| } | |
| void SetFocusLost(AccessBridge_FocusLostFP fp) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.SetFocusLost(fp); | |
| } | |
| } | |
| void SetCaretUpdate(AccessBridge_CaretUpdateFP fp) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.SetCaretUpdate(fp); | |
| } | |
| } | |
| void SetMouseClicked(AccessBridge_MouseClickedFP fp) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.SetMouseClicked(fp); | |
| } | |
| } | |
| void SetMouseEntered(AccessBridge_MouseEnteredFP fp) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.SetMouseEntered(fp); | |
| } | |
| } | |
| void SetMouseExited(AccessBridge_MouseExitedFP fp) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.SetMouseExited(fp); | |
| } | |
| } | |
| void SetMousePressed(AccessBridge_MousePressedFP fp) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.SetMousePressed(fp); | |
| } | |
| } | |
| void SetMouseReleased(AccessBridge_MouseReleasedFP fp) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.SetMouseReleased(fp); | |
| } | |
| } | |
| void SetMenuCanceled(AccessBridge_MenuCanceledFP fp) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.SetMenuCanceled(fp); | |
| } | |
| } | |
| void SetMenuDeselected(AccessBridge_MenuDeselectedFP fp) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.SetMenuDeselected(fp); | |
| } | |
| } | |
| void SetMenuSelected(AccessBridge_MenuSelectedFP fp) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.SetMenuSelected(fp); | |
| } | |
| } | |
| void SetPopupMenuCanceled(AccessBridge_PopupMenuCanceledFP fp) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.SetPopupMenuCanceled(fp); | |
| } | |
| } | |
| void SetPopupMenuWillBecomeInvisible(AccessBridge_PopupMenuWillBecomeInvisibleFP fp) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.SetPopupMenuWillBecomeInvisible(fp); | |
| } | |
| } | |
| void SetPopupMenuWillBecomeVisible(AccessBridge_PopupMenuWillBecomeVisibleFP fp) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.SetPopupMenuWillBecomeVisible(fp); | |
| } | |
| } | |
| void SetPropertyNameChange(AccessBridge_PropertyNameChangeFP fp) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.SetPropertyNameChange(fp); | |
| } | |
| } | |
| void SetPropertyDescriptionChange(AccessBridge_PropertyDescriptionChangeFP fp) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.SetPropertyDescriptionChange(fp); | |
| } | |
| } | |
| void SetPropertyStateChange(AccessBridge_PropertyStateChangeFP fp) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.SetPropertyStateChange(fp); | |
| } | |
| } | |
| void SetPropertyValueChange(AccessBridge_PropertyValueChangeFP fp) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.SetPropertyValueChange(fp); | |
| } | |
| } | |
| void SetPropertySelectionChange(AccessBridge_PropertySelectionChangeFP fp) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.SetPropertySelectionChange(fp); | |
| } | |
| } | |
| void SetPropertyTextChange(AccessBridge_PropertyTextChangeFP fp) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.SetPropertyTextChange(fp); | |
| } | |
| } | |
| void SetPropertyCaretChange(AccessBridge_PropertyCaretChangeFP fp) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.SetPropertyCaretChange(fp); | |
| } | |
| } | |
| void SetPropertyVisibleDataChange(AccessBridge_PropertyVisibleDataChangeFP fp) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.SetPropertyVisibleDataChange(fp); | |
| } | |
| } | |
| void SetPropertyChildChange(AccessBridge_PropertyChildChangeFP fp) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.SetPropertyChildChange(fp); | |
| } | |
| } | |
| void SetPropertyActiveDescendentChange(AccessBridge_PropertyActiveDescendentChangeFP fp) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.SetPropertyActiveDescendentChange(fp); | |
| } | |
| } | |
| void SetPropertyTableModelChange(AccessBridge_PropertyTableModelChangeFP fp) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.SetPropertyTableModelChange(fp); | |
| } | |
| } | |
| /** | |
| * General routines | |
| */ | |
| void ReleaseJavaObject(long vmID, Java_Object object) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.ReleaseJavaObject(vmID, object); | |
| } | |
| } | |
| BOOL GetVersionInfo(long vmID, AccessBridgeVersionInfo *info) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.GetVersionInfo(vmID, info); | |
| } | |
| return FALSE; | |
| } | |
| /** | |
| * Window routines | |
| */ | |
| BOOL IsJavaWindow(HWND window) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| BOOL ret ; | |
| ret = theAccessBridge.IsJavaWindow(window); | |
| return ret ; | |
| } | |
| return FALSE; | |
| } | |
| /** | |
| * Returns the virtual machine ID and AccessibleContext for a top-level window | |
| */ | |
| BOOL GetAccessibleContextFromHWND(HWND target, long *vmID, AccessibleContext *ac) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.GetAccessibleContextFromHWND(target, vmID, ac); | |
| } | |
| return FALSE; | |
| } | |
| /** | |
| * Returns the HWND from the AccessibleContext of a top-level window. Returns 0 | |
| * on error or if the AccessibleContext does not refer to a top-level window. | |
| */ | |
| HWND getHWNDFromAccessibleContext(long vmID, JOBJECT64 accesibleContext) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getHWNDFromAccessibleContext(vmID, accesibleContext); | |
| } | |
| return (HWND)0; | |
| } | |
| /** | |
| * returns whether two objects are the same | |
| */ | |
| BOOL IsSameObject(long vmID, JOBJECT64 obj1, JOBJECT64 obj2) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.IsSameObject(vmID, obj1, obj2); | |
| } | |
| return FALSE; | |
| } | |
| /** | |
| * Sets editable text contents. The AccessibleContext must implement AccessibleEditableText and | |
| * be editable. The maximum text length is MAX_STRING_SIZE - 1. | |
| * Returns whether successful | |
| */ | |
| BOOL setTextContents (const long vmID, const AccessibleContext accessibleContext, const wchar_t *text) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.setTextContents(vmID, accessibleContext, text); | |
| } | |
| return FALSE; | |
| } | |
| /** | |
| * Returns the Accessible Context with the specified role that is the | |
| * ancestor of a given object. The role is one of the role strings | |
| * defined in AccessBridgePackages.h | |
| * If there is no ancestor object that has the specified role, | |
| * returns (AccessibleContext)0. | |
| */ | |
| AccessibleContext getParentWithRole (const long vmID, const AccessibleContext accessibleContext, | |
| const wchar_t *role) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getParentWithRole(vmID, accessibleContext, role); | |
| } | |
| return (AccessibleContext)0; | |
| } | |
| /** | |
| * Returns the Accessible Context with the specified role that is the | |
| * ancestor of a given object. The role is one of the role strings | |
| * defined in AccessBridgePackages.h. If an object with the specified | |
| * role does not exist, returns the top level object for the Java Window. | |
| * Returns (AccessibleContext)0 on error. | |
| */ | |
| AccessibleContext getParentWithRoleElseRoot (const long vmID, const AccessibleContext accessibleContext, | |
| const wchar_t *role) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getParentWithRoleElseRoot(vmID, accessibleContext, role); | |
| } | |
| return (AccessibleContext)0; | |
| } | |
| /** | |
| * Returns the Accessible Context for the top level object in | |
| * a Java Window. This is same Accessible Context that is obtained | |
| * from GetAccessibleContextFromHWND for that window. Returns | |
| * (AccessibleContext)0 on error. | |
| */ | |
| AccessibleContext getTopLevelObject (const long vmID, const AccessibleContext accessibleContext) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getTopLevelObject(vmID, accessibleContext); | |
| } | |
| return (AccessibleContext)0; | |
| } | |
| /** | |
| * Returns how deep in the object hierarchy a given object is. | |
| * The top most object in the object hierarchy has an object depth of 0. | |
| * Returns -1 on error. | |
| */ | |
| int getObjectDepth (const long vmID, const AccessibleContext accessibleContext) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getObjectDepth(vmID, accessibleContext); | |
| } | |
| return -1; | |
| } | |
| /** | |
| * Returns the Accessible Context of the current ActiveDescendent of an object. | |
| * This method assumes the ActiveDescendent is the component that is currently | |
| * selected in a container object. | |
| * Returns (AccessibleContext)0 on error or if there is no selection. | |
| */ | |
| AccessibleContext getActiveDescendent (const long vmID, const AccessibleContext accessibleContext) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getActiveDescendent(vmID, accessibleContext); | |
| } | |
| return (AccessibleContext)0; | |
| } | |
| /** | |
| * Accessible Context routines | |
| */ | |
| BOOL GetAccessibleContextAt(long vmID, AccessibleContext acParent, | |
| jint x, jint y, AccessibleContext *ac) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.GetAccessibleContextAt(vmID, acParent, x, y, ac); | |
| } | |
| return FALSE; | |
| } | |
| BOOL GetAccessibleContextWithFocus(HWND window, long *vmID, AccessibleContext *ac) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.GetAccessibleContextWithFocus(window, vmID, ac); | |
| } | |
| return FALSE; | |
| } | |
| BOOL GetAccessibleContextInfo(long vmID, AccessibleContext ac, AccessibleContextInfo *info) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.GetAccessibleContextInfo(vmID, ac, info); | |
| } | |
| return FALSE; | |
| } | |
| AccessibleContext GetAccessibleChildFromContext(long vmID, AccessibleContext ac, jint index) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.GetAccessibleChildFromContext(vmID, ac, index); | |
| } | |
| return (AccessibleContext) 0; | |
| } | |
| AccessibleContext GetAccessibleParentFromContext(long vmID, AccessibleContext ac) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.GetAccessibleParentFromContext(vmID, ac); | |
| } | |
| return (AccessibleContext) 0; | |
| } | |
| /* begin AccessibleTable routines */ | |
| /* | |
| * get information about an AccessibleTable | |
| */ | |
| BOOL getAccessibleTableInfo(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getAccessibleTableInfo(vmID, acParent, tableInfo); | |
| } | |
| return FALSE; | |
| } | |
| /* | |
| * get information about an AccessibleTable cell | |
| */ | |
| BOOL getAccessibleTableCellInfo(long vmID, AccessibleTable accessibleTable, | |
| jint row, jint column, AccessibleTableCellInfo *tableCellInfo) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getAccessibleTableCellInfo(vmID, accessibleTable, row, column, tableCellInfo); | |
| } | |
| return FALSE; | |
| } | |
| /* | |
| * get information about an AccessibleTable row header | |
| */ | |
| BOOL getAccessibleTableRowHeader(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getAccessibleTableRowHeader(vmID, acParent, tableInfo); | |
| } | |
| return FALSE; | |
| } | |
| /* | |
| * get information about an AccessibleTable column header | |
| */ | |
| BOOL getAccessibleTableColumnHeader(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getAccessibleTableColumnHeader(vmID, acParent, tableInfo); | |
| } | |
| return FALSE; | |
| } | |
| /* | |
| * return a description of an AccessibleTable row header | |
| */ | |
| AccessibleContext getAccessibleTableRowDescription(long vmID, AccessibleContext acParent, jint row) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getAccessibleTableRowDescription(vmID, acParent, row); | |
| } | |
| return (AccessibleContext)0; | |
| } | |
| /* | |
| * return a description of an AccessibleTable column header | |
| */ | |
| AccessibleContext getAccessibleTableColumnDescription(long vmID, AccessibleContext acParent, jint column) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getAccessibleTableColumnDescription(vmID, acParent, column); | |
| } | |
| return (AccessibleContext)0; | |
| } | |
| /* | |
| * return the number of rows selected in an AccessibleTable | |
| */ | |
| jint getAccessibleTableRowSelectionCount(long vmID, AccessibleTable table) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getAccessibleTableRowSelectionCount(vmID, table); | |
| } | |
| return -1; | |
| } | |
| /* | |
| * return whether a row is selected in an AccessibleTable | |
| */ | |
| BOOL isAccessibleTableRowSelected(long vmID, AccessibleTable table, jint row) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.isAccessibleTableRowSelected(vmID, table, row); | |
| } | |
| return FALSE; | |
| } | |
| /* | |
| * get an array of selected rows in an AccessibleTable | |
| */ | |
| BOOL getAccessibleTableRowSelections(long vmID, AccessibleTable table, jint count, jint *selections) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getAccessibleTableRowSelections(vmID, table, count, selections); | |
| } | |
| return FALSE; | |
| } | |
| /* | |
| * return the number of columns selected in an AccessibleTable | |
| */ | |
| jint getAccessibleTableColumnSelectionCount(long vmID, AccessibleTable table) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getAccessibleTableColumnSelectionCount(vmID, table); | |
| } | |
| return -1; | |
| } | |
| /* | |
| * return whether a column is selected in an AccessibleTable | |
| */ | |
| BOOL isAccessibleTableColumnSelected(long vmID, AccessibleTable table, jint column) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.isAccessibleTableColumnSelected(vmID, table, column); | |
| } | |
| return FALSE; | |
| } | |
| /* | |
| * get an array of columns selected in an AccessibleTable | |
| */ | |
| BOOL getAccessibleTableColumnSelections(long vmID, AccessibleTable table, jint count, jint *selections) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getAccessibleTableColumnSelections(vmID, table, count, selections); | |
| } | |
| return FALSE; | |
| } | |
| /* | |
| * return the row number for a cell at a given index | |
| */ | |
| jint | |
| getAccessibleTableRow(long vmID, AccessibleTable table, jint index) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getAccessibleTableRow(vmID, table, index); | |
| } | |
| return -1; | |
| } | |
| /* | |
| * return the column number for a cell at a given index | |
| */ | |
| jint | |
| getAccessibleTableColumn(long vmID, AccessibleTable table, jint index) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getAccessibleTableColumn(vmID, table, index); | |
| } | |
| return -1; | |
| } | |
| /* | |
| * return the index of a cell at a given row and column | |
| */ | |
| jint | |
| getAccessibleTableIndex(long vmID, AccessibleTable table, jint row, jint column) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getAccessibleTableIndex(vmID, table, row, column); | |
| } | |
| return -1; | |
| } | |
| /* end AccessibleTable routines */ | |
| /** | |
| * Accessible Text routines | |
| */ | |
| BOOL GetAccessibleTextInfo(long vmID, AccessibleText at, AccessibleTextInfo *textInfo, jint x, jint y) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.GetAccessibleTextInfo(vmID, at, textInfo, x, y); | |
| } | |
| return FALSE; | |
| } | |
| BOOL GetAccessibleTextItems(long vmID, AccessibleText at, AccessibleTextItemsInfo *textItems, jint index) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.GetAccessibleTextItems(vmID, at, textItems, index); | |
| } | |
| return FALSE; | |
| } | |
| BOOL GetAccessibleTextSelectionInfo(long vmID, AccessibleText at, AccessibleTextSelectionInfo *textSelection) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.GetAccessibleTextSelectionInfo(vmID, at, textSelection); | |
| } | |
| return FALSE; | |
| } | |
| BOOL GetAccessibleTextAttributes(long vmID, AccessibleText at, jint index, AccessibleTextAttributesInfo *attributes) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.GetAccessibleTextAttributes(vmID, at, index, attributes); | |
| } | |
| return FALSE; | |
| } | |
| BOOL GetAccessibleTextRect(long vmID, AccessibleText at, AccessibleTextRectInfo *rectInfo, jint index) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.GetAccessibleTextRect(vmID, at, rectInfo, index); | |
| } | |
| return FALSE; | |
| } | |
| BOOL GetAccessibleTextLineBounds(long vmID, AccessibleText at, jint index, jint *startIndex, jint *endIndex) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.GetAccessibleTextLineBounds(vmID, at, index, startIndex, endIndex); | |
| } | |
| return FALSE; | |
| } | |
| BOOL GetAccessibleTextRange(long vmID, AccessibleText at, jint start, jint end, wchar_t *text, short len) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.GetAccessibleTextRange(vmID, at, start, end, text, len); | |
| } | |
| return FALSE; | |
| } | |
| /** | |
| * AccessibleRelationSet routines | |
| */ | |
| BOOL getAccessibleRelationSet(long vmID, AccessibleContext accessibleContext, | |
| AccessibleRelationSetInfo *relationSetInfo) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getAccessibleRelationSet(vmID, accessibleContext, relationSetInfo); | |
| } | |
| return FALSE; | |
| } | |
| /** | |
| * AccessibleHypertext routines | |
| */ | |
| // Gets AccessibleHypertext for an AccessibleContext | |
| BOOL getAccessibleHypertext(long vmID, AccessibleContext accessibleContext, | |
| AccessibleHypertextInfo *hypertextInfo) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getAccessibleHypertext(vmID, accessibleContext, hypertextInfo); | |
| } | |
| return FALSE; | |
| } | |
| // Activates an AccessibleHyperlink for an AccessibleContext | |
| BOOL activateAccessibleHyperlink(long vmID, AccessibleContext accessibleContext, | |
| AccessibleHyperlink accessibleHyperlink) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.activateAccessibleHyperlink(vmID, accessibleContext, accessibleHyperlink); | |
| } | |
| return FALSE; | |
| } | |
| /* | |
| * Returns the number of hyperlinks in a component | |
| * Maps to AccessibleHypertext.getLinkCount. | |
| * Returns -1 on error. | |
| */ | |
| jint getAccessibleHyperlinkCount(const long vmID, | |
| const AccessibleContext accessibleContext) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getAccessibleHyperlinkCount(vmID, accessibleContext); | |
| } | |
| return -1; | |
| } | |
| /* | |
| * This method is used to iterate through the hyperlinks in a component. It | |
| * returns hypertext information for a component starting at hyperlink index | |
| * nStartIndex. No more than MAX_HYPERLINKS AccessibleHypertextInfo objects will | |
| * be returned for each call to this method. | |
| * returns FALSE on error. | |
| */ | |
| BOOL getAccessibleHypertextExt(const long vmID, | |
| const AccessibleContext accessibleContext, | |
| const jint nStartIndex, | |
| /* OUT */ AccessibleHypertextInfo *hypertextInfo) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getAccessibleHypertextExt(vmID, | |
| accessibleContext, | |
| nStartIndex, | |
| hypertextInfo); | |
| } | |
| return FALSE; | |
| } | |
| /* | |
| * Returns the index into an array of hyperlinks that is associated with | |
| * a character index in document; | |
| * Maps to AccessibleHypertext.getLinkIndex. | |
| * Returns -1 on error. | |
| */ | |
| jint getAccessibleHypertextLinkIndex(const long vmID, | |
| const AccessibleHypertext hypertext, | |
| const jint nIndex) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getAccessibleHypertextLinkIndex(vmID, | |
| hypertext, | |
| nIndex); | |
| } | |
| return -1; | |
| } | |
| /* | |
| * Returns the nth hyperlink in a document. | |
| * Maps to AccessibleHypertext.getLink. | |
| * Returns -1 on error | |
| */ | |
| BOOL getAccessibleHyperlink(const long vmID, | |
| const AccessibleHypertext hypertext, | |
| const jint nIndex, | |
| /* OUT */ AccessibleHyperlinkInfo *hyperlinkInfo) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getAccessibleHyperlink(vmID, | |
| hypertext, | |
| nIndex, | |
| hyperlinkInfo); | |
| } | |
| return FALSE; | |
| } | |
| /* Accessible KeyBindings, Icons and Actions */ | |
| BOOL getAccessibleKeyBindings(long vmID, AccessibleContext accessibleContext, | |
| AccessibleKeyBindings *keyBindings) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getAccessibleKeyBindings(vmID, accessibleContext, keyBindings); | |
| } | |
| return FALSE; | |
| } | |
| BOOL getAccessibleIcons(long vmID, AccessibleContext accessibleContext, | |
| AccessibleIcons *icons) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getAccessibleIcons(vmID, accessibleContext, icons); | |
| } | |
| return FALSE; | |
| } | |
| BOOL getAccessibleActions(long vmID, AccessibleContext accessibleContext, | |
| AccessibleActions *actions) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getAccessibleActions(vmID, accessibleContext, actions); | |
| } | |
| return FALSE; | |
| } | |
| BOOL doAccessibleActions(long vmID, AccessibleContext accessibleContext, | |
| AccessibleActionsToDo *actionsToDo, jint *failure) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.doAccessibleActions(vmID, accessibleContext, actionsToDo, failure); | |
| } | |
| return FALSE; | |
| } | |
| /** | |
| * Accessible Value routines | |
| */ | |
| BOOL GetCurrentAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.GetCurrentAccessibleValueFromContext(vmID, av, value, len); | |
| } | |
| return FALSE; | |
| } | |
| BOOL GetMaximumAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.GetMaximumAccessibleValueFromContext(vmID, av, value, len); | |
| } | |
| return FALSE; | |
| } | |
| BOOL GetMinimumAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.GetMinimumAccessibleValueFromContext(vmID, av, value, len); | |
| } | |
| return FALSE; | |
| } | |
| /** | |
| * Accessible Selection routines | |
| */ | |
| void addAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.AddAccessibleSelectionFromContext(vmID, as, i); | |
| } | |
| } | |
| void clearAccessibleSelectionFromContext(long vmID, AccessibleSelection as) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.ClearAccessibleSelectionFromContext(vmID, as); | |
| } | |
| } | |
| JOBJECT64 GetAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.GetAccessibleSelectionFromContext(vmID, as, i); | |
| } | |
| return (JOBJECT64) 0; | |
| } | |
| int GetAccessibleSelectionCountFromContext(long vmID, AccessibleSelection as) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.GetAccessibleSelectionCountFromContext(vmID, as); | |
| } | |
| return -1; | |
| } | |
| BOOL IsAccessibleChildSelectedFromContext(long vmID, AccessibleSelection as, int i) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.IsAccessibleChildSelectedFromContext(vmID, as, i); | |
| } | |
| return FALSE; | |
| } | |
| void RemoveAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.RemoveAccessibleSelectionFromContext(vmID, as, i); | |
| } | |
| } | |
| void SelectAllAccessibleSelectionFromContext(long vmID, AccessibleSelection as) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| theAccessBridge.SelectAllAccessibleSelectionFromContext(vmID, as); | |
| } | |
| } | |
| /** | |
| * Additional methods for Teton | |
| */ | |
| /** | |
| * Gets the AccessibleName for a component based upon the JAWS algorithm. Returns | |
| * whether successful. | |
| * | |
| * Bug ID 4916682 - Implement JAWS AccessibleName policy | |
| */ | |
| BOOL getVirtualAccessibleName(const long vmID, const AccessibleContext accessibleContext, | |
| wchar_t *name, int len) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getVirtualAccessibleName(vmID, accessibleContext, name, len); | |
| } | |
| return FALSE; | |
| } | |
| /** | |
| * Request focus for a component. Returns whether successful; | |
| * | |
| * Bug ID 4944757 - requestFocus method needed | |
| */ | |
| BOOL requestFocus(const long vmID, const AccessibleContext accessibleContext) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.requestFocus(vmID, accessibleContext); | |
| } | |
| return FALSE; | |
| } | |
| /** | |
| * Selects text between two indices. Selection includes the text at the start index | |
| * and the text at the end index. Returns whether successful; | |
| * | |
| * Bug ID 4944758 - selectTextRange method needed | |
| */ | |
| BOOL selectTextRange(const long vmID, const AccessibleContext accessibleContext, | |
| const int startIndex, const int endIndex) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.selectTextRange(vmID, accessibleContext, startIndex, endIndex); | |
| } | |
| return FALSE; | |
| } | |
| /** | |
| * Get text attributes between two indices. The attribute list includes the text at the | |
| * start index and the text at the end index. Returns whether successful; | |
| * | |
| * Bug ID 4944761 - getTextAttributes between two indices method needed | |
| */ | |
| BOOL getTextAttributesInRange(const long vmID, const AccessibleContext accessibleContext, | |
| const int startIndex, const int endIndex, | |
| AccessibleTextAttributesInfo *attributes, short *len) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getTextAttributesInRange(vmID, accessibleContext, startIndex, | |
| endIndex, attributes, len); | |
| } | |
| return FALSE; | |
| } | |
| /** | |
| * Returns the number of visible children of a component. Returns -1 on error. | |
| * | |
| * Bug ID 4944762- getVisibleChildren for list-like components needed | |
| */ | |
| int getVisibleChildrenCount(const long vmID, const AccessibleContext accessibleContext) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getVisibleChildrenCount(vmID, accessibleContext); | |
| } | |
| return FALSE; | |
| } | |
| /** | |
| * Gets the visible children of an AccessibleContext. Returns whether successful; | |
| * | |
| * Bug ID 4944762- getVisibleChildren for list-like components needed | |
| */ | |
| BOOL getVisibleChildren(const long vmID, const AccessibleContext accessibleContext, | |
| const int startIndex, VisibleChildrenInfo *visibleChildrenInfo) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getVisibleChildren(vmID, accessibleContext, startIndex, | |
| visibleChildrenInfo); | |
| } | |
| return FALSE; | |
| } | |
| /** | |
| * Set the caret to a text position. Returns whether successful; | |
| * | |
| * Bug ID 4944770 - setCaretPosition method needed | |
| */ | |
| BOOL setCaretPosition(const long vmID, const AccessibleContext accessibleContext, | |
| const int position) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.setCaretPosition(vmID, accessibleContext, position); | |
| } | |
| return FALSE; | |
| } | |
| /** | |
| * Gets the text caret location | |
| */ | |
| BOOL getCaretLocation(long vmID, AccessibleContext ac, AccessibleTextRectInfo *rectInfo, jint index) { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getCaretLocation(vmID, ac, rectInfo, index); | |
| } | |
| return FALSE; | |
| } | |
| /** | |
| * Gets the number of events waiting to fire | |
| */ | |
| int getEventsWaiting() { | |
| if (theAccessBridgeInitializedFlag == TRUE) { | |
| return theAccessBridge.getEventsWaiting(); | |
| } | |
| return FALSE; | |
| } | |
| #ifdef __cplusplus | |
| } | |
| #endif |