jw项目windows环境软件安装
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

725 lines
35 KiB

1 year ago
  1. /*
  2. * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
  3. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  4. *
  5. * This code is free software; you can redistribute it and/or modify it
  6. * under the terms of the GNU General Public License version 2 only, as
  7. * published by the Free Software Foundation. Oracle designates this
  8. * particular file as subject to the "Classpath" exception as provided
  9. * by Oracle in the LICENSE file that accompanied this code.
  10. *
  11. * This code is distributed in the hope that it will be useful, but WITHOUT
  12. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13. * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
  14. * version 2 for more details (a copy is included in the LICENSE file that
  15. * accompanied this code).
  16. *
  17. * You should have received a copy of the GNU General Public License version
  18. * 2 along with this work; if not, write to the Free Software Foundation,
  19. * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20. *
  21. * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22. * or visit www.oracle.com if you need additional information or have any
  23. * questions.
  24. */
  25. /* Note: In addition to this header file AccessBridgeCalls.c must be compiled and
  26. * linked to your application. AccessBridgeCalls.c implements the Java Access
  27. * Bridge API and also hides the complexities associated with interfacing to the
  28. * associated Java Access Bridge DLL which is installed when Java is installed.
  29. *
  30. * AccessBridgeCalls.c is available for download from the OpenJDK repository using
  31. * the following link:
  32. *
  33. * http://hg.openjdk.java.net/jdk9/jdk9/jdk/raw-file/tip/src/jdk.accessibility/windows/native/bridge/AccessBridgeCalls.c
  34. *
  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.cpp
  39. * http://hg.openjdk.java.net/jdk9/jdk9/jdk/file/tip/src/jdk.accessibility/windows/native/jaccesswalker/jaccesswalker.cpp
  40. *
  41. *
  42. */
  43. /*
  44. * Wrapper functions around calls to the AccessBridge DLL
  45. */
  46. #include <windows.h>
  47. #include <jni.h>
  48. #include "AccessBridgeCallbacks.h"
  49. #include "AccessBridgePackages.h"
  50. #ifdef __cplusplus
  51. extern "C" {
  52. #endif
  53. #define null NULL
  54. typedef JOBJECT64 AccessibleContext;
  55. typedef JOBJECT64 AccessibleText;
  56. typedef JOBJECT64 AccessibleValue;
  57. typedef JOBJECT64 AccessibleSelection;
  58. typedef JOBJECT64 Java_Object;
  59. typedef JOBJECT64 PropertyChangeEvent;
  60. typedef JOBJECT64 FocusEvent;
  61. typedef JOBJECT64 CaretEvent;
  62. typedef JOBJECT64 MouseEvent;
  63. typedef JOBJECT64 MenuEvent;
  64. typedef JOBJECT64 AccessibleTable;
  65. typedef JOBJECT64 AccessibleHyperlink;
  66. typedef JOBJECT64 AccessibleHypertext;
  67. typedef void (*Windows_runFP) ();
  68. typedef void (*SetPropertyChangeFP) (AccessBridge_PropertyChangeFP fp);
  69. typedef void (*SetJavaShutdownFP) (AccessBridge_JavaShutdownFP fp);
  70. typedef void (*SetFocusGainedFP) (AccessBridge_FocusGainedFP fp);
  71. typedef void (*SetFocusLostFP) (AccessBridge_FocusLostFP fp);
  72. typedef void (*SetCaretUpdateFP) (AccessBridge_CaretUpdateFP fp);
  73. typedef void (*SetMouseClickedFP) (AccessBridge_MouseClickedFP fp);
  74. typedef void (*SetMouseEnteredFP) (AccessBridge_MouseEnteredFP fp);
  75. typedef void (*SetMouseExitedFP) (AccessBridge_MouseExitedFP fp);
  76. typedef void (*SetMousePressedFP) (AccessBridge_MousePressedFP fp);
  77. typedef void (*SetMouseReleasedFP) (AccessBridge_MouseReleasedFP fp);
  78. typedef void (*SetMenuCanceledFP) (AccessBridge_MenuCanceledFP fp);
  79. typedef void (*SetMenuDeselectedFP) (AccessBridge_MenuDeselectedFP fp);
  80. typedef void (*SetMenuSelectedFP) (AccessBridge_MenuSelectedFP fp);
  81. typedef void (*SetPopupMenuCanceledFP) (AccessBridge_PopupMenuCanceledFP fp);
  82. typedef void (*SetPopupMenuWillBecomeInvisibleFP) (AccessBridge_PopupMenuWillBecomeInvisibleFP fp);
  83. typedef void (*SetPopupMenuWillBecomeVisibleFP) (AccessBridge_PopupMenuWillBecomeVisibleFP fp);
  84. typedef void (*SetPropertyNameChangeFP) (AccessBridge_PropertyNameChangeFP fp);
  85. typedef void (*SetPropertyDescriptionChangeFP) (AccessBridge_PropertyDescriptionChangeFP fp);
  86. typedef void (*SetPropertyStateChangeFP) (AccessBridge_PropertyStateChangeFP fp);
  87. typedef void (*SetPropertyValueChangeFP) (AccessBridge_PropertyValueChangeFP fp);
  88. typedef void (*SetPropertySelectionChangeFP) (AccessBridge_PropertySelectionChangeFP fp);
  89. typedef void (*SetPropertyTextChangeFP) (AccessBridge_PropertyTextChangeFP fp);
  90. typedef void (*SetPropertyCaretChangeFP) (AccessBridge_PropertyCaretChangeFP fp);
  91. typedef void (*SetPropertyVisibleDataChangeFP) (AccessBridge_PropertyVisibleDataChangeFP fp);
  92. typedef void (*SetPropertyChildChangeFP) (AccessBridge_PropertyChildChangeFP fp);
  93. typedef void (*SetPropertyActiveDescendentChangeFP) (AccessBridge_PropertyActiveDescendentChangeFP fp);
  94. typedef void (*SetPropertyTableModelChangeFP) (AccessBridge_PropertyTableModelChangeFP fp);
  95. typedef void (*ReleaseJavaObjectFP) (long vmID, Java_Object object);
  96. typedef BOOL (*GetVersionInfoFP) (long vmID, AccessBridgeVersionInfo *info);
  97. typedef BOOL (*IsJavaWindowFP) (HWND window);
  98. typedef BOOL (*IsSameObjectFP) (long vmID, JOBJECT64 obj1, JOBJECT64 obj2);
  99. typedef BOOL (*GetAccessibleContextFromHWNDFP) (HWND window, long *vmID, AccessibleContext *ac);
  100. typedef HWND (*getHWNDFromAccessibleContextFP) (long vmID, AccessibleContext ac);
  101. typedef BOOL (*GetAccessibleContextAtFP) (long vmID, AccessibleContext acParent,
  102. jint x, jint y, AccessibleContext *ac);
  103. typedef BOOL (*GetAccessibleContextWithFocusFP) (HWND window, long *vmID, AccessibleContext *ac);
  104. typedef BOOL (*GetAccessibleContextInfoFP) (long vmID, AccessibleContext ac, AccessibleContextInfo *info);
  105. typedef AccessibleContext (*GetAccessibleChildFromContextFP) (long vmID, AccessibleContext ac, jint i);
  106. typedef AccessibleContext (*GetAccessibleParentFromContextFP) (long vmID, AccessibleContext ac);
  107. /* begin AccessibleTable */
  108. typedef BOOL (*getAccessibleTableInfoFP) (long vmID, AccessibleContext ac, AccessibleTableInfo *tableInfo);
  109. typedef BOOL (*getAccessibleTableCellInfoFP) (long vmID, AccessibleTable accessibleTable,
  110. jint row, jint column, AccessibleTableCellInfo *tableCellInfo);
  111. typedef BOOL (*getAccessibleTableRowHeaderFP) (long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo);
  112. typedef BOOL (*getAccessibleTableColumnHeaderFP) (long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo);
  113. typedef AccessibleContext (*getAccessibleTableRowDescriptionFP) (long vmID, AccessibleContext acParent, jint row);
  114. typedef AccessibleContext (*getAccessibleTableColumnDescriptionFP) (long vmID, AccessibleContext acParent, jint column);
  115. typedef jint (*getAccessibleTableRowSelectionCountFP) (long vmID, AccessibleTable table);
  116. typedef BOOL (*isAccessibleTableRowSelectedFP) (long vmID, AccessibleTable table, jint row);
  117. typedef BOOL (*getAccessibleTableRowSelectionsFP) (long vmID, AccessibleTable table, jint count,
  118. jint *selections);
  119. typedef jint (*getAccessibleTableColumnSelectionCountFP) (long vmID, AccessibleTable table);
  120. typedef BOOL (*isAccessibleTableColumnSelectedFP) (long vmID, AccessibleTable table, jint column);
  121. typedef BOOL (*getAccessibleTableColumnSelectionsFP) (long vmID, AccessibleTable table, jint count,
  122. jint *selections);
  123. typedef jint (*getAccessibleTableRowFP) (long vmID, AccessibleTable table, jint index);
  124. typedef jint (*getAccessibleTableColumnFP) (long vmID, AccessibleTable table, jint index);
  125. typedef jint (*getAccessibleTableIndexFP) (long vmID, AccessibleTable table, jint row, jint column);
  126. /* end AccessibleTable */
  127. /* AccessibleRelationSet */
  128. typedef BOOL (*getAccessibleRelationSetFP) (long vmID, AccessibleContext accessibleContext,
  129. AccessibleRelationSetInfo *relationSetInfo);
  130. /* AccessibleHypertext */
  131. typedef BOOL (*getAccessibleHypertextFP)(long vmID, AccessibleContext accessibleContext,
  132. AccessibleHypertextInfo *hypertextInfo);
  133. typedef BOOL (*activateAccessibleHyperlinkFP)(long vmID, AccessibleContext accessibleContext,
  134. AccessibleHyperlink accessibleHyperlink);
  135. typedef jint (*getAccessibleHyperlinkCountFP)(const long vmID,
  136. const AccessibleContext accessibleContext);
  137. typedef BOOL (*getAccessibleHypertextExtFP) (const long vmID,
  138. const AccessibleContext accessibleContext,
  139. const jint nStartIndex,
  140. AccessibleHypertextInfo *hypertextInfo);
  141. typedef jint (*getAccessibleHypertextLinkIndexFP)(const long vmID,
  142. const AccessibleHypertext hypertext,
  143. const jint nIndex);
  144. typedef BOOL (*getAccessibleHyperlinkFP)(const long vmID,
  145. const AccessibleHypertext hypertext,
  146. const jint nIndex,
  147. AccessibleHyperlinkInfo *hyperlinkInfo);
  148. /* Accessible KeyBindings, Icons and Actions */
  149. typedef BOOL (*getAccessibleKeyBindingsFP)(long vmID, AccessibleContext accessibleContext,
  150. AccessibleKeyBindings *keyBindings);
  151. typedef BOOL (*getAccessibleIconsFP)(long vmID, AccessibleContext accessibleContext,
  152. AccessibleIcons *icons);
  153. typedef BOOL (*getAccessibleActionsFP)(long vmID, AccessibleContext accessibleContext,
  154. AccessibleActions *actions);
  155. typedef BOOL (*doAccessibleActionsFP)(long vmID, AccessibleContext accessibleContext,
  156. AccessibleActionsToDo *actionsToDo, jint *failure);
  157. /* AccessibleText */
  158. typedef BOOL (*GetAccessibleTextInfoFP) (long vmID, AccessibleText at, AccessibleTextInfo *textInfo, jint x, jint y);
  159. typedef BOOL (*GetAccessibleTextItemsFP) (long vmID, AccessibleText at, AccessibleTextItemsInfo *textItems, jint index);
  160. typedef BOOL (*GetAccessibleTextSelectionInfoFP) (long vmID, AccessibleText at, AccessibleTextSelectionInfo *textSelection);
  161. typedef BOOL (*GetAccessibleTextAttributesFP) (long vmID, AccessibleText at, jint index, AccessibleTextAttributesInfo *attributes);
  162. typedef BOOL (*GetAccessibleTextRectFP) (long vmID, AccessibleText at, AccessibleTextRectInfo *rectInfo, jint index);
  163. typedef BOOL (*GetAccessibleTextLineBoundsFP) (long vmID, AccessibleText at, jint index, jint *startIndex, jint *endIndex);
  164. typedef BOOL (*GetAccessibleTextRangeFP) (long vmID, AccessibleText at, jint start, jint end, wchar_t *text, short len);
  165. typedef BOOL (*GetCurrentAccessibleValueFromContextFP) (long vmID, AccessibleValue av, wchar_t *value, short len);
  166. typedef BOOL (*GetMaximumAccessibleValueFromContextFP) (long vmID, AccessibleValue av, wchar_t *value, short len);
  167. typedef BOOL (*GetMinimumAccessibleValueFromContextFP) (long vmID, AccessibleValue av, wchar_t *value, short len);
  168. typedef void (*AddAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as, int i);
  169. typedef void (*ClearAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as);
  170. typedef JOBJECT64 (*GetAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as, int i);
  171. typedef int (*GetAccessibleSelectionCountFromContextFP) (long vmID, AccessibleSelection as);
  172. typedef BOOL (*IsAccessibleChildSelectedFromContextFP) (long vmID, AccessibleSelection as, int i);
  173. typedef void (*RemoveAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as, int i);
  174. typedef void (*SelectAllAccessibleSelectionFromContextFP) (long vmID, AccessibleSelection as);
  175. /* Utility methods */
  176. typedef BOOL (*setTextContentsFP) (const long vmID, const AccessibleContext ac, const wchar_t *text);
  177. typedef AccessibleContext (*getParentWithRoleFP) (const long vmID, const AccessibleContext ac, const wchar_t *role);
  178. typedef AccessibleContext (*getParentWithRoleElseRootFP) (const long vmID, const AccessibleContext ac, const wchar_t *role);
  179. typedef AccessibleContext (*getTopLevelObjectFP) (const long vmID, const AccessibleContext ac);
  180. typedef int (*getObjectDepthFP) (const long vmID, const AccessibleContext ac);
  181. typedef AccessibleContext (*getActiveDescendentFP) (const long vmID, const AccessibleContext ac);
  182. typedef BOOL (*getVirtualAccessibleNameFP) (const long vmID, const AccessibleContext accessibleContext,
  183. wchar_t *name, int len);
  184. typedef BOOL (*requestFocusFP) (const long vmID, const AccessibleContext accessibleContext);
  185. typedef BOOL (*selectTextRangeFP) (const long vmID, const AccessibleContext accessibleContext,
  186. const int startIndex, const int endIndex);
  187. typedef BOOL (*getTextAttributesInRangeFP) (const long vmID, const AccessibleContext accessibleContext,
  188. const int startIndex, const int endIndex,
  189. AccessibleTextAttributesInfo *attributes, short *len);
  190. typedef int (*getVisibleChildrenCountFP) (const long vmID, const AccessibleContext accessibleContext);
  191. typedef BOOL (*getVisibleChildrenFP) (const long vmID, const AccessibleContext accessibleContext,
  192. const int startIndex, VisibleChildrenInfo *children);
  193. typedef BOOL (*setCaretPositionFP) (const long vmID, const AccessibleContext accessibleContext, const int position);
  194. typedef BOOL (*getCaretLocationFP) (long vmID, AccessibleContext ac, AccessibleTextRectInfo *rectInfo, jint index);
  195. typedef int (*getEventsWaitingFP) ();
  196. typedef struct AccessBridgeFPsTag {
  197. Windows_runFP Windows_run;
  198. SetPropertyChangeFP SetPropertyChange;
  199. SetJavaShutdownFP SetJavaShutdown;
  200. SetFocusGainedFP SetFocusGained;
  201. SetFocusLostFP SetFocusLost;
  202. SetCaretUpdateFP SetCaretUpdate;
  203. SetMouseClickedFP SetMouseClicked;
  204. SetMouseEnteredFP SetMouseEntered;
  205. SetMouseExitedFP SetMouseExited;
  206. SetMousePressedFP SetMousePressed;
  207. SetMouseReleasedFP SetMouseReleased;
  208. SetMenuCanceledFP SetMenuCanceled;
  209. SetMenuDeselectedFP SetMenuDeselected;
  210. SetMenuSelectedFP SetMenuSelected;
  211. SetPopupMenuCanceledFP SetPopupMenuCanceled;
  212. SetPopupMenuWillBecomeInvisibleFP SetPopupMenuWillBecomeInvisible;
  213. SetPopupMenuWillBecomeVisibleFP SetPopupMenuWillBecomeVisible;
  214. SetPropertyNameChangeFP SetPropertyNameChange;
  215. SetPropertyDescriptionChangeFP SetPropertyDescriptionChange;
  216. SetPropertyStateChangeFP SetPropertyStateChange;
  217. SetPropertyValueChangeFP SetPropertyValueChange;
  218. SetPropertySelectionChangeFP SetPropertySelectionChange;
  219. SetPropertyTextChangeFP SetPropertyTextChange;
  220. SetPropertyCaretChangeFP SetPropertyCaretChange;
  221. SetPropertyVisibleDataChangeFP SetPropertyVisibleDataChange;
  222. SetPropertyChildChangeFP SetPropertyChildChange;
  223. SetPropertyActiveDescendentChangeFP SetPropertyActiveDescendentChange;
  224. SetPropertyTableModelChangeFP SetPropertyTableModelChange;
  225. ReleaseJavaObjectFP ReleaseJavaObject;
  226. GetVersionInfoFP GetVersionInfo;
  227. IsJavaWindowFP IsJavaWindow;
  228. IsSameObjectFP IsSameObject;
  229. GetAccessibleContextFromHWNDFP GetAccessibleContextFromHWND;
  230. getHWNDFromAccessibleContextFP getHWNDFromAccessibleContext;
  231. GetAccessibleContextAtFP GetAccessibleContextAt;
  232. GetAccessibleContextWithFocusFP GetAccessibleContextWithFocus;
  233. GetAccessibleContextInfoFP GetAccessibleContextInfo;
  234. GetAccessibleChildFromContextFP GetAccessibleChildFromContext;
  235. GetAccessibleParentFromContextFP GetAccessibleParentFromContext;
  236. getAccessibleTableInfoFP getAccessibleTableInfo;
  237. getAccessibleTableCellInfoFP getAccessibleTableCellInfo;
  238. getAccessibleTableRowHeaderFP getAccessibleTableRowHeader;
  239. getAccessibleTableColumnHeaderFP getAccessibleTableColumnHeader;
  240. getAccessibleTableRowDescriptionFP getAccessibleTableRowDescription;
  241. getAccessibleTableColumnDescriptionFP getAccessibleTableColumnDescription;
  242. getAccessibleTableRowSelectionCountFP getAccessibleTableRowSelectionCount;
  243. isAccessibleTableRowSelectedFP isAccessibleTableRowSelected;
  244. getAccessibleTableRowSelectionsFP getAccessibleTableRowSelections;
  245. getAccessibleTableColumnSelectionCountFP getAccessibleTableColumnSelectionCount;
  246. isAccessibleTableColumnSelectedFP isAccessibleTableColumnSelected;
  247. getAccessibleTableColumnSelectionsFP getAccessibleTableColumnSelections;
  248. getAccessibleTableRowFP getAccessibleTableRow;
  249. getAccessibleTableColumnFP getAccessibleTableColumn;
  250. getAccessibleTableIndexFP getAccessibleTableIndex;
  251. getAccessibleRelationSetFP getAccessibleRelationSet;
  252. getAccessibleHypertextFP getAccessibleHypertext;
  253. activateAccessibleHyperlinkFP activateAccessibleHyperlink;
  254. getAccessibleHyperlinkCountFP getAccessibleHyperlinkCount;
  255. getAccessibleHypertextExtFP getAccessibleHypertextExt;
  256. getAccessibleHypertextLinkIndexFP getAccessibleHypertextLinkIndex;
  257. getAccessibleHyperlinkFP getAccessibleHyperlink;
  258. getAccessibleKeyBindingsFP getAccessibleKeyBindings;
  259. getAccessibleIconsFP getAccessibleIcons;
  260. getAccessibleActionsFP getAccessibleActions;
  261. doAccessibleActionsFP doAccessibleActions;
  262. GetAccessibleTextInfoFP GetAccessibleTextInfo;
  263. GetAccessibleTextItemsFP GetAccessibleTextItems;
  264. GetAccessibleTextSelectionInfoFP GetAccessibleTextSelectionInfo;
  265. GetAccessibleTextAttributesFP GetAccessibleTextAttributes;
  266. GetAccessibleTextRectFP GetAccessibleTextRect;
  267. GetAccessibleTextLineBoundsFP GetAccessibleTextLineBounds;
  268. GetAccessibleTextRangeFP GetAccessibleTextRange;
  269. GetCurrentAccessibleValueFromContextFP GetCurrentAccessibleValueFromContext;
  270. GetMaximumAccessibleValueFromContextFP GetMaximumAccessibleValueFromContext;
  271. GetMinimumAccessibleValueFromContextFP GetMinimumAccessibleValueFromContext;
  272. AddAccessibleSelectionFromContextFP AddAccessibleSelectionFromContext;
  273. ClearAccessibleSelectionFromContextFP ClearAccessibleSelectionFromContext;
  274. GetAccessibleSelectionFromContextFP GetAccessibleSelectionFromContext;
  275. GetAccessibleSelectionCountFromContextFP GetAccessibleSelectionCountFromContext;
  276. IsAccessibleChildSelectedFromContextFP IsAccessibleChildSelectedFromContext;
  277. RemoveAccessibleSelectionFromContextFP RemoveAccessibleSelectionFromContext;
  278. SelectAllAccessibleSelectionFromContextFP SelectAllAccessibleSelectionFromContext;
  279. setTextContentsFP setTextContents;
  280. getParentWithRoleFP getParentWithRole;
  281. getTopLevelObjectFP getTopLevelObject;
  282. getParentWithRoleElseRootFP getParentWithRoleElseRoot;
  283. getObjectDepthFP getObjectDepth;
  284. getActiveDescendentFP getActiveDescendent;
  285. getVirtualAccessibleNameFP getVirtualAccessibleName;
  286. requestFocusFP requestFocus;
  287. selectTextRangeFP selectTextRange;
  288. getTextAttributesInRangeFP getTextAttributesInRange;
  289. getVisibleChildrenCountFP getVisibleChildrenCount;
  290. getVisibleChildrenFP getVisibleChildren;
  291. setCaretPositionFP setCaretPosition;
  292. getCaretLocationFP getCaretLocation;
  293. getEventsWaitingFP getEventsWaiting;
  294. } AccessBridgeFPs;
  295. /**
  296. * Initialize the world
  297. */
  298. BOOL initializeAccessBridge();
  299. BOOL shutdownAccessBridge();
  300. /**
  301. * Window routines
  302. */
  303. BOOL IsJavaWindow(HWND window);
  304. // Returns the virtual machine ID and AccessibleContext for a top-level window
  305. BOOL GetAccessibleContextFromHWND(HWND target, long *vmID, AccessibleContext *ac);
  306. // Returns the HWND from the AccessibleContext of a top-level window
  307. HWND getHWNDFromAccessibleContext(long vmID, AccessibleContext ac);
  308. /**
  309. * Event handling routines
  310. */
  311. void SetJavaShutdown(AccessBridge_JavaShutdownFP fp);
  312. void SetFocusGained(AccessBridge_FocusGainedFP fp);
  313. void SetFocusLost(AccessBridge_FocusLostFP fp);
  314. void SetCaretUpdate(AccessBridge_CaretUpdateFP fp);
  315. void SetMouseClicked(AccessBridge_MouseClickedFP fp);
  316. void SetMouseEntered(AccessBridge_MouseEnteredFP fp);
  317. void SetMouseExited(AccessBridge_MouseExitedFP fp);
  318. void SetMousePressed(AccessBridge_MousePressedFP fp);
  319. void SetMouseReleased(AccessBridge_MouseReleasedFP fp);
  320. void SetMenuCanceled(AccessBridge_MenuCanceledFP fp);
  321. void SetMenuDeselected(AccessBridge_MenuDeselectedFP fp);
  322. void SetMenuSelected(AccessBridge_MenuSelectedFP fp);
  323. void SetPopupMenuCanceled(AccessBridge_PopupMenuCanceledFP fp);
  324. void SetPopupMenuWillBecomeInvisible(AccessBridge_PopupMenuWillBecomeInvisibleFP fp);
  325. void SetPopupMenuWillBecomeVisible(AccessBridge_PopupMenuWillBecomeVisibleFP fp);
  326. void SetPropertyNameChange(AccessBridge_PropertyNameChangeFP fp);
  327. void SetPropertyDescriptionChange(AccessBridge_PropertyDescriptionChangeFP fp);
  328. void SetPropertyStateChange(AccessBridge_PropertyStateChangeFP fp);
  329. void SetPropertyValueChange(AccessBridge_PropertyValueChangeFP fp);
  330. void SetPropertySelectionChange(AccessBridge_PropertySelectionChangeFP fp);
  331. void SetPropertyTextChange(AccessBridge_PropertyTextChangeFP fp);
  332. void SetPropertyCaretChange(AccessBridge_PropertyCaretChangeFP fp);
  333. void SetPropertyVisibleDataChange(AccessBridge_PropertyVisibleDataChangeFP fp);
  334. void SetPropertyChildChange(AccessBridge_PropertyChildChangeFP fp);
  335. void SetPropertyActiveDescendentChange(AccessBridge_PropertyActiveDescendentChangeFP fp);
  336. void SetPropertyTableModelChange(AccessBridge_PropertyTableModelChangeFP fp);
  337. /**
  338. * General routines
  339. */
  340. void ReleaseJavaObject(long vmID, Java_Object object);
  341. BOOL GetVersionInfo(long vmID, AccessBridgeVersionInfo *info);
  342. HWND GetHWNDFromAccessibleContext(long vmID, JOBJECT64 accesibleContext);
  343. /**
  344. * Accessible Context routines
  345. */
  346. BOOL GetAccessibleContextAt(long vmID, AccessibleContext acParent,
  347. jint x, jint y, AccessibleContext *ac);
  348. BOOL GetAccessibleContextWithFocus(HWND window, long *vmID, AccessibleContext *ac);
  349. BOOL GetAccessibleContextInfo(long vmID, AccessibleContext ac, AccessibleContextInfo *info);
  350. AccessibleContext GetAccessibleChildFromContext(long vmID, AccessibleContext ac, jint index);
  351. AccessibleContext GetAccessibleParentFromContext(long vmID, AccessibleContext ac);
  352. /**
  353. * Accessible Text routines
  354. */
  355. BOOL GetAccessibleTextInfo(long vmID, AccessibleText at, AccessibleTextInfo *textInfo, jint x, jint y);
  356. BOOL GetAccessibleTextItems(long vmID, AccessibleText at, AccessibleTextItemsInfo *textItems, jint index);
  357. BOOL GetAccessibleTextSelectionInfo(long vmID, AccessibleText at, AccessibleTextSelectionInfo *textSelection);
  358. BOOL GetAccessibleTextAttributes(long vmID, AccessibleText at, jint index, AccessibleTextAttributesInfo *attributes);
  359. BOOL GetAccessibleTextRect(long vmID, AccessibleText at, AccessibleTextRectInfo *rectInfo, jint index);
  360. BOOL GetAccessibleTextLineBounds(long vmID, AccessibleText at, jint index, jint *startIndex, jint *endIndex);
  361. BOOL GetAccessibleTextRange(long vmID, AccessibleText at, jint start, jint end, wchar_t *text, short len);
  362. /* begin AccessibleTable routines */
  363. BOOL getAccessibleTableInfo(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo);
  364. BOOL getAccessibleTableCellInfo(long vmID, AccessibleTable accessibleTable, jint row, jint column,
  365. AccessibleTableCellInfo *tableCellInfo);
  366. BOOL getAccessibleTableRowHeader(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo);
  367. BOOL getAccessibleTableColumnHeader(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo);
  368. AccessibleContext getAccessibleTableRowDescription(long vmID, AccessibleContext acParent, jint row);
  369. AccessibleContext getAccessibleTableColumnDescription(long vmID, AccessibleContext acParent, jint column);
  370. jint getAccessibleTableRowSelectionCount(long vmID, AccessibleTable table);
  371. BOOL isAccessibleTableRowSelected(long vmID, AccessibleTable table, jint row);
  372. BOOL getAccessibleTableRowSelections(long vmID, AccessibleTable table, jint count, jint *selections);
  373. jint getAccessibleTableColumnSelectionCount(long vmID, AccessibleTable table);
  374. BOOL isAccessibleTableColumnSelected(long vmID, AccessibleTable table, jint column);
  375. BOOL getAccessibleTableColumnSelections(long vmID, AccessibleTable table, jint count, jint *selections);
  376. jint getAccessibleTableRow(long vmID, AccessibleTable table, jint index);
  377. jint getAccessibleTableColumn(long vmID, AccessibleTable table, jint index);
  378. jint getAccessibleTableIndex(long vmID, AccessibleTable table, jint row, jint column);
  379. /* end AccessibleTable */
  380. /* ----- AccessibleRelationSet routines */
  381. BOOL getAccessibleRelationSet(long vmID, AccessibleContext accessibleContext,
  382. AccessibleRelationSetInfo *relationSetInfo);
  383. /* ----- AccessibleHypertext routines */
  384. /*
  385. * Returns hypertext information associated with a component.
  386. */
  387. BOOL getAccessibleHypertext(long vmID, AccessibleContext accessibleContext,
  388. AccessibleHypertextInfo *hypertextInfo);
  389. /*
  390. * Requests that a hyperlink be activated.
  391. */
  392. BOOL activateAccessibleHyperlink(long vmID, AccessibleContext accessibleContext,
  393. AccessibleHyperlink accessibleHyperlink);
  394. /*
  395. * Returns the number of hyperlinks in a component
  396. * Maps to AccessibleHypertext.getLinkCount.
  397. * Returns -1 on error.
  398. */
  399. jint getAccessibleHyperlinkCount(const long vmID,
  400. const AccessibleHypertext hypertext);
  401. /*
  402. * This method is used to iterate through the hyperlinks in a component. It
  403. * returns hypertext information for a component starting at hyperlink index
  404. * nStartIndex. No more than MAX_HYPERLINKS AccessibleHypertextInfo objects will
  405. * be returned for each call to this method.
  406. * Returns FALSE on error.
  407. */
  408. BOOL getAccessibleHypertextExt(const long vmID,
  409. const AccessibleContext accessibleContext,
  410. const jint nStartIndex,
  411. /* OUT */ AccessibleHypertextInfo *hypertextInfo);
  412. /*
  413. * Returns the index into an array of hyperlinks that is associated with
  414. * a character index in document; maps to AccessibleHypertext.getLinkIndex
  415. * Returns -1 on error.
  416. */
  417. jint getAccessibleHypertextLinkIndex(const long vmID,
  418. const AccessibleHypertext hypertext,
  419. const jint nIndex);
  420. /*
  421. * Returns the nth hyperlink in a document
  422. * Maps to AccessibleHypertext.getLink.
  423. * Returns FALSE on error
  424. */
  425. BOOL getAccessibleHyperlink(const long vmID,
  426. const AccessibleHypertext hypertext,
  427. const jint nIndex,
  428. /* OUT */ AccessibleHyperlinkInfo *hyperlinkInfo);
  429. /* Accessible KeyBindings, Icons and Actions */
  430. /*
  431. * Returns a list of key bindings associated with a component.
  432. */
  433. BOOL getAccessibleKeyBindings(long vmID, AccessibleContext accessibleContext,
  434. AccessibleKeyBindings *keyBindings);
  435. /*
  436. * Returns a list of icons associate with a component.
  437. */
  438. BOOL getAccessibleIcons(long vmID, AccessibleContext accessibleContext,
  439. AccessibleIcons *icons);
  440. /*
  441. * Returns a list of actions that a component can perform.
  442. */
  443. BOOL getAccessibleActions(long vmID, AccessibleContext accessibleContext,
  444. AccessibleActions *actions);
  445. /*
  446. * Request that a list of AccessibleActions be performed by a component.
  447. * Returns TRUE if all actions are performed. Returns FALSE
  448. * when the first requested action fails in which case "failure"
  449. * contains the index of the action that failed.
  450. */
  451. BOOL doAccessibleActions(long vmID, AccessibleContext accessibleContext,
  452. AccessibleActionsToDo *actionsToDo, jint *failure);
  453. /* Additional utility methods */
  454. /*
  455. * Returns whether two object references refer to the same object.
  456. */
  457. BOOL IsSameObject(long vmID, JOBJECT64 obj1, JOBJECT64 obj2);
  458. /**
  459. * Sets editable text contents. The AccessibleContext must implement AccessibleEditableText and
  460. * be editable. The maximum text length that can be set is MAX_STRING_SIZE - 1.
  461. * Returns whether successful
  462. */
  463. BOOL setTextContents (const long vmID, const AccessibleContext accessibleContext, const wchar_t *text);
  464. /**
  465. * Returns the Accessible Context with the specified role that is the
  466. * ancestor of a given object. The role is one of the role strings
  467. * defined in AccessBridgePackages.h
  468. * If there is no ancestor object that has the specified role,
  469. * returns (AccessibleContext)0.
  470. */
  471. AccessibleContext getParentWithRole (const long vmID, const AccessibleContext accessibleContext,
  472. const wchar_t *role);
  473. /**
  474. * Returns the Accessible Context with the specified role that is the
  475. * ancestor of a given object. The role is one of the role strings
  476. * defined in AccessBridgePackages.h. If an object with the specified
  477. * role does not exist, returns the top level object for the Java Window.
  478. * Returns (AccessibleContext)0 on error.
  479. */
  480. AccessibleContext getParentWithRoleElseRoot (const long vmID, const AccessibleContext accessibleContext,
  481. const wchar_t *role);
  482. /**
  483. * Returns the Accessible Context for the top level object in
  484. * a Java Window. This is same Accessible Context that is obtained
  485. * from GetAccessibleContextFromHWND for that window. Returns
  486. * (AccessibleContext)0 on error.
  487. */
  488. AccessibleContext getTopLevelObject (const long vmID, const AccessibleContext accessibleContext);
  489. /**
  490. * Returns how deep in the object hierarchy a given object is.
  491. * The top most object in the object hierarchy has an object depth of 0.
  492. * Returns -1 on error.
  493. */
  494. int getObjectDepth (const long vmID, const AccessibleContext accessibleContext);
  495. /**
  496. * Returns the Accessible Context of the current ActiveDescendent of an object.
  497. * This method assumes the ActiveDescendent is the component that is currently
  498. * selected in a container object.
  499. * Returns (AccessibleContext)0 on error or if there is no selection.
  500. */
  501. AccessibleContext getActiveDescendent (const long vmID, const AccessibleContext accessibleContext);
  502. /**
  503. /**
  504. * Accessible Value routines
  505. */
  506. BOOL GetCurrentAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len);
  507. BOOL GetMaximumAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len);
  508. BOOL GetMinimumAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len);
  509. /**
  510. * Accessible Selection routines
  511. */
  512. void AddAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i);
  513. void ClearAccessibleSelectionFromContext(long vmID, AccessibleSelection as);
  514. JOBJECT64 GetAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i);
  515. int GetAccessibleSelectionCountFromContext(long vmID, AccessibleSelection as);
  516. BOOL IsAccessibleChildSelectedFromContext(long vmID, AccessibleSelection as, int i);
  517. void RemoveAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i);
  518. void SelectAllAccessibleSelectionFromContext(long vmID, AccessibleSelection as);
  519. /**
  520. * Additional methods for Teton
  521. */
  522. /**
  523. * Gets the AccessibleName for a component based upon the JAWS algorithm. Returns
  524. * whether successful.
  525. *
  526. * Bug ID 4916682 - Implement JAWS AccessibleName policy
  527. */
  528. BOOL getVirtualAccessibleName(const long vmID, const AccessibleContext accessibleContext,
  529. wchar_t *name, int len);
  530. /**
  531. * Request focus for a component. Returns whether successful.
  532. *
  533. * Bug ID 4944757 - requestFocus method needed
  534. */
  535. BOOL requestFocus(const long vmID, const AccessibleContext accessibleContext);
  536. /**
  537. * Selects text between two indices. Selection includes the text at the start index
  538. * and the text at the end index. Returns whether successful.
  539. *
  540. * Bug ID 4944758 - selectTextRange method needed
  541. */
  542. BOOL selectTextRange(const long vmID, const AccessibleContext accessibleContext, const int startIndex,
  543. const int endIndex);
  544. /**
  545. * Get text attributes between two indices. The attribute list includes the text at the
  546. * start index and the text at the end index. Returns whether successful;
  547. *
  548. * Bug ID 4944761 - getTextAttributes between two indices method needed
  549. */
  550. BOOL getTextAttributesInRange(const long vmID, const AccessibleContext accessibleContext,
  551. const int startIndex, const int endIndex,
  552. AccessibleTextAttributesInfo *attributes, short *len);
  553. /**
  554. * Returns the number of visible children of a component. Returns -1 on error.
  555. *
  556. * Bug ID 4944762- getVisibleChildren for list-like components needed
  557. */
  558. int getVisibleChildrenCount(const long vmID, const AccessibleContext accessibleContext);
  559. /**
  560. * Gets the visible children of an AccessibleContext. Returns whether successful.
  561. *
  562. * Bug ID 4944762- getVisibleChildren for list-like components needed
  563. */
  564. BOOL getVisibleChildren(const long vmID, const AccessibleContext accessibleContext,
  565. const int startIndex,
  566. VisibleChildrenInfo *visibleChildrenInfo);
  567. /**
  568. * Set the caret to a text position. Returns whether successful.
  569. *
  570. * Bug ID 4944770 - setCaretPosition method needed
  571. */
  572. BOOL setCaretPosition(const long vmID, const AccessibleContext accessibleContext,
  573. const int position);
  574. /**
  575. * Gets the text caret location
  576. */
  577. BOOL getCaretLocation(long vmID, AccessibleContext ac,
  578. AccessibleTextRectInfo *rectInfo, jint index);
  579. /**
  580. * Gets the number of events waiting to fire
  581. */
  582. int getEventsWaiting();
  583. #ifdef __cplusplus
  584. }
  585. #endif