AccessBridgeCalls.h 33 KB

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