707 lines
		
	
	
		
			34 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			707 lines
		
	
	
		
			34 KiB
		
	
	
	
		
			C
		
	
	
	
| /*
 | |
|  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
 | |
|  * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  */
 | |
| 
 | |
| /*
 | |
|  * Wrapper functions around calls to the AccessBridge DLL
 | |
|  */
 | |
| 
 | |
| #include <windows.h>
 | |
| #include <jni.h>
 | |
| #include "AccessBridgeCallbacks.h"
 | |
| #include "AccessBridgePackages.h"
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| #define null NULL
 | |
| 
 | |
|     typedef JOBJECT64 AccessibleContext;
 | |
|     typedef JOBJECT64 AccessibleText;
 | |
|     typedef JOBJECT64 AccessibleValue;
 | |
|     typedef JOBJECT64 AccessibleSelection;
 | |
|     typedef JOBJECT64 Java_Object;
 | |
|     typedef JOBJECT64 PropertyChangeEvent;
 | |
|     typedef JOBJECT64 FocusEvent;
 | |
|     typedef JOBJECT64 CaretEvent;
 | |
|     typedef JOBJECT64 MouseEvent;
 | |
|     typedef JOBJECT64 MenuEvent;
 | |
|     typedef JOBJECT64 AccessibleTable;
 | |
|     typedef JOBJECT64 AccessibleHyperlink;
 | |
|     typedef JOBJECT64 AccessibleHypertext;
 | |
| 
 | |
| 
 | |
|     typedef void (*Windows_runFP) ();
 | |
| 
 | |
|     typedef void (*SetPropertyChangeFP) (AccessBridge_PropertyChangeFP fp);
 | |
| 
 | |
|     typedef void (*SetJavaShutdownFP) (AccessBridge_JavaShutdownFP fp);
 | |
|     typedef void (*SetFocusGainedFP) (AccessBridge_FocusGainedFP fp);
 | |
|     typedef void (*SetFocusLostFP) (AccessBridge_FocusLostFP fp);
 | |
| 
 | |
|     typedef void (*SetCaretUpdateFP) (AccessBridge_CaretUpdateFP fp);
 | |
| 
 | |
|     typedef void (*SetMouseClickedFP) (AccessBridge_MouseClickedFP fp);
 | |
|     typedef void (*SetMouseEnteredFP) (AccessBridge_MouseEnteredFP fp);
 | |
|     typedef void (*SetMouseExitedFP) (AccessBridge_MouseExitedFP fp);
 | |
|     typedef void (*SetMousePressedFP) (AccessBridge_MousePressedFP fp);
 | |
|     typedef void (*SetMouseReleasedFP) (AccessBridge_MouseReleasedFP fp);
 | |
| 
 | |
|     typedef void (*SetMenuCanceledFP) (AccessBridge_MenuCanceledFP fp);
 | |
|     typedef void (*SetMenuDeselectedFP) (AccessBridge_MenuDeselectedFP fp);
 | |
|     typedef void (*SetMenuSelectedFP) (AccessBridge_MenuSelectedFP fp);
 | |
|     typedef void (*SetPopupMenuCanceledFP) (AccessBridge_PopupMenuCanceledFP fp);
 | |
|     typedef void (*SetPopupMenuWillBecomeInvisibleFP) (AccessBridge_PopupMenuWillBecomeInvisibleFP fp);
 | |
|     typedef void (*SetPopupMenuWillBecomeVisibleFP) (AccessBridge_PopupMenuWillBecomeVisibleFP fp);
 | |
| 
 | |
|     typedef void (*SetPropertyNameChangeFP) (AccessBridge_PropertyNameChangeFP fp);
 | |
|     typedef void (*SetPropertyDescriptionChangeFP) (AccessBridge_PropertyDescriptionChangeFP fp);
 | |
|     typedef void (*SetPropertyStateChangeFP) (AccessBridge_PropertyStateChangeFP fp);
 | |
|     typedef void (*SetPropertyValueChangeFP) (AccessBridge_PropertyValueChangeFP fp);
 | |
|     typedef void (*SetPropertySelectionChangeFP) (AccessBridge_PropertySelectionChangeFP fp);
 | |
|     typedef void (*SetPropertyTextChangeFP) (AccessBridge_PropertyTextChangeFP fp);
 | |
|     typedef void (*SetPropertyCaretChangeFP) (AccessBridge_PropertyCaretChangeFP fp);
 | |
|     typedef void (*SetPropertyVisibleDataChangeFP) (AccessBridge_PropertyVisibleDataChangeFP fp);
 | |
|     typedef void (*SetPropertyChildChangeFP) (AccessBridge_PropertyChildChangeFP fp);
 | |
|     typedef void (*SetPropertyActiveDescendentChangeFP) (AccessBridge_PropertyActiveDescendentChangeFP fp);
 | |
| 
 | |
|     typedef void (*SetPropertyTableModelChangeFP) (AccessBridge_PropertyTableModelChangeFP fp);
 | |
| 
 | |
|     typedef void (*ReleaseJavaObjectFP) (long vmID, Java_Object object);
 | |
| 
 | |
|     typedef BOOL (*GetVersionInfoFP) (long vmID, AccessBridgeVersionInfo *info);
 | |
| 
 | |
|     typedef BOOL (*IsJavaWindowFP) (HWND window);
 | |
|     typedef BOOL (*IsSameObjectFP) (long vmID, JOBJECT64 obj1, JOBJECT64 obj2);
 | |
|     typedef BOOL (*GetAccessibleContextFromHWNDFP) (HWND window, long *vmID, AccessibleContext *ac);
 | |
|     typedef HWND (*getHWNDFromAccessibleContextFP) (long vmID, AccessibleContext ac);
 | |
| 
 | |
|     typedef BOOL (*GetAccessibleContextAtFP) (long vmID, AccessibleContext acParent,
 | |
|                                               jint x, jint y, AccessibleContext *ac);
 | |
|     typedef BOOL (*GetAccessibleContextWithFocusFP) (HWND window, long *vmID, AccessibleContext *ac);
 | |
|     typedef BOOL (*GetAccessibleContextInfoFP) (long vmID, AccessibleContext ac, AccessibleContextInfo *info);
 | |
|     typedef AccessibleContext (*GetAccessibleChildFromContextFP) (long vmID, AccessibleContext ac, jint i);
 | |
|     typedef AccessibleContext (*GetAccessibleParentFromContextFP) (long vmID, AccessibleContext ac);
 | |
| 
 | |
|     /* begin AccessibleTable */
 | |
|     typedef BOOL (*getAccessibleTableInfoFP) (long vmID, AccessibleContext ac, AccessibleTableInfo *tableInfo);
 | |
|     typedef BOOL (*getAccessibleTableCellInfoFP) (long vmID, AccessibleTable accessibleTable,
 | |
|                                                   jint row, jint column, AccessibleTableCellInfo *tableCellInfo);
 | |
| 
 | |
|     typedef BOOL (*getAccessibleTableRowHeaderFP) (long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo);
 | |
|     typedef BOOL (*getAccessibleTableColumnHeaderFP) (long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo);
 | |
| 
 | |
|     typedef AccessibleContext (*getAccessibleTableRowDescriptionFP) (long vmID, AccessibleContext acParent, jint row);
 | |
|     typedef AccessibleContext (*getAccessibleTableColumnDescriptionFP) (long vmID, AccessibleContext acParent, jint column);
 | |
| 
 | |
|     typedef jint (*getAccessibleTableRowSelectionCountFP) (long vmID, AccessibleTable table);
 | |
|     typedef BOOL (*isAccessibleTableRowSelectedFP) (long vmID, AccessibleTable table, jint row);
 | |
|     typedef BOOL (*getAccessibleTableRowSelectionsFP) (long vmID, AccessibleTable table, jint count,
 | |
|                                                        jint *selections);
 | |
| 
 | |
|     typedef jint (*getAccessibleTableColumnSelectionCountFP) (long vmID, AccessibleTable table);
 | |
|     typedef BOOL (*isAccessibleTableColumnSelectedFP) (long vmID, AccessibleTable table, jint column);
 | |
|     typedef BOOL (*getAccessibleTableColumnSelectionsFP) (long vmID, AccessibleTable table, jint count,
 | |
|                                                           jint *selections);
 | |
| 
 | |
|     typedef jint (*getAccessibleTableRowFP) (long vmID, AccessibleTable table, jint index);
 | |
|     typedef jint (*getAccessibleTableColumnFP) (long vmID, AccessibleTable table, jint index);
 | |
|     typedef jint (*getAccessibleTableIndexFP) (long vmID, AccessibleTable table, jint row, jint column);
 | |
|     /* end AccessibleTable */
 | |
| 
 | |
|     /* AccessibleRelationSet */
 | |
|     typedef BOOL (*getAccessibleRelationSetFP) (long vmID, AccessibleContext accessibleContext,
 | |
|                                                 AccessibleRelationSetInfo *relationSetInfo);
 | |
| 
 | |
|     /* AccessibleHypertext */
 | |
|     typedef BOOL (*getAccessibleHypertextFP)(long vmID, AccessibleContext accessibleContext,
 | |
|                                              AccessibleHypertextInfo *hypertextInfo);
 | |
| 
 | |
|     typedef BOOL (*activateAccessibleHyperlinkFP)(long vmID, AccessibleContext accessibleContext,
 | |
|                                                   AccessibleHyperlink accessibleHyperlink);
 | |
| 
 | |
|     typedef jint (*getAccessibleHyperlinkCountFP)(const long vmID,
 | |
|                                                       const AccessibleContext accessibleContext);
 | |
| 
 | |
|     typedef BOOL (*getAccessibleHypertextExtFP) (const long vmID,
 | |
|                                                  const AccessibleContext accessibleContext,
 | |
|                                                  const jint nStartIndex,
 | |
|                                                  AccessibleHypertextInfo *hypertextInfo);
 | |
| 
 | |
|     typedef jint (*getAccessibleHypertextLinkIndexFP)(const long vmID,
 | |
|                                                       const AccessibleHypertext hypertext,
 | |
|                                                       const jint nIndex);
 | |
| 
 | |
|     typedef BOOL (*getAccessibleHyperlinkFP)(const long vmID,
 | |
|                                              const AccessibleHypertext hypertext,
 | |
|                                              const jint nIndex,
 | |
|                                              AccessibleHyperlinkInfo *hyperlinkInfo);
 | |
| 
 | |
| 
 | |
|     /* Accessible KeyBindings, Icons and Actions */
 | |
|     typedef BOOL (*getAccessibleKeyBindingsFP)(long vmID, AccessibleContext accessibleContext,
 | |
|                                                AccessibleKeyBindings *keyBindings);
 | |
| 
 | |
|     typedef BOOL (*getAccessibleIconsFP)(long vmID, AccessibleContext accessibleContext,
 | |
|                                          AccessibleIcons *icons);
 | |
| 
 | |
|     typedef BOOL (*getAccessibleActionsFP)(long vmID, AccessibleContext accessibleContext,
 | |
|                                            AccessibleActions *actions);
 | |
| 
 | |
|     typedef BOOL (*doAccessibleActionsFP)(long vmID, AccessibleContext accessibleContext,
 | |
|                                           AccessibleActionsToDo *actionsToDo, jint *failure);
 | |
| 
 | |
| 
 | |
|     /* AccessibleText */
 | |
| 
 | |
|     typedef BOOL (*GetAccessibleTextInfoFP) (long vmID, AccessibleText at, AccessibleTextInfo *textInfo, jint x, jint y);
 | |
|     typedef BOOL (*GetAccessibleTextItemsFP) (long vmID, AccessibleText at, AccessibleTextItemsInfo *textItems, jint index);
 | |
|     typedef BOOL (*GetAccessibleTextSelectionInfoFP) (long vmID, AccessibleText at, AccessibleTextSelectionInfo *textSelection);
 | |
|     typedef BOOL (*GetAccessibleTextAttributesFP) (long vmID, AccessibleText at, jint index, AccessibleTextAttributesInfo *attributes);
 | |
|     typedef BOOL (*GetAccessibleTextRectFP) (long vmID, AccessibleText at, AccessibleTextRectInfo *rectInfo, jint index);
 | |
|     typedef BOOL (*GetAccessibleTextLineBoundsFP) (long vmID, AccessibleText at, jint index, jint *startIndex, jint *endIndex);
 | |
|     typedef BOOL (*GetAccessibleTextRangeFP) (long vmID, AccessibleText at, jint start, jint end, wchar_t *text, short len);
 | |
| 
 | |
|     typedef BOOL (*GetCurrentAccessibleValueFromContextFP) (long vmID, AccessibleValue av, wchar_t *value, short len);
 | |
|     typedef BOOL (*GetMaximumAccessibleValueFromContextFP) (long vmID, AccessibleValue av, wchar_t *value, short len);
 | |
|     typedef BOOL (*GetMinimumAccessibleValueFromContextFP) (long vmID, AccessibleValue av, wchar_t *value, short len);
 | |
| 
 | |
|     typedef void (*AddAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as, int i);
 | |
|     typedef void (*ClearAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as);
 | |
|     typedef JOBJECT64 (*GetAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as, int i);
 | |
|     typedef int (*GetAccessibleSelectionCountFromContextFP) (long vmID, AccessibleSelection as);
 | |
|     typedef BOOL (*IsAccessibleChildSelectedFromContextFP) (long vmID, AccessibleSelection as, int i);
 | |
|     typedef void (*RemoveAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as, int i);
 | |
|     typedef void (*SelectAllAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as);
 | |
| 
 | |
|     /* Utility methods */
 | |
| 
 | |
|     typedef BOOL (*setTextContentsFP) (const long vmID, const AccessibleContext ac, const wchar_t *text);
 | |
|     typedef AccessibleContext (*getParentWithRoleFP) (const long vmID, const AccessibleContext ac, const wchar_t *role);
 | |
|     typedef AccessibleContext (*getParentWithRoleElseRootFP) (const long vmID, const AccessibleContext ac, const wchar_t *role);
 | |
|     typedef AccessibleContext (*getTopLevelObjectFP) (const long vmID, const AccessibleContext ac);
 | |
|     typedef int (*getObjectDepthFP) (const long vmID, const AccessibleContext ac);
 | |
|     typedef AccessibleContext (*getActiveDescendentFP) (const long vmID, const AccessibleContext ac);
 | |
| 
 | |
| 
 | |
|     typedef BOOL (*getVirtualAccessibleNameFP) (const long vmID, const AccessibleContext accessibleContext,
 | |
|                                              wchar_t *name, int len);
 | |
| 
 | |
|     typedef BOOL (*requestFocusFP) (const long vmID, const AccessibleContext accessibleContext);
 | |
| 
 | |
|     typedef BOOL (*selectTextRangeFP) (const long vmID, const AccessibleContext accessibleContext,
 | |
|                                        const int startIndex, const int endIndex);
 | |
| 
 | |
|     typedef BOOL (*getTextAttributesInRangeFP) (const long vmID, const AccessibleContext accessibleContext,
 | |
|                                                 const int startIndex, const int endIndex,
 | |
|                                                 AccessibleTextAttributesInfo *attributes, short *len);
 | |
| 
 | |
|     typedef int (*getVisibleChildrenCountFP) (const long vmID, const AccessibleContext accessibleContext);
 | |
| 
 | |
|     typedef BOOL (*getVisibleChildrenFP) (const long vmID, const AccessibleContext accessibleContext,
 | |
|                                           const int startIndex, VisibleChildrenInfo *children);
 | |
| 
 | |
|     typedef BOOL (*setCaretPositionFP) (const long vmID, const AccessibleContext accessibleContext, const int position);
 | |
| 
 | |
|     typedef BOOL (*getCaretLocationFP) (long vmID, AccessibleContext ac, AccessibleTextRectInfo *rectInfo, jint index);
 | |
| 
 | |
|     typedef int (*getEventsWaitingFP) ();
 | |
| 
 | |
|     typedef struct AccessBridgeFPsTag {
 | |
|         Windows_runFP Windows_run;
 | |
| 
 | |
|         SetPropertyChangeFP SetPropertyChange;
 | |
| 
 | |
|         SetJavaShutdownFP SetJavaShutdown;
 | |
|         SetFocusGainedFP SetFocusGained;
 | |
|         SetFocusLostFP SetFocusLost;
 | |
| 
 | |
|         SetCaretUpdateFP SetCaretUpdate;
 | |
| 
 | |
|         SetMouseClickedFP SetMouseClicked;
 | |
|         SetMouseEnteredFP SetMouseEntered;
 | |
|         SetMouseExitedFP SetMouseExited;
 | |
|         SetMousePressedFP SetMousePressed;
 | |
|         SetMouseReleasedFP SetMouseReleased;
 | |
| 
 | |
|         SetMenuCanceledFP SetMenuCanceled;
 | |
|         SetMenuDeselectedFP SetMenuDeselected;
 | |
|         SetMenuSelectedFP SetMenuSelected;
 | |
|         SetPopupMenuCanceledFP SetPopupMenuCanceled;
 | |
|         SetPopupMenuWillBecomeInvisibleFP SetPopupMenuWillBecomeInvisible;
 | |
|         SetPopupMenuWillBecomeVisibleFP SetPopupMenuWillBecomeVisible;
 | |
| 
 | |
|         SetPropertyNameChangeFP SetPropertyNameChange;
 | |
|         SetPropertyDescriptionChangeFP SetPropertyDescriptionChange;
 | |
|         SetPropertyStateChangeFP SetPropertyStateChange;
 | |
|         SetPropertyValueChangeFP SetPropertyValueChange;
 | |
|         SetPropertySelectionChangeFP SetPropertySelectionChange;
 | |
|         SetPropertyTextChangeFP SetPropertyTextChange;
 | |
|         SetPropertyCaretChangeFP SetPropertyCaretChange;
 | |
|         SetPropertyVisibleDataChangeFP SetPropertyVisibleDataChange;
 | |
|         SetPropertyChildChangeFP SetPropertyChildChange;
 | |
|         SetPropertyActiveDescendentChangeFP SetPropertyActiveDescendentChange;
 | |
| 
 | |
|         SetPropertyTableModelChangeFP SetPropertyTableModelChange;
 | |
| 
 | |
|         ReleaseJavaObjectFP ReleaseJavaObject;
 | |
|         GetVersionInfoFP GetVersionInfo;
 | |
| 
 | |
|         IsJavaWindowFP IsJavaWindow;
 | |
|         IsSameObjectFP IsSameObject;
 | |
|         GetAccessibleContextFromHWNDFP GetAccessibleContextFromHWND;
 | |
|         getHWNDFromAccessibleContextFP getHWNDFromAccessibleContext;
 | |
| 
 | |
|         GetAccessibleContextAtFP GetAccessibleContextAt;
 | |
|         GetAccessibleContextWithFocusFP GetAccessibleContextWithFocus;
 | |
|         GetAccessibleContextInfoFP GetAccessibleContextInfo;
 | |
|         GetAccessibleChildFromContextFP GetAccessibleChildFromContext;
 | |
|         GetAccessibleParentFromContextFP GetAccessibleParentFromContext;
 | |
| 
 | |
|         getAccessibleTableInfoFP getAccessibleTableInfo;
 | |
|         getAccessibleTableCellInfoFP getAccessibleTableCellInfo;
 | |
| 
 | |
|         getAccessibleTableRowHeaderFP getAccessibleTableRowHeader;
 | |
|         getAccessibleTableColumnHeaderFP getAccessibleTableColumnHeader;
 | |
| 
 | |
|         getAccessibleTableRowDescriptionFP getAccessibleTableRowDescription;
 | |
|         getAccessibleTableColumnDescriptionFP getAccessibleTableColumnDescription;
 | |
| 
 | |
|         getAccessibleTableRowSelectionCountFP getAccessibleTableRowSelectionCount;
 | |
|         isAccessibleTableRowSelectedFP isAccessibleTableRowSelected;
 | |
|         getAccessibleTableRowSelectionsFP getAccessibleTableRowSelections;
 | |
| 
 | |
|         getAccessibleTableColumnSelectionCountFP getAccessibleTableColumnSelectionCount;
 | |
|         isAccessibleTableColumnSelectedFP isAccessibleTableColumnSelected;
 | |
|         getAccessibleTableColumnSelectionsFP getAccessibleTableColumnSelections;
 | |
| 
 | |
|         getAccessibleTableRowFP getAccessibleTableRow;
 | |
|         getAccessibleTableColumnFP getAccessibleTableColumn;
 | |
|         getAccessibleTableIndexFP getAccessibleTableIndex;
 | |
| 
 | |
|         getAccessibleRelationSetFP getAccessibleRelationSet;
 | |
| 
 | |
|         getAccessibleHypertextFP getAccessibleHypertext;
 | |
|         activateAccessibleHyperlinkFP activateAccessibleHyperlink;
 | |
|         getAccessibleHyperlinkCountFP getAccessibleHyperlinkCount;
 | |
|         getAccessibleHypertextExtFP getAccessibleHypertextExt;
 | |
|         getAccessibleHypertextLinkIndexFP getAccessibleHypertextLinkIndex;
 | |
|         getAccessibleHyperlinkFP getAccessibleHyperlink;
 | |
| 
 | |
|         getAccessibleKeyBindingsFP getAccessibleKeyBindings;
 | |
|         getAccessibleIconsFP getAccessibleIcons;
 | |
|         getAccessibleActionsFP getAccessibleActions;
 | |
|         doAccessibleActionsFP doAccessibleActions;
 | |
| 
 | |
|         GetAccessibleTextInfoFP GetAccessibleTextInfo;
 | |
|         GetAccessibleTextItemsFP GetAccessibleTextItems;
 | |
|         GetAccessibleTextSelectionInfoFP GetAccessibleTextSelectionInfo;
 | |
|         GetAccessibleTextAttributesFP GetAccessibleTextAttributes;
 | |
|         GetAccessibleTextRectFP GetAccessibleTextRect;
 | |
|         GetAccessibleTextLineBoundsFP GetAccessibleTextLineBounds;
 | |
|         GetAccessibleTextRangeFP GetAccessibleTextRange;
 | |
| 
 | |
|         GetCurrentAccessibleValueFromContextFP GetCurrentAccessibleValueFromContext;
 | |
|         GetMaximumAccessibleValueFromContextFP GetMaximumAccessibleValueFromContext;
 | |
|         GetMinimumAccessibleValueFromContextFP GetMinimumAccessibleValueFromContext;
 | |
| 
 | |
|         AddAccessibleSelectionFromContextFP AddAccessibleSelectionFromContext;
 | |
|         ClearAccessibleSelectionFromContextFP ClearAccessibleSelectionFromContext;
 | |
|         GetAccessibleSelectionFromContextFP GetAccessibleSelectionFromContext;
 | |
|         GetAccessibleSelectionCountFromContextFP GetAccessibleSelectionCountFromContext;
 | |
|         IsAccessibleChildSelectedFromContextFP IsAccessibleChildSelectedFromContext;
 | |
|         RemoveAccessibleSelectionFromContextFP RemoveAccessibleSelectionFromContext;
 | |
|         SelectAllAccessibleSelectionFromContextFP SelectAllAccessibleSelectionFromContext;
 | |
| 
 | |
|         setTextContentsFP setTextContents;
 | |
|         getParentWithRoleFP getParentWithRole;
 | |
|         getTopLevelObjectFP getTopLevelObject;
 | |
|         getParentWithRoleElseRootFP getParentWithRoleElseRoot;
 | |
|         getObjectDepthFP getObjectDepth;
 | |
|         getActiveDescendentFP getActiveDescendent;
 | |
| 
 | |
|         getVirtualAccessibleNameFP getVirtualAccessibleName;
 | |
|         requestFocusFP requestFocus;
 | |
|         selectTextRangeFP selectTextRange;
 | |
|         getTextAttributesInRangeFP getTextAttributesInRange;
 | |
|         getVisibleChildrenCountFP getVisibleChildrenCount;
 | |
|         getVisibleChildrenFP getVisibleChildren;
 | |
|         setCaretPositionFP setCaretPosition;
 | |
|         getCaretLocationFP getCaretLocation;
 | |
| 
 | |
|         getEventsWaitingFP getEventsWaiting;
 | |
| 
 | |
|     } AccessBridgeFPs;
 | |
| 
 | |
| 
 | |
|     /**
 | |
|      * Initialize the world
 | |
|      */
 | |
|     BOOL initializeAccessBridge();
 | |
|     BOOL shutdownAccessBridge();
 | |
| 
 | |
|     /**
 | |
|      * Window routines
 | |
|      */
 | |
|     BOOL IsJavaWindow(HWND window);
 | |
| 
 | |
|     // Returns the virtual machine ID and AccessibleContext for a top-level window
 | |
|     BOOL GetAccessibleContextFromHWND(HWND target, long *vmID, AccessibleContext *ac);
 | |
| 
 | |
|     // Returns the HWND from the AccessibleContext of a top-level window
 | |
|     HWND getHWNDFromAccessibleContext(long vmID, AccessibleContext ac);
 | |
| 
 | |
| 
 | |
|     /**
 | |
|      * Event handling routines
 | |
|      */
 | |
|     void SetJavaShutdown(AccessBridge_JavaShutdownFP fp);
 | |
|     void SetFocusGained(AccessBridge_FocusGainedFP fp);
 | |
|     void SetFocusLost(AccessBridge_FocusLostFP fp);
 | |
| 
 | |
|     void SetCaretUpdate(AccessBridge_CaretUpdateFP fp);
 | |
| 
 | |
|     void SetMouseClicked(AccessBridge_MouseClickedFP fp);
 | |
|     void SetMouseEntered(AccessBridge_MouseEnteredFP fp);
 | |
|     void SetMouseExited(AccessBridge_MouseExitedFP fp);
 | |
|     void SetMousePressed(AccessBridge_MousePressedFP fp);
 | |
|     void SetMouseReleased(AccessBridge_MouseReleasedFP fp);
 | |
| 
 | |
|     void SetMenuCanceled(AccessBridge_MenuCanceledFP fp);
 | |
|     void SetMenuDeselected(AccessBridge_MenuDeselectedFP fp);
 | |
|     void SetMenuSelected(AccessBridge_MenuSelectedFP fp);
 | |
|     void SetPopupMenuCanceled(AccessBridge_PopupMenuCanceledFP fp);
 | |
|     void SetPopupMenuWillBecomeInvisible(AccessBridge_PopupMenuWillBecomeInvisibleFP fp);
 | |
|     void SetPopupMenuWillBecomeVisible(AccessBridge_PopupMenuWillBecomeVisibleFP fp);
 | |
| 
 | |
|     void SetPropertyNameChange(AccessBridge_PropertyNameChangeFP fp);
 | |
|     void SetPropertyDescriptionChange(AccessBridge_PropertyDescriptionChangeFP fp);
 | |
|     void SetPropertyStateChange(AccessBridge_PropertyStateChangeFP fp);
 | |
|     void SetPropertyValueChange(AccessBridge_PropertyValueChangeFP fp);
 | |
|     void SetPropertySelectionChange(AccessBridge_PropertySelectionChangeFP fp);
 | |
|     void SetPropertyTextChange(AccessBridge_PropertyTextChangeFP fp);
 | |
|     void SetPropertyCaretChange(AccessBridge_PropertyCaretChangeFP fp);
 | |
|     void SetPropertyVisibleDataChange(AccessBridge_PropertyVisibleDataChangeFP fp);
 | |
|     void SetPropertyChildChange(AccessBridge_PropertyChildChangeFP fp);
 | |
|     void SetPropertyActiveDescendentChange(AccessBridge_PropertyActiveDescendentChangeFP fp);
 | |
| 
 | |
|     void SetPropertyTableModelChange(AccessBridge_PropertyTableModelChangeFP fp);
 | |
| 
 | |
| 
 | |
|     /**
 | |
|      * General routines
 | |
|      */
 | |
|     void ReleaseJavaObject(long vmID, Java_Object object);
 | |
|     BOOL GetVersionInfo(long vmID, AccessBridgeVersionInfo *info);
 | |
|     HWND GetHWNDFromAccessibleContext(long vmID, JOBJECT64 accesibleContext);
 | |
| 
 | |
|     /**
 | |
|      * Accessible Context routines
 | |
|      */
 | |
|     BOOL GetAccessibleContextAt(long vmID, AccessibleContext acParent,
 | |
|                                 jint x, jint y, AccessibleContext *ac);
 | |
|     BOOL GetAccessibleContextWithFocus(HWND window, long *vmID, AccessibleContext *ac);
 | |
|     BOOL GetAccessibleContextInfo(long vmID, AccessibleContext ac, AccessibleContextInfo *info);
 | |
|     AccessibleContext GetAccessibleChildFromContext(long vmID, AccessibleContext ac, jint index);
 | |
|     AccessibleContext GetAccessibleParentFromContext(long vmID, AccessibleContext ac);
 | |
| 
 | |
|     /**
 | |
|      * Accessible Text routines
 | |
|      */
 | |
|     BOOL GetAccessibleTextInfo(long vmID, AccessibleText at, AccessibleTextInfo *textInfo, jint x, jint y);
 | |
|     BOOL GetAccessibleTextItems(long vmID, AccessibleText at, AccessibleTextItemsInfo *textItems, jint index);
 | |
|     BOOL GetAccessibleTextSelectionInfo(long vmID, AccessibleText at, AccessibleTextSelectionInfo *textSelection);
 | |
|     BOOL GetAccessibleTextAttributes(long vmID, AccessibleText at, jint index, AccessibleTextAttributesInfo *attributes);
 | |
|     BOOL GetAccessibleTextRect(long vmID, AccessibleText at, AccessibleTextRectInfo *rectInfo, jint index);
 | |
|     BOOL GetAccessibleTextLineBounds(long vmID, AccessibleText at, jint index, jint *startIndex, jint *endIndex);
 | |
|     BOOL GetAccessibleTextRange(long vmID, AccessibleText at, jint start, jint end, wchar_t *text, short len);
 | |
| 
 | |
|     /* begin AccessibleTable routines */
 | |
|     BOOL getAccessibleTableInfo(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo);
 | |
| 
 | |
|     BOOL getAccessibleTableCellInfo(long vmID, AccessibleTable accessibleTable, jint row, jint column,
 | |
|                                     AccessibleTableCellInfo *tableCellInfo);
 | |
| 
 | |
|     BOOL getAccessibleTableRowHeader(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo);
 | |
|     BOOL getAccessibleTableColumnHeader(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo);
 | |
| 
 | |
|     AccessibleContext getAccessibleTableRowDescription(long vmID, AccessibleContext acParent, jint row);
 | |
|     AccessibleContext getAccessibleTableColumnDescription(long vmID, AccessibleContext acParent, jint column);
 | |
| 
 | |
|     jint getAccessibleTableRowSelectionCount(long vmID, AccessibleTable table);
 | |
|     BOOL isAccessibleTableRowSelected(long vmID, AccessibleTable table, jint row);
 | |
|     BOOL getAccessibleTableRowSelections(long vmID, AccessibleTable table, jint count, jint *selections);
 | |
| 
 | |
|     jint getAccessibleTableColumnSelectionCount(long vmID, AccessibleTable table);
 | |
|     BOOL isAccessibleTableColumnSelected(long vmID, AccessibleTable table, jint column);
 | |
|     BOOL getAccessibleTableColumnSelections(long vmID, AccessibleTable table, jint count, jint *selections);
 | |
| 
 | |
|     jint getAccessibleTableRow(long vmID, AccessibleTable table, jint index);
 | |
|     jint getAccessibleTableColumn(long vmID, AccessibleTable table, jint index);
 | |
|     jint getAccessibleTableIndex(long vmID, AccessibleTable table, jint row, jint column);
 | |
|     /* end AccessibleTable */
 | |
| 
 | |
|     /* ----- AccessibleRelationSet routines */
 | |
|     BOOL getAccessibleRelationSet(long vmID, AccessibleContext accessibleContext,
 | |
|                                   AccessibleRelationSetInfo *relationSetInfo);
 | |
| 
 | |
|     /* ----- AccessibleHypertext routines */
 | |
| 
 | |
|      /*
 | |
|      * Returns hypertext information associated with a component.
 | |
|      */
 | |
|     BOOL getAccessibleHypertext(long vmID, AccessibleContext accessibleContext,
 | |
|                                 AccessibleHypertextInfo *hypertextInfo);
 | |
| 
 | |
|     /*
 | |
|      * Requests that a hyperlink be activated.
 | |
|      */
 | |
|     BOOL activateAccessibleHyperlink(long vmID, AccessibleContext accessibleContext,
 | |
|                                      AccessibleHyperlink accessibleHyperlink);
 | |
| 
 | |
|     /*
 | |
|      * Returns the number of hyperlinks in a component
 | |
|      * Maps to AccessibleHypertext.getLinkCount.
 | |
|      * Returns -1 on error.
 | |
|      */
 | |
|     jint getAccessibleHyperlinkCount(const long vmID,
 | |
|                                          const AccessibleHypertext hypertext);
 | |
| 
 | |
|     /*
 | |
|      * 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);
 | |
| 
 | |
|     /*
 | |
|      * 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);
 | |
| 
 | |
|     /*
 | |
|      * Returns the nth hyperlink in a document
 | |
|      * Maps to AccessibleHypertext.getLink.
 | |
|      * Returns FALSE on error
 | |
|      */
 | |
|     BOOL getAccessibleHyperlink(const long vmID,
 | |
|                                 const AccessibleHypertext hypertext,
 | |
|                                 const jint nIndex,
 | |
|                                 /* OUT */ AccessibleHyperlinkInfo *hyperlinkInfo);
 | |
| 
 | |
|     /* Accessible KeyBindings, Icons and Actions */
 | |
| 
 | |
|     /*
 | |
|      * Returns a list of key bindings associated with a component.
 | |
|      */
 | |
|     BOOL getAccessibleKeyBindings(long vmID, AccessibleContext accessibleContext,
 | |
|                                   AccessibleKeyBindings *keyBindings);
 | |
| 
 | |
|     /*
 | |
|      * Returns a list of icons associate with a component.
 | |
|      */
 | |
|     BOOL getAccessibleIcons(long vmID, AccessibleContext accessibleContext,
 | |
|                             AccessibleIcons *icons);
 | |
| 
 | |
|     /*
 | |
|      * Returns a list of actions that a component can perform.
 | |
|      */
 | |
|     BOOL getAccessibleActions(long vmID, AccessibleContext accessibleContext,
 | |
|                               AccessibleActions *actions);
 | |
| 
 | |
|     /*
 | |
|      * Request that a list of AccessibleActions be performed by a component.
 | |
|      * Returns TRUE if all actions are performed.  Returns FALSE
 | |
|      * when the first requested action fails in which case "failure"
 | |
|      * contains the index of the action that failed.
 | |
|      */
 | |
|     BOOL doAccessibleActions(long vmID, AccessibleContext accessibleContext,
 | |
|                              AccessibleActionsToDo *actionsToDo, jint *failure);
 | |
| 
 | |
| 
 | |
| 
 | |
|     /* Additional utility methods */
 | |
| 
 | |
|     /*
 | |
|      * Returns whether two object references refer to the same object.
 | |
|      */
 | |
|     BOOL IsSameObject(long vmID, JOBJECT64 obj1, JOBJECT64 obj2);
 | |
| 
 | |
|     /**
 | |
|      * Sets editable text contents.  The AccessibleContext must implement AccessibleEditableText and
 | |
|      *   be editable.  The maximum text length that can be set is MAX_STRING_SIZE - 1.
 | |
|      * Returns whether successful
 | |
|      */
 | |
|     BOOL setTextContents (const long vmID, const AccessibleContext accessibleContext, const wchar_t *text);
 | |
| 
 | |
|     /**
 | |
|      * 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);
 | |
| 
 | |
|     /**
 | |
|      * 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);
 | |
| 
 | |
|     /**
 | |
|      * 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);
 | |
| 
 | |
|     /**
 | |
|      * 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);
 | |
| 
 | |
|     /**
 | |
|      * 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);
 | |
| 
 | |
|     /**
 | |
|        /**
 | |
|        * Accessible Value routines
 | |
|        */
 | |
|     BOOL GetCurrentAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len);
 | |
|     BOOL GetMaximumAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len);
 | |
|     BOOL GetMinimumAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len);
 | |
| 
 | |
|     /**
 | |
|      * Accessible Selection routines
 | |
|      */
 | |
|     void AddAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i);
 | |
|     void ClearAccessibleSelectionFromContext(long vmID, AccessibleSelection as);
 | |
|     JOBJECT64 GetAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i);
 | |
|     int GetAccessibleSelectionCountFromContext(long vmID, AccessibleSelection as);
 | |
|     BOOL IsAccessibleChildSelectedFromContext(long vmID, AccessibleSelection as, int i);
 | |
|     void RemoveAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i);
 | |
|     void SelectAllAccessibleSelectionFromContext(long vmID, AccessibleSelection 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);
 | |
| 
 | |
|     /**
 | |
|      * Request focus for a component. Returns whether successful.
 | |
|      *
 | |
|      * Bug ID 4944757 - requestFocus method needed
 | |
|      */
 | |
|     BOOL requestFocus(const long vmID, const AccessibleContext accessibleContext);
 | |
| 
 | |
|     /**
 | |
|      * 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);
 | |
| 
 | |
|     /**
 | |
|      * 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);
 | |
| 
 | |
|     /**
 | |
|      * 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);
 | |
| 
 | |
|     /**
 | |
|      * 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);
 | |
| 
 | |
|     /**
 | |
|      * 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);
 | |
| 
 | |
|     /**
 | |
|      * Gets the text caret location
 | |
|      */
 | |
|     BOOL getCaretLocation(long vmID, AccessibleContext ac,
 | |
|                           AccessibleTextRectInfo *rectInfo, jint index);
 | |
| 
 | |
|     /**
 | |
|      * Gets the number of events waiting to fire
 | |
|      */
 | |
|     int getEventsWaiting();
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 |