Path: blob/master/src/jdk.accessibility/windows/native/include/bridge/AccessBridgeCalls.h
40971 views
/*1* Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation. Oracle designates this7* particular file as subject to the "Classpath" exception as provided8* by Oracle in the LICENSE file that accompanied this code.9*10* This code is distributed in the hope that it will be useful, but WITHOUT11* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or12* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License13* version 2 for more details (a copy is included in the LICENSE file that14* accompanied this code).15*16* You should have received a copy of the GNU General Public License version17* 2 along with this work; if not, write to the Free Software Foundation,18* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.19*20* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA21* or visit www.oracle.com if you need additional information or have any22* questions.23*/2425/* Note: In addition to this header file AccessBridgeCalls.c must be compiled and26* linked to your application. AccessBridgeCalls.c implements the Java Access27* Bridge API and also hides the complexities associated with interfacing to the28* associated Java Access Bridge DLL which is installed when Java is installed.29*30* AccessBridgeCalls.c is available for download from the OpenJDK repository using31* the following link:32*33* http://hg.openjdk.java.net/jdk9/jdk9/jdk/raw-file/tip/src/jdk.accessibility/windows/native/bridge/AccessBridgeCalls.c34*35* Also note that the API is used in the jaccessinspector and jaccesswalker tools.36* The source for those tools is available in the OpenJDK repository at these links:37*38* http://hg.openjdk.java.net/jdk9/jdk9/jdk/file/tip/src/jdk.accessibility/windows/native/jaccessinspector/jaccessinspector.cpp39* http://hg.openjdk.java.net/jdk9/jdk9/jdk/file/tip/src/jdk.accessibility/windows/native/jaccesswalker/jaccesswalker.cpp40*41*42*/4344/*45* Wrapper functions around calls to the AccessBridge DLL46*/4748#include <windows.h>49#include <jni.h>50#include "AccessBridgeCallbacks.h"51#include "AccessBridgePackages.h"5253#ifdef __cplusplus54extern "C" {55#endif5657#define null NULL5859typedef JOBJECT64 AccessibleContext;60typedef JOBJECT64 AccessibleText;61typedef JOBJECT64 AccessibleValue;62typedef JOBJECT64 AccessibleSelection;63typedef JOBJECT64 Java_Object;64typedef JOBJECT64 PropertyChangeEvent;65typedef JOBJECT64 FocusEvent;66typedef JOBJECT64 CaretEvent;67typedef JOBJECT64 MouseEvent;68typedef JOBJECT64 MenuEvent;69typedef JOBJECT64 AccessibleTable;70typedef JOBJECT64 AccessibleHyperlink;71typedef JOBJECT64 AccessibleHypertext;727374typedef void (*Windows_runFP) ();7576typedef void (*SetPropertyChangeFP) (AccessBridge_PropertyChangeFP fp);7778typedef void (*SetJavaShutdownFP) (AccessBridge_JavaShutdownFP fp);79typedef void (*SetFocusGainedFP) (AccessBridge_FocusGainedFP fp);80typedef void (*SetFocusLostFP) (AccessBridge_FocusLostFP fp);8182typedef void (*SetCaretUpdateFP) (AccessBridge_CaretUpdateFP fp);8384typedef void (*SetMouseClickedFP) (AccessBridge_MouseClickedFP fp);85typedef void (*SetMouseEnteredFP) (AccessBridge_MouseEnteredFP fp);86typedef void (*SetMouseExitedFP) (AccessBridge_MouseExitedFP fp);87typedef void (*SetMousePressedFP) (AccessBridge_MousePressedFP fp);88typedef void (*SetMouseReleasedFP) (AccessBridge_MouseReleasedFP fp);8990typedef void (*SetMenuCanceledFP) (AccessBridge_MenuCanceledFP fp);91typedef void (*SetMenuDeselectedFP) (AccessBridge_MenuDeselectedFP fp);92typedef void (*SetMenuSelectedFP) (AccessBridge_MenuSelectedFP fp);93typedef void (*SetPopupMenuCanceledFP) (AccessBridge_PopupMenuCanceledFP fp);94typedef void (*SetPopupMenuWillBecomeInvisibleFP) (AccessBridge_PopupMenuWillBecomeInvisibleFP fp);95typedef void (*SetPopupMenuWillBecomeVisibleFP) (AccessBridge_PopupMenuWillBecomeVisibleFP fp);9697typedef void (*SetPropertyNameChangeFP) (AccessBridge_PropertyNameChangeFP fp);98typedef void (*SetPropertyDescriptionChangeFP) (AccessBridge_PropertyDescriptionChangeFP fp);99typedef void (*SetPropertyStateChangeFP) (AccessBridge_PropertyStateChangeFP fp);100typedef void (*SetPropertyValueChangeFP) (AccessBridge_PropertyValueChangeFP fp);101typedef void (*SetPropertySelectionChangeFP) (AccessBridge_PropertySelectionChangeFP fp);102typedef void (*SetPropertyTextChangeFP) (AccessBridge_PropertyTextChangeFP fp);103typedef void (*SetPropertyCaretChangeFP) (AccessBridge_PropertyCaretChangeFP fp);104typedef void (*SetPropertyVisibleDataChangeFP) (AccessBridge_PropertyVisibleDataChangeFP fp);105typedef void (*SetPropertyChildChangeFP) (AccessBridge_PropertyChildChangeFP fp);106typedef void (*SetPropertyActiveDescendentChangeFP) (AccessBridge_PropertyActiveDescendentChangeFP fp);107108typedef void (*SetPropertyTableModelChangeFP) (AccessBridge_PropertyTableModelChangeFP fp);109110typedef void (*ReleaseJavaObjectFP) (long vmID, Java_Object object);111112typedef BOOL (*GetVersionInfoFP) (long vmID, AccessBridgeVersionInfo *info);113114typedef BOOL (*IsJavaWindowFP) (HWND window);115typedef BOOL (*IsSameObjectFP) (long vmID, JOBJECT64 obj1, JOBJECT64 obj2);116typedef BOOL (*GetAccessibleContextFromHWNDFP) (HWND window, long *vmID, AccessibleContext *ac);117typedef HWND (*getHWNDFromAccessibleContextFP) (long vmID, AccessibleContext ac);118119typedef BOOL (*GetAccessibleContextAtFP) (long vmID, AccessibleContext acParent,120jint x, jint y, AccessibleContext *ac);121typedef BOOL (*GetAccessibleContextWithFocusFP) (HWND window, long *vmID, AccessibleContext *ac);122typedef BOOL (*GetAccessibleContextInfoFP) (long vmID, AccessibleContext ac, AccessibleContextInfo *info);123typedef AccessibleContext (*GetAccessibleChildFromContextFP) (long vmID, AccessibleContext ac, jint i);124typedef AccessibleContext (*GetAccessibleParentFromContextFP) (long vmID, AccessibleContext ac);125126/* begin AccessibleTable */127typedef BOOL (*getAccessibleTableInfoFP) (long vmID, AccessibleContext ac, AccessibleTableInfo *tableInfo);128typedef BOOL (*getAccessibleTableCellInfoFP) (long vmID, AccessibleTable accessibleTable,129jint row, jint column, AccessibleTableCellInfo *tableCellInfo);130131typedef BOOL (*getAccessibleTableRowHeaderFP) (long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo);132typedef BOOL (*getAccessibleTableColumnHeaderFP) (long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo);133134typedef AccessibleContext (*getAccessibleTableRowDescriptionFP) (long vmID, AccessibleContext acParent, jint row);135typedef AccessibleContext (*getAccessibleTableColumnDescriptionFP) (long vmID, AccessibleContext acParent, jint column);136137typedef jint (*getAccessibleTableRowSelectionCountFP) (long vmID, AccessibleTable table);138typedef BOOL (*isAccessibleTableRowSelectedFP) (long vmID, AccessibleTable table, jint row);139typedef BOOL (*getAccessibleTableRowSelectionsFP) (long vmID, AccessibleTable table, jint count,140jint *selections);141142typedef jint (*getAccessibleTableColumnSelectionCountFP) (long vmID, AccessibleTable table);143typedef BOOL (*isAccessibleTableColumnSelectedFP) (long vmID, AccessibleTable table, jint column);144typedef BOOL (*getAccessibleTableColumnSelectionsFP) (long vmID, AccessibleTable table, jint count,145jint *selections);146147typedef jint (*getAccessibleTableRowFP) (long vmID, AccessibleTable table, jint index);148typedef jint (*getAccessibleTableColumnFP) (long vmID, AccessibleTable table, jint index);149typedef jint (*getAccessibleTableIndexFP) (long vmID, AccessibleTable table, jint row, jint column);150/* end AccessibleTable */151152/* AccessibleRelationSet */153typedef BOOL (*getAccessibleRelationSetFP) (long vmID, AccessibleContext accessibleContext,154AccessibleRelationSetInfo *relationSetInfo);155156/* AccessibleHypertext */157typedef BOOL (*getAccessibleHypertextFP)(long vmID, AccessibleContext accessibleContext,158AccessibleHypertextInfo *hypertextInfo);159160typedef BOOL (*activateAccessibleHyperlinkFP)(long vmID, AccessibleContext accessibleContext,161AccessibleHyperlink accessibleHyperlink);162163typedef jint (*getAccessibleHyperlinkCountFP)(const long vmID,164const AccessibleContext accessibleContext);165166typedef BOOL (*getAccessibleHypertextExtFP) (const long vmID,167const AccessibleContext accessibleContext,168const jint nStartIndex,169AccessibleHypertextInfo *hypertextInfo);170171typedef jint (*getAccessibleHypertextLinkIndexFP)(const long vmID,172const AccessibleHypertext hypertext,173const jint nIndex);174175typedef BOOL (*getAccessibleHyperlinkFP)(const long vmID,176const AccessibleHypertext hypertext,177const jint nIndex,178AccessibleHyperlinkInfo *hyperlinkInfo);179180181/* Accessible KeyBindings, Icons and Actions */182typedef BOOL (*getAccessibleKeyBindingsFP)(long vmID, AccessibleContext accessibleContext,183AccessibleKeyBindings *keyBindings);184185typedef BOOL (*getAccessibleIconsFP)(long vmID, AccessibleContext accessibleContext,186AccessibleIcons *icons);187188typedef BOOL (*getAccessibleActionsFP)(long vmID, AccessibleContext accessibleContext,189AccessibleActions *actions);190191typedef BOOL (*doAccessibleActionsFP)(long vmID, AccessibleContext accessibleContext,192AccessibleActionsToDo *actionsToDo, jint *failure);193194195/* AccessibleText */196197typedef BOOL (*GetAccessibleTextInfoFP) (long vmID, AccessibleText at, AccessibleTextInfo *textInfo, jint x, jint y);198typedef BOOL (*GetAccessibleTextItemsFP) (long vmID, AccessibleText at, AccessibleTextItemsInfo *textItems, jint index);199typedef BOOL (*GetAccessibleTextSelectionInfoFP) (long vmID, AccessibleText at, AccessibleTextSelectionInfo *textSelection);200typedef BOOL (*GetAccessibleTextAttributesFP) (long vmID, AccessibleText at, jint index, AccessibleTextAttributesInfo *attributes);201typedef BOOL (*GetAccessibleTextRectFP) (long vmID, AccessibleText at, AccessibleTextRectInfo *rectInfo, jint index);202typedef BOOL (*GetAccessibleTextLineBoundsFP) (long vmID, AccessibleText at, jint index, jint *startIndex, jint *endIndex);203typedef BOOL (*GetAccessibleTextRangeFP) (long vmID, AccessibleText at, jint start, jint end, wchar_t *text, short len);204205typedef BOOL (*GetCurrentAccessibleValueFromContextFP) (long vmID, AccessibleValue av, wchar_t *value, short len);206typedef BOOL (*GetMaximumAccessibleValueFromContextFP) (long vmID, AccessibleValue av, wchar_t *value, short len);207typedef BOOL (*GetMinimumAccessibleValueFromContextFP) (long vmID, AccessibleValue av, wchar_t *value, short len);208209typedef void (*AddAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as, int i);210typedef void (*ClearAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as);211typedef JOBJECT64 (*GetAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as, int i);212typedef int (*GetAccessibleSelectionCountFromContextFP) (long vmID, AccessibleSelection as);213typedef BOOL (*IsAccessibleChildSelectedFromContextFP) (long vmID, AccessibleSelection as, int i);214typedef void (*RemoveAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as, int i);215typedef void (*SelectAllAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as);216217/* Utility methods */218219typedef BOOL (*setTextContentsFP) (const long vmID, const AccessibleContext ac, const wchar_t *text);220typedef AccessibleContext (*getParentWithRoleFP) (const long vmID, const AccessibleContext ac, const wchar_t *role);221typedef AccessibleContext (*getParentWithRoleElseRootFP) (const long vmID, const AccessibleContext ac, const wchar_t *role);222typedef AccessibleContext (*getTopLevelObjectFP) (const long vmID, const AccessibleContext ac);223typedef int (*getObjectDepthFP) (const long vmID, const AccessibleContext ac);224typedef AccessibleContext (*getActiveDescendentFP) (const long vmID, const AccessibleContext ac);225226227typedef BOOL (*getVirtualAccessibleNameFP) (const long vmID, const AccessibleContext accessibleContext,228wchar_t *name, int len);229230typedef BOOL (*requestFocusFP) (const long vmID, const AccessibleContext accessibleContext);231232typedef BOOL (*selectTextRangeFP) (const long vmID, const AccessibleContext accessibleContext,233const int startIndex, const int endIndex);234235typedef BOOL (*getTextAttributesInRangeFP) (const long vmID, const AccessibleContext accessibleContext,236const int startIndex, const int endIndex,237AccessibleTextAttributesInfo *attributes, short *len);238239typedef int (*getVisibleChildrenCountFP) (const long vmID, const AccessibleContext accessibleContext);240241typedef BOOL (*getVisibleChildrenFP) (const long vmID, const AccessibleContext accessibleContext,242const int startIndex, VisibleChildrenInfo *children);243244typedef BOOL (*setCaretPositionFP) (const long vmID, const AccessibleContext accessibleContext, const int position);245246typedef BOOL (*getCaretLocationFP) (long vmID, AccessibleContext ac, AccessibleTextRectInfo *rectInfo, jint index);247248typedef int (*getEventsWaitingFP) ();249250typedef struct AccessBridgeFPsTag {251Windows_runFP Windows_run;252253SetPropertyChangeFP SetPropertyChange;254255SetJavaShutdownFP SetJavaShutdown;256SetFocusGainedFP SetFocusGained;257SetFocusLostFP SetFocusLost;258259SetCaretUpdateFP SetCaretUpdate;260261SetMouseClickedFP SetMouseClicked;262SetMouseEnteredFP SetMouseEntered;263SetMouseExitedFP SetMouseExited;264SetMousePressedFP SetMousePressed;265SetMouseReleasedFP SetMouseReleased;266267SetMenuCanceledFP SetMenuCanceled;268SetMenuDeselectedFP SetMenuDeselected;269SetMenuSelectedFP SetMenuSelected;270SetPopupMenuCanceledFP SetPopupMenuCanceled;271SetPopupMenuWillBecomeInvisibleFP SetPopupMenuWillBecomeInvisible;272SetPopupMenuWillBecomeVisibleFP SetPopupMenuWillBecomeVisible;273274SetPropertyNameChangeFP SetPropertyNameChange;275SetPropertyDescriptionChangeFP SetPropertyDescriptionChange;276SetPropertyStateChangeFP SetPropertyStateChange;277SetPropertyValueChangeFP SetPropertyValueChange;278SetPropertySelectionChangeFP SetPropertySelectionChange;279SetPropertyTextChangeFP SetPropertyTextChange;280SetPropertyCaretChangeFP SetPropertyCaretChange;281SetPropertyVisibleDataChangeFP SetPropertyVisibleDataChange;282SetPropertyChildChangeFP SetPropertyChildChange;283SetPropertyActiveDescendentChangeFP SetPropertyActiveDescendentChange;284285SetPropertyTableModelChangeFP SetPropertyTableModelChange;286287ReleaseJavaObjectFP ReleaseJavaObject;288GetVersionInfoFP GetVersionInfo;289290IsJavaWindowFP IsJavaWindow;291IsSameObjectFP IsSameObject;292GetAccessibleContextFromHWNDFP GetAccessibleContextFromHWND;293getHWNDFromAccessibleContextFP getHWNDFromAccessibleContext;294295GetAccessibleContextAtFP GetAccessibleContextAt;296GetAccessibleContextWithFocusFP GetAccessibleContextWithFocus;297GetAccessibleContextInfoFP GetAccessibleContextInfo;298GetAccessibleChildFromContextFP GetAccessibleChildFromContext;299GetAccessibleParentFromContextFP GetAccessibleParentFromContext;300301getAccessibleTableInfoFP getAccessibleTableInfo;302getAccessibleTableCellInfoFP getAccessibleTableCellInfo;303304getAccessibleTableRowHeaderFP getAccessibleTableRowHeader;305getAccessibleTableColumnHeaderFP getAccessibleTableColumnHeader;306307getAccessibleTableRowDescriptionFP getAccessibleTableRowDescription;308getAccessibleTableColumnDescriptionFP getAccessibleTableColumnDescription;309310getAccessibleTableRowSelectionCountFP getAccessibleTableRowSelectionCount;311isAccessibleTableRowSelectedFP isAccessibleTableRowSelected;312getAccessibleTableRowSelectionsFP getAccessibleTableRowSelections;313314getAccessibleTableColumnSelectionCountFP getAccessibleTableColumnSelectionCount;315isAccessibleTableColumnSelectedFP isAccessibleTableColumnSelected;316getAccessibleTableColumnSelectionsFP getAccessibleTableColumnSelections;317318getAccessibleTableRowFP getAccessibleTableRow;319getAccessibleTableColumnFP getAccessibleTableColumn;320getAccessibleTableIndexFP getAccessibleTableIndex;321322getAccessibleRelationSetFP getAccessibleRelationSet;323324getAccessibleHypertextFP getAccessibleHypertext;325activateAccessibleHyperlinkFP activateAccessibleHyperlink;326getAccessibleHyperlinkCountFP getAccessibleHyperlinkCount;327getAccessibleHypertextExtFP getAccessibleHypertextExt;328getAccessibleHypertextLinkIndexFP getAccessibleHypertextLinkIndex;329getAccessibleHyperlinkFP getAccessibleHyperlink;330331getAccessibleKeyBindingsFP getAccessibleKeyBindings;332getAccessibleIconsFP getAccessibleIcons;333getAccessibleActionsFP getAccessibleActions;334doAccessibleActionsFP doAccessibleActions;335336GetAccessibleTextInfoFP GetAccessibleTextInfo;337GetAccessibleTextItemsFP GetAccessibleTextItems;338GetAccessibleTextSelectionInfoFP GetAccessibleTextSelectionInfo;339GetAccessibleTextAttributesFP GetAccessibleTextAttributes;340GetAccessibleTextRectFP GetAccessibleTextRect;341GetAccessibleTextLineBoundsFP GetAccessibleTextLineBounds;342GetAccessibleTextRangeFP GetAccessibleTextRange;343344GetCurrentAccessibleValueFromContextFP GetCurrentAccessibleValueFromContext;345GetMaximumAccessibleValueFromContextFP GetMaximumAccessibleValueFromContext;346GetMinimumAccessibleValueFromContextFP GetMinimumAccessibleValueFromContext;347348AddAccessibleSelectionFromContextFP AddAccessibleSelectionFromContext;349ClearAccessibleSelectionFromContextFP ClearAccessibleSelectionFromContext;350GetAccessibleSelectionFromContextFP GetAccessibleSelectionFromContext;351GetAccessibleSelectionCountFromContextFP GetAccessibleSelectionCountFromContext;352IsAccessibleChildSelectedFromContextFP IsAccessibleChildSelectedFromContext;353RemoveAccessibleSelectionFromContextFP RemoveAccessibleSelectionFromContext;354SelectAllAccessibleSelectionFromContextFP SelectAllAccessibleSelectionFromContext;355356setTextContentsFP setTextContents;357getParentWithRoleFP getParentWithRole;358getTopLevelObjectFP getTopLevelObject;359getParentWithRoleElseRootFP getParentWithRoleElseRoot;360getObjectDepthFP getObjectDepth;361getActiveDescendentFP getActiveDescendent;362363getVirtualAccessibleNameFP getVirtualAccessibleName;364requestFocusFP requestFocus;365selectTextRangeFP selectTextRange;366getTextAttributesInRangeFP getTextAttributesInRange;367getVisibleChildrenCountFP getVisibleChildrenCount;368getVisibleChildrenFP getVisibleChildren;369setCaretPositionFP setCaretPosition;370getCaretLocationFP getCaretLocation;371372getEventsWaitingFP getEventsWaiting;373374} AccessBridgeFPs;375376377/**378* Initialize the world379*/380BOOL initializeAccessBridge();381BOOL shutdownAccessBridge();382383/**384* Window routines385*/386BOOL IsJavaWindow(HWND window);387388// Returns the virtual machine ID and AccessibleContext for a top-level window389BOOL GetAccessibleContextFromHWND(HWND target, long *vmID, AccessibleContext *ac);390391// Returns the HWND from the AccessibleContext of a top-level window392HWND getHWNDFromAccessibleContext(long vmID, AccessibleContext ac);393394395/**396* Event handling routines397*/398void SetJavaShutdown(AccessBridge_JavaShutdownFP fp);399void SetFocusGained(AccessBridge_FocusGainedFP fp);400void SetFocusLost(AccessBridge_FocusLostFP fp);401402void SetCaretUpdate(AccessBridge_CaretUpdateFP fp);403404void SetMouseClicked(AccessBridge_MouseClickedFP fp);405void SetMouseEntered(AccessBridge_MouseEnteredFP fp);406void SetMouseExited(AccessBridge_MouseExitedFP fp);407void SetMousePressed(AccessBridge_MousePressedFP fp);408void SetMouseReleased(AccessBridge_MouseReleasedFP fp);409410void SetMenuCanceled(AccessBridge_MenuCanceledFP fp);411void SetMenuDeselected(AccessBridge_MenuDeselectedFP fp);412void SetMenuSelected(AccessBridge_MenuSelectedFP fp);413void SetPopupMenuCanceled(AccessBridge_PopupMenuCanceledFP fp);414void SetPopupMenuWillBecomeInvisible(AccessBridge_PopupMenuWillBecomeInvisibleFP fp);415void SetPopupMenuWillBecomeVisible(AccessBridge_PopupMenuWillBecomeVisibleFP fp);416417void SetPropertyNameChange(AccessBridge_PropertyNameChangeFP fp);418void SetPropertyDescriptionChange(AccessBridge_PropertyDescriptionChangeFP fp);419void SetPropertyStateChange(AccessBridge_PropertyStateChangeFP fp);420void SetPropertyValueChange(AccessBridge_PropertyValueChangeFP fp);421void SetPropertySelectionChange(AccessBridge_PropertySelectionChangeFP fp);422void SetPropertyTextChange(AccessBridge_PropertyTextChangeFP fp);423void SetPropertyCaretChange(AccessBridge_PropertyCaretChangeFP fp);424void SetPropertyVisibleDataChange(AccessBridge_PropertyVisibleDataChangeFP fp);425void SetPropertyChildChange(AccessBridge_PropertyChildChangeFP fp);426void SetPropertyActiveDescendentChange(AccessBridge_PropertyActiveDescendentChangeFP fp);427428void SetPropertyTableModelChange(AccessBridge_PropertyTableModelChangeFP fp);429430431/**432* General routines433*/434void ReleaseJavaObject(long vmID, Java_Object object);435BOOL GetVersionInfo(long vmID, AccessBridgeVersionInfo *info);436HWND GetHWNDFromAccessibleContext(long vmID, JOBJECT64 accesibleContext);437438/**439* Accessible Context routines440*/441BOOL GetAccessibleContextAt(long vmID, AccessibleContext acParent,442jint x, jint y, AccessibleContext *ac);443BOOL GetAccessibleContextWithFocus(HWND window, long *vmID, AccessibleContext *ac);444BOOL GetAccessibleContextInfo(long vmID, AccessibleContext ac, AccessibleContextInfo *info);445AccessibleContext GetAccessibleChildFromContext(long vmID, AccessibleContext ac, jint index);446AccessibleContext GetAccessibleParentFromContext(long vmID, AccessibleContext ac);447448/**449* Accessible Text routines450*/451BOOL GetAccessibleTextInfo(long vmID, AccessibleText at, AccessibleTextInfo *textInfo, jint x, jint y);452BOOL GetAccessibleTextItems(long vmID, AccessibleText at, AccessibleTextItemsInfo *textItems, jint index);453BOOL GetAccessibleTextSelectionInfo(long vmID, AccessibleText at, AccessibleTextSelectionInfo *textSelection);454BOOL GetAccessibleTextAttributes(long vmID, AccessibleText at, jint index, AccessibleTextAttributesInfo *attributes);455BOOL GetAccessibleTextRect(long vmID, AccessibleText at, AccessibleTextRectInfo *rectInfo, jint index);456BOOL GetAccessibleTextLineBounds(long vmID, AccessibleText at, jint index, jint *startIndex, jint *endIndex);457BOOL GetAccessibleTextRange(long vmID, AccessibleText at, jint start, jint end, wchar_t *text, short len);458459/* begin AccessibleTable routines */460BOOL getAccessibleTableInfo(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo);461462BOOL getAccessibleTableCellInfo(long vmID, AccessibleTable accessibleTable, jint row, jint column,463AccessibleTableCellInfo *tableCellInfo);464465BOOL getAccessibleTableRowHeader(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo);466BOOL getAccessibleTableColumnHeader(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo);467468AccessibleContext getAccessibleTableRowDescription(long vmID, AccessibleContext acParent, jint row);469AccessibleContext getAccessibleTableColumnDescription(long vmID, AccessibleContext acParent, jint column);470471jint getAccessibleTableRowSelectionCount(long vmID, AccessibleTable table);472BOOL isAccessibleTableRowSelected(long vmID, AccessibleTable table, jint row);473BOOL getAccessibleTableRowSelections(long vmID, AccessibleTable table, jint count, jint *selections);474475jint getAccessibleTableColumnSelectionCount(long vmID, AccessibleTable table);476BOOL isAccessibleTableColumnSelected(long vmID, AccessibleTable table, jint column);477BOOL getAccessibleTableColumnSelections(long vmID, AccessibleTable table, jint count, jint *selections);478479jint getAccessibleTableRow(long vmID, AccessibleTable table, jint index);480jint getAccessibleTableColumn(long vmID, AccessibleTable table, jint index);481jint getAccessibleTableIndex(long vmID, AccessibleTable table, jint row, jint column);482/* end AccessibleTable */483484/* ----- AccessibleRelationSet routines */485BOOL getAccessibleRelationSet(long vmID, AccessibleContext accessibleContext,486AccessibleRelationSetInfo *relationSetInfo);487488/* ----- AccessibleHypertext routines */489490/*491* Returns hypertext information associated with a component.492*/493BOOL getAccessibleHypertext(long vmID, AccessibleContext accessibleContext,494AccessibleHypertextInfo *hypertextInfo);495496/*497* Requests that a hyperlink be activated.498*/499BOOL activateAccessibleHyperlink(long vmID, AccessibleContext accessibleContext,500AccessibleHyperlink accessibleHyperlink);501502/*503* Returns the number of hyperlinks in a component504* Maps to AccessibleHypertext.getLinkCount.505* Returns -1 on error.506*/507jint getAccessibleHyperlinkCount(const long vmID,508const AccessibleHypertext hypertext);509510/*511* This method is used to iterate through the hyperlinks in a component. It512* returns hypertext information for a component starting at hyperlink index513* nStartIndex. No more than MAX_HYPERLINKS AccessibleHypertextInfo objects will514* be returned for each call to this method.515* Returns FALSE on error.516*/517BOOL getAccessibleHypertextExt(const long vmID,518const AccessibleContext accessibleContext,519const jint nStartIndex,520/* OUT */ AccessibleHypertextInfo *hypertextInfo);521522/*523* Returns the index into an array of hyperlinks that is associated with524* a character index in document; maps to AccessibleHypertext.getLinkIndex525* Returns -1 on error.526*/527jint getAccessibleHypertextLinkIndex(const long vmID,528const AccessibleHypertext hypertext,529const jint nIndex);530531/*532* Returns the nth hyperlink in a document533* Maps to AccessibleHypertext.getLink.534* Returns FALSE on error535*/536BOOL getAccessibleHyperlink(const long vmID,537const AccessibleHypertext hypertext,538const jint nIndex,539/* OUT */ AccessibleHyperlinkInfo *hyperlinkInfo);540541/* Accessible KeyBindings, Icons and Actions */542543/*544* Returns a list of key bindings associated with a component.545*/546BOOL getAccessibleKeyBindings(long vmID, AccessibleContext accessibleContext,547AccessibleKeyBindings *keyBindings);548549/*550* Returns a list of icons associate with a component.551*/552BOOL getAccessibleIcons(long vmID, AccessibleContext accessibleContext,553AccessibleIcons *icons);554555/*556* Returns a list of actions that a component can perform.557*/558BOOL getAccessibleActions(long vmID, AccessibleContext accessibleContext,559AccessibleActions *actions);560561/*562* Request that a list of AccessibleActions be performed by a component.563* Returns TRUE if all actions are performed. Returns FALSE564* when the first requested action fails in which case "failure"565* contains the index of the action that failed.566*/567BOOL doAccessibleActions(long vmID, AccessibleContext accessibleContext,568AccessibleActionsToDo *actionsToDo, jint *failure);569570571572/* Additional utility methods */573574/*575* Returns whether two object references refer to the same object.576*/577BOOL IsSameObject(long vmID, JOBJECT64 obj1, JOBJECT64 obj2);578579/**580* Sets editable text contents. The AccessibleContext must implement AccessibleEditableText and581* be editable. The maximum text length that can be set is MAX_STRING_SIZE - 1.582* Returns whether successful583*/584BOOL setTextContents (const long vmID, const AccessibleContext accessibleContext, const wchar_t *text);585586/**587* Returns the Accessible Context with the specified role that is the588* ancestor of a given object. The role is one of the role strings589* defined in AccessBridgePackages.h590* If there is no ancestor object that has the specified role,591* returns (AccessibleContext)0.592*/593AccessibleContext getParentWithRole (const long vmID, const AccessibleContext accessibleContext,594const wchar_t *role);595596/**597* Returns the Accessible Context with the specified role that is the598* ancestor of a given object. The role is one of the role strings599* defined in AccessBridgePackages.h. If an object with the specified600* role does not exist, returns the top level object for the Java Window.601* Returns (AccessibleContext)0 on error.602*/603AccessibleContext getParentWithRoleElseRoot (const long vmID, const AccessibleContext accessibleContext,604const wchar_t *role);605606/**607* Returns the Accessible Context for the top level object in608* a Java Window. This is same Accessible Context that is obtained609* from GetAccessibleContextFromHWND for that window. Returns610* (AccessibleContext)0 on error.611*/612AccessibleContext getTopLevelObject (const long vmID, const AccessibleContext accessibleContext);613614/**615* Returns how deep in the object hierarchy a given object is.616* The top most object in the object hierarchy has an object depth of 0.617* Returns -1 on error.618*/619int getObjectDepth (const long vmID, const AccessibleContext accessibleContext);620621/**622* Returns the Accessible Context of the current ActiveDescendent of an object.623* This method assumes the ActiveDescendent is the component that is currently624* selected in a container object.625* Returns (AccessibleContext)0 on error or if there is no selection.626*/627AccessibleContext getActiveDescendent (const long vmID, const AccessibleContext accessibleContext);628629/**630/**631* Accessible Value routines632*/633BOOL GetCurrentAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len);634BOOL GetMaximumAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len);635BOOL GetMinimumAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len);636637/**638* Accessible Selection routines639*/640void AddAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i);641void ClearAccessibleSelectionFromContext(long vmID, AccessibleSelection as);642JOBJECT64 GetAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i);643int GetAccessibleSelectionCountFromContext(long vmID, AccessibleSelection as);644BOOL IsAccessibleChildSelectedFromContext(long vmID, AccessibleSelection as, int i);645void RemoveAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i);646void SelectAllAccessibleSelectionFromContext(long vmID, AccessibleSelection as);647648/**649* Additional methods for Teton650*/651652/**653* Gets the AccessibleName for a component based upon the JAWS algorithm. Returns654* whether successful.655*656* Bug ID 4916682 - Implement JAWS AccessibleName policy657*/658BOOL getVirtualAccessibleName(const long vmID, const AccessibleContext accessibleContext,659wchar_t *name, int len);660661/**662* Request focus for a component. Returns whether successful.663*664* Bug ID 4944757 - requestFocus method needed665*/666BOOL requestFocus(const long vmID, const AccessibleContext accessibleContext);667668/**669* Selects text between two indices. Selection includes the text at the start index670* and the text at the end index. Returns whether successful.671*672* Bug ID 4944758 - selectTextRange method needed673*/674BOOL selectTextRange(const long vmID, const AccessibleContext accessibleContext, const int startIndex,675const int endIndex);676677/**678* Get text attributes between two indices. The attribute list includes the text at the679* start index and the text at the end index. Returns whether successful;680*681* Bug ID 4944761 - getTextAttributes between two indices method needed682*/683BOOL getTextAttributesInRange(const long vmID, const AccessibleContext accessibleContext,684const int startIndex, const int endIndex,685AccessibleTextAttributesInfo *attributes, short *len);686687/**688* Returns the number of visible children of a component. Returns -1 on error.689*690* Bug ID 4944762- getVisibleChildren for list-like components needed691*/692int getVisibleChildrenCount(const long vmID, const AccessibleContext accessibleContext);693694/**695* Gets the visible children of an AccessibleContext. Returns whether successful.696*697* Bug ID 4944762- getVisibleChildren for list-like components needed698*/699BOOL getVisibleChildren(const long vmID, const AccessibleContext accessibleContext,700const int startIndex,701VisibleChildrenInfo *visibleChildrenInfo);702703/**704* Set the caret to a text position. Returns whether successful.705*706* Bug ID 4944770 - setCaretPosition method needed707*/708BOOL setCaretPosition(const long vmID, const AccessibleContext accessibleContext,709const int position);710711/**712* Gets the text caret location713*/714BOOL getCaretLocation(long vmID, AccessibleContext ac,715AccessibleTextRectInfo *rectInfo, jint index);716717/**718* Gets the number of events waiting to fire719*/720int getEventsWaiting();721722#ifdef __cplusplus723}724#endif725726727