AccessBridgeCalls.h revision 11740:8c996a225c1b
11590Srgrimes/*
21590Srgrimes * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
31590Srgrimes * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
41590Srgrimes *
51590Srgrimes * This code is free software; you can redistribute it and/or modify it
61590Srgrimes * under the terms of the GNU General Public License version 2 only, as
71590Srgrimes * published by the Free Software Foundation.  Oracle designates this
81590Srgrimes * particular file as subject to the "Classpath" exception as provided
91590Srgrimes * by Oracle in the LICENSE file that accompanied this code.
101590Srgrimes *
111590Srgrimes * This code is distributed in the hope that it will be useful, but WITHOUT
121590Srgrimes * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
131590Srgrimes * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
141590Srgrimes * version 2 for more details (a copy is included in the LICENSE file that
151590Srgrimes * accompanied this code).
161590Srgrimes *
171590Srgrimes * You should have received a copy of the GNU General Public License version
181590Srgrimes * 2 along with this work; if not, write to the Free Software Foundation,
191590Srgrimes * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
201590Srgrimes *
211590Srgrimes * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
221590Srgrimes * or visit www.oracle.com if you need additional information or have any
231590Srgrimes * questions.
241590Srgrimes */
251590Srgrimes
261590Srgrimes/*
271590Srgrimes * Wrapper functions around calls to the AccessBridge DLL
281590Srgrimes */
291590Srgrimes
301590Srgrimes#include <windows.h>
311590Srgrimes#include <jni.h>
321590Srgrimes#include "AccessBridgeCallbacks.h"
331590Srgrimes#include "AccessBridgePackages.h"
341590Srgrimes
351590Srgrimes#ifdef __cplusplus
361590Srgrimesextern "C" {
371590Srgrimes#endif
3823693Speter
391590Srgrimes#define null NULL
401590Srgrimes
411590Srgrimes    typedef JOBJECT64 AccessibleContext;
421590Srgrimes    typedef JOBJECT64 AccessibleText;
431590Srgrimes    typedef JOBJECT64 AccessibleValue;
441590Srgrimes    typedef JOBJECT64 AccessibleSelection;
451590Srgrimes    typedef JOBJECT64 Java_Object;
461590Srgrimes    typedef JOBJECT64 PropertyChangeEvent;
4723693Speter    typedef JOBJECT64 FocusEvent;
481590Srgrimes    typedef JOBJECT64 CaretEvent;
491590Srgrimes    typedef JOBJECT64 MouseEvent;
501590Srgrimes    typedef JOBJECT64 MenuEvent;
511590Srgrimes    typedef JOBJECT64 AccessibleTable;
521590Srgrimes    typedef JOBJECT64 AccessibleHyperlink;
531590Srgrimes    typedef JOBJECT64 AccessibleHypertext;
541590Srgrimes
551590Srgrimes
561590Srgrimes    typedef void (*Windows_runFP) ();
571590Srgrimes
581590Srgrimes    typedef void (*SetPropertyChangeFP) (AccessBridge_PropertyChangeFP fp);
591590Srgrimes
601590Srgrimes    typedef void (*SetJavaShutdownFP) (AccessBridge_JavaShutdownFP fp);
611590Srgrimes    typedef void (*SetFocusGainedFP) (AccessBridge_FocusGainedFP fp);
621590Srgrimes    typedef void (*SetFocusLostFP) (AccessBridge_FocusLostFP fp);
631590Srgrimes
641590Srgrimes    typedef void (*SetCaretUpdateFP) (AccessBridge_CaretUpdateFP fp);
651590Srgrimes
661590Srgrimes    typedef void (*SetMouseClickedFP) (AccessBridge_MouseClickedFP fp);
671590Srgrimes    typedef void (*SetMouseEnteredFP) (AccessBridge_MouseEnteredFP fp);
681590Srgrimes    typedef void (*SetMouseExitedFP) (AccessBridge_MouseExitedFP fp);
691590Srgrimes    typedef void (*SetMousePressedFP) (AccessBridge_MousePressedFP fp);
701590Srgrimes    typedef void (*SetMouseReleasedFP) (AccessBridge_MouseReleasedFP fp);
711590Srgrimes
721590Srgrimes    typedef void (*SetMenuCanceledFP) (AccessBridge_MenuCanceledFP fp);
731590Srgrimes    typedef void (*SetMenuDeselectedFP) (AccessBridge_MenuDeselectedFP fp);
741590Srgrimes    typedef void (*SetMenuSelectedFP) (AccessBridge_MenuSelectedFP fp);
7523693Speter    typedef void (*SetPopupMenuCanceledFP) (AccessBridge_PopupMenuCanceledFP fp);
761590Srgrimes    typedef void (*SetPopupMenuWillBecomeInvisibleFP) (AccessBridge_PopupMenuWillBecomeInvisibleFP fp);
771590Srgrimes    typedef void (*SetPopupMenuWillBecomeVisibleFP) (AccessBridge_PopupMenuWillBecomeVisibleFP fp);
781590Srgrimes
791590Srgrimes    typedef void (*SetPropertyNameChangeFP) (AccessBridge_PropertyNameChangeFP fp);
801590Srgrimes    typedef void (*SetPropertyDescriptionChangeFP) (AccessBridge_PropertyDescriptionChangeFP fp);
8123693Speter    typedef void (*SetPropertyStateChangeFP) (AccessBridge_PropertyStateChangeFP fp);
821590Srgrimes    typedef void (*SetPropertyValueChangeFP) (AccessBridge_PropertyValueChangeFP fp);
831590Srgrimes    typedef void (*SetPropertySelectionChangeFP) (AccessBridge_PropertySelectionChangeFP fp);
8423693Speter    typedef void (*SetPropertyTextChangeFP) (AccessBridge_PropertyTextChangeFP fp);
8523693Speter    typedef void (*SetPropertyCaretChangeFP) (AccessBridge_PropertyCaretChangeFP fp);
861590Srgrimes    typedef void (*SetPropertyVisibleDataChangeFP) (AccessBridge_PropertyVisibleDataChangeFP fp);
871590Srgrimes    typedef void (*SetPropertyChildChangeFP) (AccessBridge_PropertyChildChangeFP fp);
881590Srgrimes    typedef void (*SetPropertyActiveDescendentChangeFP) (AccessBridge_PropertyActiveDescendentChangeFP fp);
891590Srgrimes
901590Srgrimes    typedef void (*SetPropertyTableModelChangeFP) (AccessBridge_PropertyTableModelChangeFP fp);
911590Srgrimes
921590Srgrimes    typedef void (*ReleaseJavaObjectFP) (long vmID, Java_Object object);
931590Srgrimes
941590Srgrimes    typedef BOOL (*GetVersionInfoFP) (long vmID, AccessBridgeVersionInfo *info);
951590Srgrimes
961590Srgrimes    typedef BOOL (*IsJavaWindowFP) (HWND window);
971590Srgrimes    typedef BOOL (*IsSameObjectFP) (long vmID, JOBJECT64 obj1, JOBJECT64 obj2);
981590Srgrimes    typedef BOOL (*GetAccessibleContextFromHWNDFP) (HWND window, long *vmID, AccessibleContext *ac);
991590Srgrimes    typedef HWND (*getHWNDFromAccessibleContextFP) (long vmID, AccessibleContext ac);
1001590Srgrimes
1011590Srgrimes    typedef BOOL (*GetAccessibleContextAtFP) (long vmID, AccessibleContext acParent,
1021590Srgrimes                                              jint x, jint y, AccessibleContext *ac);
1031590Srgrimes    typedef BOOL (*GetAccessibleContextWithFocusFP) (HWND window, long *vmID, AccessibleContext *ac);
1041590Srgrimes    typedef BOOL (*GetAccessibleContextInfoFP) (long vmID, AccessibleContext ac, AccessibleContextInfo *info);
1051590Srgrimes    typedef AccessibleContext (*GetAccessibleChildFromContextFP) (long vmID, AccessibleContext ac, jint i);
1061590Srgrimes    typedef AccessibleContext (*GetAccessibleParentFromContextFP) (long vmID, AccessibleContext ac);
1071590Srgrimes
1081590Srgrimes    /* begin AccessibleTable */
1099993Sache    typedef BOOL (*getAccessibleTableInfoFP) (long vmID, AccessibleContext ac, AccessibleTableInfo *tableInfo);
1109993Sache    typedef BOOL (*getAccessibleTableCellInfoFP) (long vmID, AccessibleTable accessibleTable,
1111590Srgrimes                                                  jint row, jint column, AccessibleTableCellInfo *tableCellInfo);
1121590Srgrimes
1131590Srgrimes    typedef BOOL (*getAccessibleTableRowHeaderFP) (long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo);
1141590Srgrimes    typedef BOOL (*getAccessibleTableColumnHeaderFP) (long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo);
1151590Srgrimes
1161590Srgrimes    typedef AccessibleContext (*getAccessibleTableRowDescriptionFP) (long vmID, AccessibleContext acParent, jint row);
1171590Srgrimes    typedef AccessibleContext (*getAccessibleTableColumnDescriptionFP) (long vmID, AccessibleContext acParent, jint column);
1181590Srgrimes
1192537Spst    typedef jint (*getAccessibleTableRowSelectionCountFP) (long vmID, AccessibleTable table);
1201590Srgrimes    typedef BOOL (*isAccessibleTableRowSelectedFP) (long vmID, AccessibleTable table, jint row);
1211590Srgrimes    typedef BOOL (*getAccessibleTableRowSelectionsFP) (long vmID, AccessibleTable table, jint count,
1221590Srgrimes                                                       jint *selections);
1231590Srgrimes
1241590Srgrimes    typedef jint (*getAccessibleTableColumnSelectionCountFP) (long vmID, AccessibleTable table);
1251590Srgrimes    typedef BOOL (*isAccessibleTableColumnSelectedFP) (long vmID, AccessibleTable table, jint column);
1261590Srgrimes    typedef BOOL (*getAccessibleTableColumnSelectionsFP) (long vmID, AccessibleTable table, jint count,
1271590Srgrimes                                                          jint *selections);
1281590Srgrimes
1291590Srgrimes    typedef jint (*getAccessibleTableRowFP) (long vmID, AccessibleTable table, jint index);
1301590Srgrimes    typedef jint (*getAccessibleTableColumnFP) (long vmID, AccessibleTable table, jint index);
1311590Srgrimes    typedef jint (*getAccessibleTableIndexFP) (long vmID, AccessibleTable table, jint row, jint column);
1321590Srgrimes    /* end AccessibleTable */
1331590Srgrimes
1341590Srgrimes    /* AccessibleRelationSet */
1351590Srgrimes    typedef BOOL (*getAccessibleRelationSetFP) (long vmID, AccessibleContext accessibleContext,
1361590Srgrimes                                                AccessibleRelationSetInfo *relationSetInfo);
1371590Srgrimes
1381590Srgrimes    /* AccessibleHypertext */
1391590Srgrimes    typedef BOOL (*getAccessibleHypertextFP)(long vmID, AccessibleContext accessibleContext,
1401590Srgrimes                                             AccessibleHypertextInfo *hypertextInfo);
1411590Srgrimes
1421590Srgrimes    typedef BOOL (*activateAccessibleHyperlinkFP)(long vmID, AccessibleContext accessibleContext,
1431590Srgrimes                                                  AccessibleHyperlink accessibleHyperlink);
1441590Srgrimes
1451590Srgrimes    typedef jint (*getAccessibleHyperlinkCountFP)(const long vmID,
1461590Srgrimes                                                      const AccessibleContext accessibleContext);
1471590Srgrimes
1481590Srgrimes    typedef BOOL (*getAccessibleHypertextExtFP) (const long vmID,
1491590Srgrimes                                                 const AccessibleContext accessibleContext,
1501590Srgrimes                                                 const jint nStartIndex,
1511590Srgrimes                                                 AccessibleHypertextInfo *hypertextInfo);
1521590Srgrimes
1531590Srgrimes    typedef jint (*getAccessibleHypertextLinkIndexFP)(const long vmID,
1541590Srgrimes                                                      const AccessibleHypertext hypertext,
1551590Srgrimes                                                      const jint nIndex);
1561590Srgrimes
1571590Srgrimes    typedef BOOL (*getAccessibleHyperlinkFP)(const long vmID,
1581590Srgrimes                                             const AccessibleHypertext hypertext,
1592537Spst                                             const jint nIndex,
1602537Spst                                             AccessibleHyperlinkInfo *hyperlinkInfo);
1611590Srgrimes
1621590Srgrimes
1631590Srgrimes    /* Accessible KeyBindings, Icons and Actions */
1641590Srgrimes    typedef BOOL (*getAccessibleKeyBindingsFP)(long vmID, AccessibleContext accessibleContext,
1651590Srgrimes                                               AccessibleKeyBindings *keyBindings);
1661590Srgrimes
1671590Srgrimes    typedef BOOL (*getAccessibleIconsFP)(long vmID, AccessibleContext accessibleContext,
1681590Srgrimes                                         AccessibleIcons *icons);
1691590Srgrimes
1701590Srgrimes    typedef BOOL (*getAccessibleActionsFP)(long vmID, AccessibleContext accessibleContext,
1711590Srgrimes                                           AccessibleActions *actions);
1721590Srgrimes
1731590Srgrimes    typedef BOOL (*doAccessibleActionsFP)(long vmID, AccessibleContext accessibleContext,
1741590Srgrimes                                          AccessibleActionsToDo *actionsToDo, jint *failure);
1751590Srgrimes
1761590Srgrimes
1779993Sache    /* AccessibleText */
1781590Srgrimes
1791590Srgrimes    typedef BOOL (*GetAccessibleTextInfoFP) (long vmID, AccessibleText at, AccessibleTextInfo *textInfo, jint x, jint y);
1801590Srgrimes    typedef BOOL (*GetAccessibleTextItemsFP) (long vmID, AccessibleText at, AccessibleTextItemsInfo *textItems, jint index);
1811590Srgrimes    typedef BOOL (*GetAccessibleTextSelectionInfoFP) (long vmID, AccessibleText at, AccessibleTextSelectionInfo *textSelection);
1821590Srgrimes    typedef BOOL (*GetAccessibleTextAttributesFP) (long vmID, AccessibleText at, jint index, AccessibleTextAttributesInfo *attributes);
1831590Srgrimes    typedef BOOL (*GetAccessibleTextRectFP) (long vmID, AccessibleText at, AccessibleTextRectInfo *rectInfo, jint index);
1841590Srgrimes    typedef BOOL (*GetAccessibleTextLineBoundsFP) (long vmID, AccessibleText at, jint index, jint *startIndex, jint *endIndex);
1851590Srgrimes    typedef BOOL (*GetAccessibleTextRangeFP) (long vmID, AccessibleText at, jint start, jint end, wchar_t *text, short len);
1861590Srgrimes
1871590Srgrimes    typedef BOOL (*GetCurrentAccessibleValueFromContextFP) (long vmID, AccessibleValue av, wchar_t *value, short len);
1881590Srgrimes    typedef BOOL (*GetMaximumAccessibleValueFromContextFP) (long vmID, AccessibleValue av, wchar_t *value, short len);
1891590Srgrimes    typedef BOOL (*GetMinimumAccessibleValueFromContextFP) (long vmID, AccessibleValue av, wchar_t *value, short len);
1901590Srgrimes
1911590Srgrimes    typedef void (*AddAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as, int i);
1921590Srgrimes    typedef void (*ClearAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as);
1931590Srgrimes    typedef JOBJECT64 (*GetAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as, int i);
1941590Srgrimes    typedef int (*GetAccessibleSelectionCountFromContextFP) (long vmID, AccessibleSelection as);
1951590Srgrimes    typedef BOOL (*IsAccessibleChildSelectedFromContextFP) (long vmID, AccessibleSelection as, int i);
1961590Srgrimes    typedef void (*RemoveAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as, int i);
1971590Srgrimes    typedef void (*SelectAllAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as);
1981590Srgrimes
1991590Srgrimes    /* Utility methods */
2001590Srgrimes
2011590Srgrimes    typedef BOOL (*setTextContentsFP) (const long vmID, const AccessibleContext ac, const wchar_t *text);
2021590Srgrimes    typedef AccessibleContext (*getParentWithRoleFP) (const long vmID, const AccessibleContext ac, const wchar_t *role);
2031590Srgrimes    typedef AccessibleContext (*getParentWithRoleElseRootFP) (const long vmID, const AccessibleContext ac, const wchar_t *role);
2041590Srgrimes    typedef AccessibleContext (*getTopLevelObjectFP) (const long vmID, const AccessibleContext ac);
2051590Srgrimes    typedef int (*getObjectDepthFP) (const long vmID, const AccessibleContext ac);
2061590Srgrimes    typedef AccessibleContext (*getActiveDescendentFP) (const long vmID, const AccessibleContext ac);
2071590Srgrimes
2081590Srgrimes
2091590Srgrimes    typedef BOOL (*getVirtualAccessibleNameFP) (const long vmID, const AccessibleContext accessibleContext,
2101590Srgrimes                                             wchar_t *name, int len);
2119993Sache
2121590Srgrimes    typedef BOOL (*requestFocusFP) (const long vmID, const AccessibleContext accessibleContext);
2139987Swollman
2141590Srgrimes    typedef BOOL (*selectTextRangeFP) (const long vmID, const AccessibleContext accessibleContext,
2151590Srgrimes                                       const int startIndex, const int endIndex);
2161590Srgrimes
2171590Srgrimes    typedef BOOL (*getTextAttributesInRangeFP) (const long vmID, const AccessibleContext accessibleContext,
2181590Srgrimes                                                const int startIndex, const int endIndex,
2191590Srgrimes                                                AccessibleTextAttributesInfo *attributes, short *len);
2201590Srgrimes
2211590Srgrimes    typedef int (*getVisibleChildrenCountFP) (const long vmID, const AccessibleContext accessibleContext);
2221590Srgrimes
2231590Srgrimes    typedef BOOL (*getVisibleChildrenFP) (const long vmID, const AccessibleContext accessibleContext,
2241590Srgrimes                                          const int startIndex, VisibleChildrenInfo *children);
2251590Srgrimes
2261590Srgrimes    typedef BOOL (*setCaretPositionFP) (const long vmID, const AccessibleContext accessibleContext, const int position);
2271590Srgrimes
2281590Srgrimes    typedef BOOL (*getCaretLocationFP) (long vmID, AccessibleContext ac, AccessibleTextRectInfo *rectInfo, jint index);
2292537Spst
2302537Spst    typedef int (*getEventsWaitingFP) ();
2312537Spst
2322537Spst    typedef struct AccessBridgeFPsTag {
2339993Sache        Windows_runFP Windows_run;
2342537Spst
2352537Spst        SetPropertyChangeFP SetPropertyChange;
2362537Spst
2379993Sache        SetJavaShutdownFP SetJavaShutdown;
2382537Spst        SetFocusGainedFP SetFocusGained;
2392537Spst        SetFocusLostFP SetFocusLost;
2402537Spst
2412537Spst        SetCaretUpdateFP SetCaretUpdate;
2429993Sache
2432537Spst        SetMouseClickedFP SetMouseClicked;
2442537Spst        SetMouseEnteredFP SetMouseEntered;
2452537Spst        SetMouseExitedFP SetMouseExited;
2461590Srgrimes        SetMousePressedFP SetMousePressed;
2471590Srgrimes        SetMouseReleasedFP SetMouseReleased;
2481590Srgrimes
2491590Srgrimes        SetMenuCanceledFP SetMenuCanceled;
2501590Srgrimes        SetMenuDeselectedFP SetMenuDeselected;
2511590Srgrimes        SetMenuSelectedFP SetMenuSelected;
2521590Srgrimes        SetPopupMenuCanceledFP SetPopupMenuCanceled;
2531590Srgrimes        SetPopupMenuWillBecomeInvisibleFP SetPopupMenuWillBecomeInvisible;
2541590Srgrimes        SetPopupMenuWillBecomeVisibleFP SetPopupMenuWillBecomeVisible;
2551590Srgrimes
2561590Srgrimes        SetPropertyNameChangeFP SetPropertyNameChange;
2571590Srgrimes        SetPropertyDescriptionChangeFP SetPropertyDescriptionChange;
2581590Srgrimes        SetPropertyStateChangeFP SetPropertyStateChange;
2591590Srgrimes        SetPropertyValueChangeFP SetPropertyValueChange;
2601590Srgrimes        SetPropertySelectionChangeFP SetPropertySelectionChange;
2611590Srgrimes        SetPropertyTextChangeFP SetPropertyTextChange;
2621590Srgrimes        SetPropertyCaretChangeFP SetPropertyCaretChange;
2631590Srgrimes        SetPropertyVisibleDataChangeFP SetPropertyVisibleDataChange;
2641590Srgrimes        SetPropertyChildChangeFP SetPropertyChildChange;
2651590Srgrimes        SetPropertyActiveDescendentChangeFP SetPropertyActiveDescendentChange;
2661590Srgrimes
2671590Srgrimes        SetPropertyTableModelChangeFP SetPropertyTableModelChange;
2681590Srgrimes
2691590Srgrimes        ReleaseJavaObjectFP ReleaseJavaObject;
2701590Srgrimes        GetVersionInfoFP GetVersionInfo;
2711590Srgrimes
2721590Srgrimes        IsJavaWindowFP IsJavaWindow;
2731590Srgrimes        IsSameObjectFP IsSameObject;
2741590Srgrimes        GetAccessibleContextFromHWNDFP GetAccessibleContextFromHWND;
2751590Srgrimes        getHWNDFromAccessibleContextFP getHWNDFromAccessibleContext;
2761590Srgrimes
2771590Srgrimes        GetAccessibleContextAtFP GetAccessibleContextAt;
2781590Srgrimes        GetAccessibleContextWithFocusFP GetAccessibleContextWithFocus;
2791590Srgrimes        GetAccessibleContextInfoFP GetAccessibleContextInfo;
2801590Srgrimes        GetAccessibleChildFromContextFP GetAccessibleChildFromContext;
2811590Srgrimes        GetAccessibleParentFromContextFP GetAccessibleParentFromContext;
2821590Srgrimes
2831590Srgrimes        getAccessibleTableInfoFP getAccessibleTableInfo;
2841590Srgrimes        getAccessibleTableCellInfoFP getAccessibleTableCellInfo;
2851590Srgrimes
2861590Srgrimes        getAccessibleTableRowHeaderFP getAccessibleTableRowHeader;
2871590Srgrimes        getAccessibleTableColumnHeaderFP getAccessibleTableColumnHeader;
2881590Srgrimes
2891590Srgrimes        getAccessibleTableRowDescriptionFP getAccessibleTableRowDescription;
2901590Srgrimes        getAccessibleTableColumnDescriptionFP getAccessibleTableColumnDescription;
2911590Srgrimes
2921590Srgrimes        getAccessibleTableRowSelectionCountFP getAccessibleTableRowSelectionCount;
2931590Srgrimes        isAccessibleTableRowSelectedFP isAccessibleTableRowSelected;
2941590Srgrimes        getAccessibleTableRowSelectionsFP getAccessibleTableRowSelections;
2951590Srgrimes
2961590Srgrimes        getAccessibleTableColumnSelectionCountFP getAccessibleTableColumnSelectionCount;
2971590Srgrimes        isAccessibleTableColumnSelectedFP isAccessibleTableColumnSelected;
2981590Srgrimes        getAccessibleTableColumnSelectionsFP getAccessibleTableColumnSelections;
2991590Srgrimes
3001590Srgrimes        getAccessibleTableRowFP getAccessibleTableRow;
3011590Srgrimes        getAccessibleTableColumnFP getAccessibleTableColumn;
3021590Srgrimes        getAccessibleTableIndexFP getAccessibleTableIndex;
3031590Srgrimes
3041590Srgrimes        getAccessibleRelationSetFP getAccessibleRelationSet;
3051590Srgrimes
3061590Srgrimes        getAccessibleHypertextFP getAccessibleHypertext;
3071590Srgrimes        activateAccessibleHyperlinkFP activateAccessibleHyperlink;
3081590Srgrimes        getAccessibleHyperlinkCountFP getAccessibleHyperlinkCount;
3091590Srgrimes        getAccessibleHypertextExtFP getAccessibleHypertextExt;
3101590Srgrimes        getAccessibleHypertextLinkIndexFP getAccessibleHypertextLinkIndex;
3111590Srgrimes        getAccessibleHyperlinkFP getAccessibleHyperlink;
3121590Srgrimes
3131590Srgrimes        getAccessibleKeyBindingsFP getAccessibleKeyBindings;
3141590Srgrimes        getAccessibleIconsFP getAccessibleIcons;
3151590Srgrimes        getAccessibleActionsFP getAccessibleActions;
31623971Sache        doAccessibleActionsFP doAccessibleActions;
31723971Sache
3181590Srgrimes        GetAccessibleTextInfoFP GetAccessibleTextInfo;
3191590Srgrimes        GetAccessibleTextItemsFP GetAccessibleTextItems;
3201590Srgrimes        GetAccessibleTextSelectionInfoFP GetAccessibleTextSelectionInfo;
3211590Srgrimes        GetAccessibleTextAttributesFP GetAccessibleTextAttributes;
3221590Srgrimes        GetAccessibleTextRectFP GetAccessibleTextRect;
3231590Srgrimes        GetAccessibleTextLineBoundsFP GetAccessibleTextLineBounds;
3241590Srgrimes        GetAccessibleTextRangeFP GetAccessibleTextRange;
3251590Srgrimes
3261590Srgrimes        GetCurrentAccessibleValueFromContextFP GetCurrentAccessibleValueFromContext;
3271590Srgrimes        GetMaximumAccessibleValueFromContextFP GetMaximumAccessibleValueFromContext;
3281590Srgrimes        GetMinimumAccessibleValueFromContextFP GetMinimumAccessibleValueFromContext;
3291590Srgrimes
33023971Sache        AddAccessibleSelectionFromContextFP AddAccessibleSelectionFromContext;
33123971Sache        ClearAccessibleSelectionFromContextFP ClearAccessibleSelectionFromContext;
3321590Srgrimes        GetAccessibleSelectionFromContextFP GetAccessibleSelectionFromContext;
3331590Srgrimes        GetAccessibleSelectionCountFromContextFP GetAccessibleSelectionCountFromContext;
3341590Srgrimes        IsAccessibleChildSelectedFromContextFP IsAccessibleChildSelectedFromContext;
3351590Srgrimes        RemoveAccessibleSelectionFromContextFP RemoveAccessibleSelectionFromContext;
3361590Srgrimes        SelectAllAccessibleSelectionFromContextFP SelectAllAccessibleSelectionFromContext;
3371590Srgrimes
3381590Srgrimes        setTextContentsFP setTextContents;
3391590Srgrimes        getParentWithRoleFP getParentWithRole;
3401590Srgrimes        getTopLevelObjectFP getTopLevelObject;
3411590Srgrimes        getParentWithRoleElseRootFP getParentWithRoleElseRoot;
3421590Srgrimes        getObjectDepthFP getObjectDepth;
3431590Srgrimes        getActiveDescendentFP getActiveDescendent;
3449994Sache
3451590Srgrimes        getVirtualAccessibleNameFP getVirtualAccessibleName;
3461590Srgrimes        requestFocusFP requestFocus;
3471590Srgrimes        selectTextRangeFP selectTextRange;
3481590Srgrimes        getTextAttributesInRangeFP getTextAttributesInRange;
3491590Srgrimes        getVisibleChildrenCountFP getVisibleChildrenCount;
3501590Srgrimes        getVisibleChildrenFP getVisibleChildren;
3511590Srgrimes        setCaretPositionFP setCaretPosition;
3521590Srgrimes        getCaretLocationFP getCaretLocation;
3531590Srgrimes
3541590Srgrimes        getEventsWaitingFP getEventsWaiting;
3551590Srgrimes
3561590Srgrimes    } AccessBridgeFPs;
3571590Srgrimes
358
359    /**
360     * Initialize the world
361     */
362    BOOL initializeAccessBridge();
363    BOOL shutdownAccessBridge();
364
365    /**
366     * Window routines
367     */
368    BOOL IsJavaWindow(HWND window);
369
370    // Returns the virtual machine ID and AccessibleContext for a top-level window
371    BOOL GetAccessibleContextFromHWND(HWND target, long *vmID, AccessibleContext *ac);
372
373    // Returns the HWND from the AccessibleContext of a top-level window
374    HWND getHWNDFromAccessibleContext(long vmID, AccessibleContext ac);
375
376
377    /**
378     * Event handling routines
379     */
380    void SetJavaShutdown(AccessBridge_JavaShutdownFP fp);
381    void SetFocusGained(AccessBridge_FocusGainedFP fp);
382    void SetFocusLost(AccessBridge_FocusLostFP fp);
383
384    void SetCaretUpdate(AccessBridge_CaretUpdateFP fp);
385
386    void SetMouseClicked(AccessBridge_MouseClickedFP fp);
387    void SetMouseEntered(AccessBridge_MouseEnteredFP fp);
388    void SetMouseExited(AccessBridge_MouseExitedFP fp);
389    void SetMousePressed(AccessBridge_MousePressedFP fp);
390    void SetMouseReleased(AccessBridge_MouseReleasedFP fp);
391
392    void SetMenuCanceled(AccessBridge_MenuCanceledFP fp);
393    void SetMenuDeselected(AccessBridge_MenuDeselectedFP fp);
394    void SetMenuSelected(AccessBridge_MenuSelectedFP fp);
395    void SetPopupMenuCanceled(AccessBridge_PopupMenuCanceledFP fp);
396    void SetPopupMenuWillBecomeInvisible(AccessBridge_PopupMenuWillBecomeInvisibleFP fp);
397    void SetPopupMenuWillBecomeVisible(AccessBridge_PopupMenuWillBecomeVisibleFP fp);
398
399    void SetPropertyNameChange(AccessBridge_PropertyNameChangeFP fp);
400    void SetPropertyDescriptionChange(AccessBridge_PropertyDescriptionChangeFP fp);
401    void SetPropertyStateChange(AccessBridge_PropertyStateChangeFP fp);
402    void SetPropertyValueChange(AccessBridge_PropertyValueChangeFP fp);
403    void SetPropertySelectionChange(AccessBridge_PropertySelectionChangeFP fp);
404    void SetPropertyTextChange(AccessBridge_PropertyTextChangeFP fp);
405    void SetPropertyCaretChange(AccessBridge_PropertyCaretChangeFP fp);
406    void SetPropertyVisibleDataChange(AccessBridge_PropertyVisibleDataChangeFP fp);
407    void SetPropertyChildChange(AccessBridge_PropertyChildChangeFP fp);
408    void SetPropertyActiveDescendentChange(AccessBridge_PropertyActiveDescendentChangeFP fp);
409
410    void SetPropertyTableModelChange(AccessBridge_PropertyTableModelChangeFP fp);
411
412
413    /**
414     * General routines
415     */
416    void ReleaseJavaObject(long vmID, Java_Object object);
417    BOOL GetVersionInfo(long vmID, AccessBridgeVersionInfo *info);
418    HWND GetHWNDFromAccessibleContext(long vmID, JOBJECT64 accesibleContext);
419
420    /**
421     * Accessible Context routines
422     */
423    BOOL GetAccessibleContextAt(long vmID, AccessibleContext acParent,
424                                jint x, jint y, AccessibleContext *ac);
425    BOOL GetAccessibleContextWithFocus(HWND window, long *vmID, AccessibleContext *ac);
426    BOOL GetAccessibleContextInfo(long vmID, AccessibleContext ac, AccessibleContextInfo *info);
427    AccessibleContext GetAccessibleChildFromContext(long vmID, AccessibleContext ac, jint index);
428    AccessibleContext GetAccessibleParentFromContext(long vmID, AccessibleContext ac);
429
430    /**
431     * Accessible Text routines
432     */
433    BOOL GetAccessibleTextInfo(long vmID, AccessibleText at, AccessibleTextInfo *textInfo, jint x, jint y);
434    BOOL GetAccessibleTextItems(long vmID, AccessibleText at, AccessibleTextItemsInfo *textItems, jint index);
435    BOOL GetAccessibleTextSelectionInfo(long vmID, AccessibleText at, AccessibleTextSelectionInfo *textSelection);
436    BOOL GetAccessibleTextAttributes(long vmID, AccessibleText at, jint index, AccessibleTextAttributesInfo *attributes);
437    BOOL GetAccessibleTextRect(long vmID, AccessibleText at, AccessibleTextRectInfo *rectInfo, jint index);
438    BOOL GetAccessibleTextLineBounds(long vmID, AccessibleText at, jint index, jint *startIndex, jint *endIndex);
439    BOOL GetAccessibleTextRange(long vmID, AccessibleText at, jint start, jint end, wchar_t *text, short len);
440
441    /* begin AccessibleTable routines */
442    BOOL getAccessibleTableInfo(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo);
443
444    BOOL getAccessibleTableCellInfo(long vmID, AccessibleTable accessibleTable, jint row, jint column,
445                                    AccessibleTableCellInfo *tableCellInfo);
446
447    BOOL getAccessibleTableRowHeader(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo);
448    BOOL getAccessibleTableColumnHeader(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo);
449
450    AccessibleContext getAccessibleTableRowDescription(long vmID, AccessibleContext acParent, jint row);
451    AccessibleContext getAccessibleTableColumnDescription(long vmID, AccessibleContext acParent, jint column);
452
453    jint getAccessibleTableRowSelectionCount(long vmID, AccessibleTable table);
454    BOOL isAccessibleTableRowSelected(long vmID, AccessibleTable table, jint row);
455    BOOL getAccessibleTableRowSelections(long vmID, AccessibleTable table, jint count, jint *selections);
456
457    jint getAccessibleTableColumnSelectionCount(long vmID, AccessibleTable table);
458    BOOL isAccessibleTableColumnSelected(long vmID, AccessibleTable table, jint column);
459    BOOL getAccessibleTableColumnSelections(long vmID, AccessibleTable table, jint count, jint *selections);
460
461    jint getAccessibleTableRow(long vmID, AccessibleTable table, jint index);
462    jint getAccessibleTableColumn(long vmID, AccessibleTable table, jint index);
463    jint getAccessibleTableIndex(long vmID, AccessibleTable table, jint row, jint column);
464    /* end AccessibleTable */
465
466    /* ----- AccessibleRelationSet routines */
467    BOOL getAccessibleRelationSet(long vmID, AccessibleContext accessibleContext,
468                                  AccessibleRelationSetInfo *relationSetInfo);
469
470    /* ----- AccessibleHypertext routines */
471
472     /*
473     * Returns hypertext information associated with a component.
474     */
475    BOOL getAccessibleHypertext(long vmID, AccessibleContext accessibleContext,
476                                AccessibleHypertextInfo *hypertextInfo);
477
478    /*
479     * Requests that a hyperlink be activated.
480     */
481    BOOL activateAccessibleHyperlink(long vmID, AccessibleContext accessibleContext,
482                                     AccessibleHyperlink accessibleHyperlink);
483
484    /*
485     * Returns the number of hyperlinks in a component
486     * Maps to AccessibleHypertext.getLinkCount.
487     * Returns -1 on error.
488     */
489    jint getAccessibleHyperlinkCount(const long vmID,
490                                         const AccessibleHypertext hypertext);
491
492    /*
493     * This method is used to iterate through the hyperlinks in a component.  It
494     * returns hypertext information for a component starting at hyperlink index
495     * nStartIndex.  No more than MAX_HYPERLINKS AccessibleHypertextInfo objects will
496     * be returned for each call to this method.
497     * Returns FALSE on error.
498     */
499    BOOL getAccessibleHypertextExt(const long vmID,
500                                   const AccessibleContext accessibleContext,
501                                   const jint nStartIndex,
502                                   /* OUT */ AccessibleHypertextInfo *hypertextInfo);
503
504    /*
505     * Returns the index into an array of hyperlinks that is associated with
506     * a character index in document; maps to AccessibleHypertext.getLinkIndex
507     * Returns -1 on error.
508     */
509    jint getAccessibleHypertextLinkIndex(const long vmID,
510                                         const AccessibleHypertext hypertext,
511                                         const jint nIndex);
512
513    /*
514     * Returns the nth hyperlink in a document
515     * Maps to AccessibleHypertext.getLink.
516     * Returns FALSE on error
517     */
518    BOOL getAccessibleHyperlink(const long vmID,
519                                const AccessibleHypertext hypertext,
520                                const jint nIndex,
521                                /* OUT */ AccessibleHyperlinkInfo *hyperlinkInfo);
522
523    /* Accessible KeyBindings, Icons and Actions */
524
525    /*
526     * Returns a list of key bindings associated with a component.
527     */
528    BOOL getAccessibleKeyBindings(long vmID, AccessibleContext accessibleContext,
529                                  AccessibleKeyBindings *keyBindings);
530
531    /*
532     * Returns a list of icons associate with a component.
533     */
534    BOOL getAccessibleIcons(long vmID, AccessibleContext accessibleContext,
535                            AccessibleIcons *icons);
536
537    /*
538     * Returns a list of actions that a component can perform.
539     */
540    BOOL getAccessibleActions(long vmID, AccessibleContext accessibleContext,
541                              AccessibleActions *actions);
542
543    /*
544     * Request that a list of AccessibleActions be performed by a component.
545     * Returns TRUE if all actions are performed.  Returns FALSE
546     * when the first requested action fails in which case "failure"
547     * contains the index of the action that failed.
548     */
549    BOOL doAccessibleActions(long vmID, AccessibleContext accessibleContext,
550                             AccessibleActionsToDo *actionsToDo, jint *failure);
551
552
553
554    /* Additional utility methods */
555
556    /*
557     * Returns whether two object references refer to the same object.
558     */
559    BOOL IsSameObject(long vmID, JOBJECT64 obj1, JOBJECT64 obj2);
560
561    /**
562     * Sets editable text contents.  The AccessibleContext must implement AccessibleEditableText and
563     *   be editable.  The maximum text length that can be set is MAX_STRING_SIZE - 1.
564     * Returns whether successful
565     */
566    BOOL setTextContents (const long vmID, const AccessibleContext accessibleContext, const wchar_t *text);
567
568    /**
569     * Returns the Accessible Context with the specified role that is the
570     * ancestor of a given object. The role is one of the role strings
571     * defined in AccessBridgePackages.h
572     * If there is no ancestor object that has the specified role,
573     * returns (AccessibleContext)0.
574     */
575    AccessibleContext getParentWithRole (const long vmID, const AccessibleContext accessibleContext,
576                                         const wchar_t *role);
577
578    /**
579     * Returns the Accessible Context with the specified role that is the
580     * ancestor of a given object. The role is one of the role strings
581     * defined in AccessBridgePackages.h.  If an object with the specified
582     * role does not exist, returns the top level object for the Java Window.
583     * Returns (AccessibleContext)0 on error.
584     */
585    AccessibleContext getParentWithRoleElseRoot (const long vmID, const AccessibleContext accessibleContext,
586                                                 const wchar_t *role);
587
588    /**
589     * Returns the Accessible Context for the top level object in
590     * a Java Window.  This is same Accessible Context that is obtained
591     * from GetAccessibleContextFromHWND for that window.  Returns
592     * (AccessibleContext)0 on error.
593     */
594    AccessibleContext getTopLevelObject (const long vmID, const AccessibleContext accessibleContext);
595
596    /**
597     * Returns how deep in the object hierarchy a given object is.
598     * The top most object in the object hierarchy has an object depth of 0.
599     * Returns -1 on error.
600     */
601    int getObjectDepth (const long vmID, const AccessibleContext accessibleContext);
602
603    /**
604     * Returns the Accessible Context of the current ActiveDescendent of an object.
605     * This method assumes the ActiveDescendent is the component that is currently
606     * selected in a container object.
607     * Returns (AccessibleContext)0 on error or if there is no selection.
608     */
609    AccessibleContext getActiveDescendent (const long vmID, const AccessibleContext accessibleContext);
610
611    /**
612       /**
613       * Accessible Value routines
614       */
615    BOOL GetCurrentAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len);
616    BOOL GetMaximumAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len);
617    BOOL GetMinimumAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len);
618
619    /**
620     * Accessible Selection routines
621     */
622    void AddAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i);
623    void ClearAccessibleSelectionFromContext(long vmID, AccessibleSelection as);
624    JOBJECT64 GetAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i);
625    int GetAccessibleSelectionCountFromContext(long vmID, AccessibleSelection as);
626    BOOL IsAccessibleChildSelectedFromContext(long vmID, AccessibleSelection as, int i);
627    void RemoveAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i);
628    void SelectAllAccessibleSelectionFromContext(long vmID, AccessibleSelection as);
629
630    /**
631     * Additional methods for Teton
632     */
633
634    /**
635     * Gets the AccessibleName for a component based upon the JAWS algorithm. Returns
636     * whether successful.
637     *
638     * Bug ID 4916682 - Implement JAWS AccessibleName policy
639     */
640    BOOL getVirtualAccessibleName(const long vmID, const AccessibleContext accessibleContext,
641                               wchar_t *name, int len);
642
643    /**
644     * Request focus for a component. Returns whether successful.
645     *
646     * Bug ID 4944757 - requestFocus method needed
647     */
648    BOOL requestFocus(const long vmID, const AccessibleContext accessibleContext);
649
650    /**
651     * Selects text between two indices.  Selection includes the text at the start index
652     * and the text at the end index. Returns whether successful.
653     *
654     * Bug ID 4944758 - selectTextRange method needed
655     */
656    BOOL selectTextRange(const long vmID, const AccessibleContext accessibleContext, const int startIndex,
657                         const int endIndex);
658
659    /**
660     * Get text attributes between two indices.  The attribute list includes the text at the
661     * start index and the text at the end index. Returns whether successful;
662     *
663     * Bug ID 4944761 - getTextAttributes between two indices method needed
664     */
665    BOOL getTextAttributesInRange(const long vmID, const AccessibleContext accessibleContext,
666                                  const int startIndex, const int endIndex,
667                                  AccessibleTextAttributesInfo *attributes, short *len);
668
669    /**
670     * Returns the number of visible children of a component. Returns -1 on error.
671     *
672     * Bug ID 4944762- getVisibleChildren for list-like components needed
673     */
674    int getVisibleChildrenCount(const long vmID, const AccessibleContext accessibleContext);
675
676    /**
677     * Gets the visible children of an AccessibleContext. Returns whether successful.
678     *
679     * Bug ID 4944762- getVisibleChildren for list-like components needed
680     */
681    BOOL getVisibleChildren(const long vmID, const AccessibleContext accessibleContext,
682                            const int startIndex,
683                            VisibleChildrenInfo *visibleChildrenInfo);
684
685    /**
686     * Set the caret to a text position. Returns whether successful.
687     *
688     * Bug ID 4944770 - setCaretPosition method needed
689     */
690    BOOL setCaretPosition(const long vmID, const AccessibleContext accessibleContext,
691                          const int position);
692
693    /**
694     * Gets the text caret location
695     */
696    BOOL getCaretLocation(long vmID, AccessibleContext ac,
697                          AccessibleTextRectInfo *rectInfo, jint index);
698
699    /**
700     * Gets the number of events waiting to fire
701     */
702    int getEventsWaiting();
703
704#ifdef __cplusplus
705}
706#endif
707