AccessBridgeCalls.c 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131
  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. * @(#)AccessBridgeCalls.c 1.25 05/08/22
  27. */
  28. /*
  29. * Wrapper functions around calls to the AccessBridge DLL
  30. */
  31. #include <windows.h>
  32. #include <jni.h>
  33. //#define ACCESSBRIDGE_32
  34. //#define ACCESSBRIDGE_64
  35. #include "AccessBridgeCalls.h"
  36. #include "AccessBridgeDebug.h"
  37. #ifdef __cplusplus
  38. extern "C" {
  39. #endif
  40. HINSTANCE theAccessBridgeInstance;
  41. AccessBridgeFPs theAccessBridge;
  42. BOOL theAccessBridgeInitializedFlag = FALSE;
  43. #define LOAD_FP(result, type, name) \
  44. PrintDebugString("LOAD_FP loading: %s ...", name); \
  45. if ((theAccessBridge.result = \
  46. (type) GetProcAddress(theAccessBridgeInstance, name)) == (type) 0) { \
  47. PrintDebugString("LOAD_FP failed: %s", name); \
  48. return FALSE; \
  49. }
  50. BOOL initializeAccessBridge() {
  51. #ifdef ACCESSBRIDGE_ARCH_32 // For 32bit AT new bridge
  52. theAccessBridgeInstance = LoadLibrary("WINDOWSACCESSBRIDGE-32");
  53. #else
  54. #ifdef ACCESSBRIDGE_ARCH_64 // For 64bit AT new bridge
  55. theAccessBridgeInstance = LoadLibrary("WINDOWSACCESSBRIDGE-64");
  56. #else // legacy
  57. theAccessBridgeInstance = LoadLibrary("WINDOWSACCESSBRIDGE");
  58. #endif
  59. #endif
  60. if (theAccessBridgeInstance != 0) {
  61. LOAD_FP(Windows_run, Windows_runFP, "Windows_run");
  62. LOAD_FP(SetJavaShutdown, SetJavaShutdownFP, "setJavaShutdownFP");
  63. LOAD_FP(SetFocusGained, SetFocusGainedFP, "setFocusGainedFP");
  64. LOAD_FP(SetFocusLost, SetFocusLostFP, "setFocusLostFP");
  65. LOAD_FP(SetCaretUpdate, SetCaretUpdateFP, "setCaretUpdateFP");
  66. LOAD_FP(SetMouseClicked, SetMouseClickedFP, "setMouseClickedFP");
  67. LOAD_FP(SetMouseEntered, SetMouseEnteredFP, "setMouseEnteredFP");
  68. LOAD_FP(SetMouseExited, SetMouseExitedFP, "setMouseExitedFP");
  69. LOAD_FP(SetMousePressed, SetMousePressedFP, "setMousePressedFP");
  70. LOAD_FP(SetMouseReleased, SetMouseReleasedFP, "setMouseReleasedFP");
  71. LOAD_FP(SetMenuCanceled, SetMenuCanceledFP, "setMenuCanceledFP");
  72. LOAD_FP(SetMenuDeselected, SetMenuDeselectedFP, "setMenuDeselectedFP");
  73. LOAD_FP(SetMenuSelected, SetMenuSelectedFP, "setMenuSelectedFP");
  74. LOAD_FP(SetPopupMenuCanceled, SetPopupMenuCanceledFP, "setPopupMenuCanceledFP");
  75. LOAD_FP(SetPopupMenuWillBecomeInvisible, SetPopupMenuWillBecomeInvisibleFP, "setPopupMenuWillBecomeInvisibleFP");
  76. LOAD_FP(SetPopupMenuWillBecomeVisible, SetPopupMenuWillBecomeVisibleFP, "setPopupMenuWillBecomeVisibleFP");
  77. LOAD_FP(SetPropertyNameChange, SetPropertyNameChangeFP, "setPropertyNameChangeFP");
  78. LOAD_FP(SetPropertyDescriptionChange, SetPropertyDescriptionChangeFP, "setPropertyDescriptionChangeFP");
  79. LOAD_FP(SetPropertyStateChange, SetPropertyStateChangeFP, "setPropertyStateChangeFP");
  80. LOAD_FP(SetPropertyValueChange, SetPropertyValueChangeFP, "setPropertyValueChangeFP");
  81. LOAD_FP(SetPropertySelectionChange, SetPropertySelectionChangeFP, "setPropertySelectionChangeFP");
  82. LOAD_FP(SetPropertyTextChange, SetPropertyTextChangeFP, "setPropertyTextChangeFP");
  83. LOAD_FP(SetPropertyCaretChange, SetPropertyCaretChangeFP, "setPropertyCaretChangeFP");
  84. LOAD_FP(SetPropertyVisibleDataChange, SetPropertyVisibleDataChangeFP, "setPropertyVisibleDataChangeFP");
  85. LOAD_FP(SetPropertyChildChange, SetPropertyChildChangeFP, "setPropertyChildChangeFP");
  86. LOAD_FP(SetPropertyActiveDescendentChange, SetPropertyActiveDescendentChangeFP, "setPropertyActiveDescendentChangeFP");
  87. LOAD_FP(SetPropertyTableModelChange, SetPropertyTableModelChangeFP, "setPropertyTableModelChangeFP");
  88. LOAD_FP(ReleaseJavaObject, ReleaseJavaObjectFP, "releaseJavaObject");
  89. LOAD_FP(GetVersionInfo, GetVersionInfoFP, "getVersionInfo");
  90. LOAD_FP(IsJavaWindow, IsJavaWindowFP, "isJavaWindow");
  91. LOAD_FP(IsSameObject, IsSameObjectFP, "isSameObject");
  92. LOAD_FP(GetAccessibleContextFromHWND, GetAccessibleContextFromHWNDFP, "getAccessibleContextFromHWND");
  93. LOAD_FP(getHWNDFromAccessibleContext, getHWNDFromAccessibleContextFP, "getHWNDFromAccessibleContext");
  94. LOAD_FP(GetAccessibleContextAt, GetAccessibleContextAtFP, "getAccessibleContextAt");
  95. LOAD_FP(GetAccessibleContextWithFocus, GetAccessibleContextWithFocusFP, "getAccessibleContextWithFocus");
  96. LOAD_FP(GetAccessibleContextInfo, GetAccessibleContextInfoFP, "getAccessibleContextInfo");
  97. LOAD_FP(GetAccessibleChildFromContext, GetAccessibleChildFromContextFP, "getAccessibleChildFromContext");
  98. LOAD_FP(GetAccessibleParentFromContext, GetAccessibleParentFromContextFP, "getAccessibleParentFromContext");
  99. /* begin AccessibleTable */
  100. LOAD_FP(getAccessibleTableInfo, getAccessibleTableInfoFP, "getAccessibleTableInfo");
  101. LOAD_FP(getAccessibleTableCellInfo, getAccessibleTableCellInfoFP, "getAccessibleTableCellInfo");
  102. LOAD_FP(getAccessibleTableRowHeader, getAccessibleTableRowHeaderFP, "getAccessibleTableRowHeader");
  103. LOAD_FP(getAccessibleTableColumnHeader, getAccessibleTableColumnHeaderFP, "getAccessibleTableColumnHeader");
  104. LOAD_FP(getAccessibleTableRowDescription, getAccessibleTableRowDescriptionFP, "getAccessibleTableRowDescription");
  105. LOAD_FP(getAccessibleTableColumnDescription, getAccessibleTableColumnDescriptionFP, "getAccessibleTableColumnDescription");
  106. LOAD_FP(getAccessibleTableRowSelectionCount, getAccessibleTableRowSelectionCountFP,
  107. "getAccessibleTableRowSelectionCount");
  108. LOAD_FP(isAccessibleTableRowSelected, isAccessibleTableRowSelectedFP,
  109. "isAccessibleTableRowSelected");
  110. LOAD_FP(getAccessibleTableRowSelections, getAccessibleTableRowSelectionsFP,
  111. "getAccessibleTableRowSelections");
  112. LOAD_FP(getAccessibleTableColumnSelectionCount, getAccessibleTableColumnSelectionCountFP,
  113. "getAccessibleTableColumnSelectionCount");
  114. LOAD_FP(isAccessibleTableColumnSelected, isAccessibleTableColumnSelectedFP,
  115. "isAccessibleTableColumnSelected");
  116. LOAD_FP(getAccessibleTableColumnSelections, getAccessibleTableColumnSelectionsFP,
  117. "getAccessibleTableColumnSelections");
  118. LOAD_FP(getAccessibleTableRow, getAccessibleTableRowFP,
  119. "getAccessibleTableRow");
  120. LOAD_FP(getAccessibleTableColumn, getAccessibleTableColumnFP,
  121. "getAccessibleTableColumn");
  122. LOAD_FP(getAccessibleTableIndex, getAccessibleTableIndexFP,
  123. "getAccessibleTableIndex");
  124. /* end AccessibleTable */
  125. /* AccessibleRelationSet */
  126. LOAD_FP(getAccessibleRelationSet, getAccessibleRelationSetFP, "getAccessibleRelationSet");
  127. /* AccessibleHypertext */
  128. LOAD_FP(getAccessibleHypertext, getAccessibleHypertextFP, "getAccessibleHypertext");
  129. LOAD_FP(activateAccessibleHyperlink, activateAccessibleHyperlinkFP, "activateAccessibleHyperlink");
  130. LOAD_FP(getAccessibleHyperlinkCount, getAccessibleHyperlinkCountFP, "getAccessibleHyperlinkCount");
  131. LOAD_FP(getAccessibleHypertextExt, getAccessibleHypertextExtFP, "getAccessibleHypertextExt");
  132. LOAD_FP(getAccessibleHypertextLinkIndex, getAccessibleHypertextLinkIndexFP, "getAccessibleHypertextLinkIndex");
  133. LOAD_FP(getAccessibleHyperlink, getAccessibleHyperlinkFP, "getAccessibleHyperlink");
  134. /* Accessible KeyBinding, Icon and Action */
  135. LOAD_FP(getAccessibleKeyBindings, getAccessibleKeyBindingsFP, "getAccessibleKeyBindings");
  136. LOAD_FP(getAccessibleIcons, getAccessibleIconsFP, "getAccessibleIcons");
  137. LOAD_FP(getAccessibleActions, getAccessibleActionsFP, "getAccessibleActions");
  138. LOAD_FP(doAccessibleActions, doAccessibleActionsFP, "doAccessibleActions");
  139. /* AccessibleText */
  140. LOAD_FP(GetAccessibleTextInfo, GetAccessibleTextInfoFP, "getAccessibleTextInfo");
  141. LOAD_FP(GetAccessibleTextItems, GetAccessibleTextItemsFP, "getAccessibleTextItems");
  142. LOAD_FP(GetAccessibleTextSelectionInfo, GetAccessibleTextSelectionInfoFP, "getAccessibleTextSelectionInfo");
  143. LOAD_FP(GetAccessibleTextAttributes, GetAccessibleTextAttributesFP, "getAccessibleTextAttributes");
  144. LOAD_FP(GetAccessibleTextRect, GetAccessibleTextRectFP, "getAccessibleTextRect");
  145. LOAD_FP(GetAccessibleTextLineBounds, GetAccessibleTextLineBoundsFP, "getAccessibleTextLineBounds");
  146. LOAD_FP(GetAccessibleTextRange, GetAccessibleTextRangeFP, "getAccessibleTextRange");
  147. LOAD_FP(GetCurrentAccessibleValueFromContext, GetCurrentAccessibleValueFromContextFP, "getCurrentAccessibleValueFromContext");
  148. LOAD_FP(GetMaximumAccessibleValueFromContext, GetMaximumAccessibleValueFromContextFP, "getMaximumAccessibleValueFromContext");
  149. LOAD_FP(GetMinimumAccessibleValueFromContext, GetMinimumAccessibleValueFromContextFP, "getMinimumAccessibleValueFromContext");
  150. LOAD_FP(AddAccessibleSelectionFromContext, AddAccessibleSelectionFromContextFP, "addAccessibleSelectionFromContext");
  151. LOAD_FP(ClearAccessibleSelectionFromContext, ClearAccessibleSelectionFromContextFP, "clearAccessibleSelectionFromContext");
  152. LOAD_FP(GetAccessibleSelectionFromContext, GetAccessibleSelectionFromContextFP, "getAccessibleSelectionFromContext");
  153. LOAD_FP(GetAccessibleSelectionCountFromContext, GetAccessibleSelectionCountFromContextFP, "getAccessibleSelectionCountFromContext");
  154. LOAD_FP(IsAccessibleChildSelectedFromContext, IsAccessibleChildSelectedFromContextFP, "isAccessibleChildSelectedFromContext");
  155. LOAD_FP(RemoveAccessibleSelectionFromContext, RemoveAccessibleSelectionFromContextFP, "removeAccessibleSelectionFromContext");
  156. LOAD_FP(SelectAllAccessibleSelectionFromContext, SelectAllAccessibleSelectionFromContextFP, "selectAllAccessibleSelectionFromContext");
  157. LOAD_FP(setTextContents, setTextContentsFP, "setTextContents");
  158. LOAD_FP(getParentWithRole, getParentWithRoleFP, "getParentWithRole");
  159. LOAD_FP(getTopLevelObject, getTopLevelObjectFP, "getTopLevelObject");
  160. LOAD_FP(getParentWithRoleElseRoot, getParentWithRoleElseRootFP, "getParentWithRoleElseRoot");
  161. LOAD_FP(getObjectDepth, getObjectDepthFP, "getObjectDepth");
  162. LOAD_FP(getActiveDescendent, getActiveDescendentFP, "getActiveDescendent");
  163. // additional methods for Teton
  164. LOAD_FP(getVirtualAccessibleName, getVirtualAccessibleNameFP, "getVirtualAccessibleName");
  165. LOAD_FP(requestFocus, requestFocusFP, "requestFocus");
  166. LOAD_FP(selectTextRange, selectTextRangeFP, "selectTextRange");
  167. LOAD_FP(getTextAttributesInRange, getTextAttributesInRangeFP, "getTextAttributesInRange");
  168. LOAD_FP(getVisibleChildrenCount, getVisibleChildrenCountFP, "getVisibleChildrenCount");
  169. LOAD_FP(getVisibleChildren, getVisibleChildrenFP, "getVisibleChildren");
  170. LOAD_FP(setCaretPosition, setCaretPositionFP, "setCaretPosition");
  171. LOAD_FP(getCaretLocation, getCaretLocationFP, "getCaretLocation");
  172. LOAD_FP(getEventsWaiting, getEventsWaitingFP, "getEventsWaiting");
  173. theAccessBridge.Windows_run();
  174. theAccessBridgeInitializedFlag = TRUE;
  175. PrintDebugString("theAccessBridgeInitializedFlag = TRUE");
  176. return TRUE;
  177. } else {
  178. return FALSE;
  179. }
  180. }
  181. BOOL shutdownAccessBridge() {
  182. BOOL result;
  183. DWORD error;
  184. theAccessBridgeInitializedFlag = FALSE;
  185. if (theAccessBridgeInstance != (HANDLE) 0) {
  186. result = FreeLibrary(theAccessBridgeInstance);
  187. if (result != TRUE) {
  188. error = GetLastError();
  189. }
  190. return TRUE;
  191. }
  192. return FALSE;
  193. }
  194. void SetJavaShutdown(AccessBridge_JavaShutdownFP fp) {
  195. if (theAccessBridgeInitializedFlag == TRUE) {
  196. theAccessBridge.SetJavaShutdown(fp);
  197. }
  198. }
  199. void SetFocusGained(AccessBridge_FocusGainedFP fp) {
  200. if (theAccessBridgeInitializedFlag == TRUE) {
  201. theAccessBridge.SetFocusGained(fp);
  202. }
  203. }
  204. void SetFocusLost(AccessBridge_FocusLostFP fp) {
  205. if (theAccessBridgeInitializedFlag == TRUE) {
  206. theAccessBridge.SetFocusLost(fp);
  207. }
  208. }
  209. void SetCaretUpdate(AccessBridge_CaretUpdateFP fp) {
  210. if (theAccessBridgeInitializedFlag == TRUE) {
  211. theAccessBridge.SetCaretUpdate(fp);
  212. }
  213. }
  214. void SetMouseClicked(AccessBridge_MouseClickedFP fp) {
  215. if (theAccessBridgeInitializedFlag == TRUE) {
  216. theAccessBridge.SetMouseClicked(fp);
  217. }
  218. }
  219. void SetMouseEntered(AccessBridge_MouseEnteredFP fp) {
  220. if (theAccessBridgeInitializedFlag == TRUE) {
  221. theAccessBridge.SetMouseEntered(fp);
  222. }
  223. }
  224. void SetMouseExited(AccessBridge_MouseExitedFP fp) {
  225. if (theAccessBridgeInitializedFlag == TRUE) {
  226. theAccessBridge.SetMouseExited(fp);
  227. }
  228. }
  229. void SetMousePressed(AccessBridge_MousePressedFP fp) {
  230. if (theAccessBridgeInitializedFlag == TRUE) {
  231. theAccessBridge.SetMousePressed(fp);
  232. }
  233. }
  234. void SetMouseReleased(AccessBridge_MouseReleasedFP fp) {
  235. if (theAccessBridgeInitializedFlag == TRUE) {
  236. theAccessBridge.SetMouseReleased(fp);
  237. }
  238. }
  239. void SetMenuCanceled(AccessBridge_MenuCanceledFP fp) {
  240. if (theAccessBridgeInitializedFlag == TRUE) {
  241. theAccessBridge.SetMenuCanceled(fp);
  242. }
  243. }
  244. void SetMenuDeselected(AccessBridge_MenuDeselectedFP fp) {
  245. if (theAccessBridgeInitializedFlag == TRUE) {
  246. theAccessBridge.SetMenuDeselected(fp);
  247. }
  248. }
  249. void SetMenuSelected(AccessBridge_MenuSelectedFP fp) {
  250. if (theAccessBridgeInitializedFlag == TRUE) {
  251. theAccessBridge.SetMenuSelected(fp);
  252. }
  253. }
  254. void SetPopupMenuCanceled(AccessBridge_PopupMenuCanceledFP fp) {
  255. if (theAccessBridgeInitializedFlag == TRUE) {
  256. theAccessBridge.SetPopupMenuCanceled(fp);
  257. }
  258. }
  259. void SetPopupMenuWillBecomeInvisible(AccessBridge_PopupMenuWillBecomeInvisibleFP fp) {
  260. if (theAccessBridgeInitializedFlag == TRUE) {
  261. theAccessBridge.SetPopupMenuWillBecomeInvisible(fp);
  262. }
  263. }
  264. void SetPopupMenuWillBecomeVisible(AccessBridge_PopupMenuWillBecomeVisibleFP fp) {
  265. if (theAccessBridgeInitializedFlag == TRUE) {
  266. theAccessBridge.SetPopupMenuWillBecomeVisible(fp);
  267. }
  268. }
  269. void SetPropertyNameChange(AccessBridge_PropertyNameChangeFP fp) {
  270. if (theAccessBridgeInitializedFlag == TRUE) {
  271. theAccessBridge.SetPropertyNameChange(fp);
  272. }
  273. }
  274. void SetPropertyDescriptionChange(AccessBridge_PropertyDescriptionChangeFP fp) {
  275. if (theAccessBridgeInitializedFlag == TRUE) {
  276. theAccessBridge.SetPropertyDescriptionChange(fp);
  277. }
  278. }
  279. void SetPropertyStateChange(AccessBridge_PropertyStateChangeFP fp) {
  280. if (theAccessBridgeInitializedFlag == TRUE) {
  281. theAccessBridge.SetPropertyStateChange(fp);
  282. }
  283. }
  284. void SetPropertyValueChange(AccessBridge_PropertyValueChangeFP fp) {
  285. if (theAccessBridgeInitializedFlag == TRUE) {
  286. theAccessBridge.SetPropertyValueChange(fp);
  287. }
  288. }
  289. void SetPropertySelectionChange(AccessBridge_PropertySelectionChangeFP fp) {
  290. if (theAccessBridgeInitializedFlag == TRUE) {
  291. theAccessBridge.SetPropertySelectionChange(fp);
  292. }
  293. }
  294. void SetPropertyTextChange(AccessBridge_PropertyTextChangeFP fp) {
  295. if (theAccessBridgeInitializedFlag == TRUE) {
  296. theAccessBridge.SetPropertyTextChange(fp);
  297. }
  298. }
  299. void SetPropertyCaretChange(AccessBridge_PropertyCaretChangeFP fp) {
  300. if (theAccessBridgeInitializedFlag == TRUE) {
  301. theAccessBridge.SetPropertyCaretChange(fp);
  302. }
  303. }
  304. void SetPropertyVisibleDataChange(AccessBridge_PropertyVisibleDataChangeFP fp) {
  305. if (theAccessBridgeInitializedFlag == TRUE) {
  306. theAccessBridge.SetPropertyVisibleDataChange(fp);
  307. }
  308. }
  309. void SetPropertyChildChange(AccessBridge_PropertyChildChangeFP fp) {
  310. if (theAccessBridgeInitializedFlag == TRUE) {
  311. theAccessBridge.SetPropertyChildChange(fp);
  312. }
  313. }
  314. void SetPropertyActiveDescendentChange(AccessBridge_PropertyActiveDescendentChangeFP fp) {
  315. if (theAccessBridgeInitializedFlag == TRUE) {
  316. theAccessBridge.SetPropertyActiveDescendentChange(fp);
  317. }
  318. }
  319. void SetPropertyTableModelChange(AccessBridge_PropertyTableModelChangeFP fp) {
  320. if (theAccessBridgeInitializedFlag == TRUE) {
  321. theAccessBridge.SetPropertyTableModelChange(fp);
  322. }
  323. }
  324. /**
  325. * General routines
  326. */
  327. void ReleaseJavaObject(long vmID, Java_Object object) {
  328. if (theAccessBridgeInitializedFlag == TRUE) {
  329. theAccessBridge.ReleaseJavaObject(vmID, object);
  330. }
  331. }
  332. BOOL GetVersionInfo(long vmID, AccessBridgeVersionInfo *info) {
  333. if (theAccessBridgeInitializedFlag == TRUE) {
  334. return theAccessBridge.GetVersionInfo(vmID, info);
  335. }
  336. return FALSE;
  337. }
  338. /**
  339. * Window routines
  340. */
  341. BOOL IsJavaWindow(HWND window) {
  342. if (theAccessBridgeInitializedFlag == TRUE) {
  343. BOOL ret ;
  344. ret = theAccessBridge.IsJavaWindow(window);
  345. return ret ;
  346. }
  347. return FALSE;
  348. }
  349. /**
  350. * Returns the virtual machine ID and AccessibleContext for a top-level window
  351. */
  352. BOOL GetAccessibleContextFromHWND(HWND target, long *vmID, AccessibleContext *ac) {
  353. if (theAccessBridgeInitializedFlag == TRUE) {
  354. return theAccessBridge.GetAccessibleContextFromHWND(target, vmID, ac);
  355. }
  356. return FALSE;
  357. }
  358. /**
  359. * Returns the HWND from the AccessibleContext of a top-level window. Returns 0
  360. * on error or if the AccessibleContext does not refer to a top-level window.
  361. */
  362. HWND getHWNDFromAccessibleContext(long vmID, JOBJECT64 accesibleContext) {
  363. if (theAccessBridgeInitializedFlag == TRUE) {
  364. return theAccessBridge.getHWNDFromAccessibleContext(vmID, accesibleContext);
  365. }
  366. return (HWND)0;
  367. }
  368. /**
  369. * returns whether two objects are the same
  370. */
  371. BOOL IsSameObject(long vmID, JOBJECT64 obj1, JOBJECT64 obj2) {
  372. if (theAccessBridgeInitializedFlag == TRUE) {
  373. return theAccessBridge.IsSameObject(vmID, obj1, obj2);
  374. }
  375. return FALSE;
  376. }
  377. /**
  378. * Sets editable text contents. The AccessibleContext must implement AccessibleEditableText and
  379. * be editable. The maximum text length is MAX_STRING_SIZE - 1.
  380. * Returns whether successful
  381. */
  382. BOOL setTextContents (const long vmID, const AccessibleContext accessibleContext, const wchar_t *text) {
  383. if (theAccessBridgeInitializedFlag == TRUE) {
  384. return theAccessBridge.setTextContents(vmID, accessibleContext, text);
  385. }
  386. return FALSE;
  387. }
  388. /**
  389. * Returns the Accessible Context with the specified role that is the
  390. * ancestor of a given object. The role is one of the role strings
  391. * defined in AccessBridgePackages.h
  392. * If there is no ancestor object that has the specified role,
  393. * returns (AccessibleContext)0.
  394. */
  395. AccessibleContext getParentWithRole (const long vmID, const AccessibleContext accessibleContext,
  396. const wchar_t *role) {
  397. if (theAccessBridgeInitializedFlag == TRUE) {
  398. return theAccessBridge.getParentWithRole(vmID, accessibleContext, role);
  399. }
  400. return (AccessibleContext)0;
  401. }
  402. /**
  403. * Returns the Accessible Context with the specified role that is the
  404. * ancestor of a given object. The role is one of the role strings
  405. * defined in AccessBridgePackages.h. If an object with the specified
  406. * role does not exist, returns the top level object for the Java Window.
  407. * Returns (AccessibleContext)0 on error.
  408. */
  409. AccessibleContext getParentWithRoleElseRoot (const long vmID, const AccessibleContext accessibleContext,
  410. const wchar_t *role) {
  411. if (theAccessBridgeInitializedFlag == TRUE) {
  412. return theAccessBridge.getParentWithRoleElseRoot(vmID, accessibleContext, role);
  413. }
  414. return (AccessibleContext)0;
  415. }
  416. /**
  417. * Returns the Accessible Context for the top level object in
  418. * a Java Window. This is same Accessible Context that is obtained
  419. * from GetAccessibleContextFromHWND for that window. Returns
  420. * (AccessibleContext)0 on error.
  421. */
  422. AccessibleContext getTopLevelObject (const long vmID, const AccessibleContext accessibleContext) {
  423. if (theAccessBridgeInitializedFlag == TRUE) {
  424. return theAccessBridge.getTopLevelObject(vmID, accessibleContext);
  425. }
  426. return (AccessibleContext)0;
  427. }
  428. /**
  429. * Returns how deep in the object hierarchy a given object is.
  430. * The top most object in the object hierarchy has an object depth of 0.
  431. * Returns -1 on error.
  432. */
  433. int getObjectDepth (const long vmID, const AccessibleContext accessibleContext) {
  434. if (theAccessBridgeInitializedFlag == TRUE) {
  435. return theAccessBridge.getObjectDepth(vmID, accessibleContext);
  436. }
  437. return -1;
  438. }
  439. /**
  440. * Returns the Accessible Context of the current ActiveDescendent of an object.
  441. * This method assumes the ActiveDescendent is the component that is currently
  442. * selected in a container object.
  443. * Returns (AccessibleContext)0 on error or if there is no selection.
  444. */
  445. AccessibleContext getActiveDescendent (const long vmID, const AccessibleContext accessibleContext) {
  446. if (theAccessBridgeInitializedFlag == TRUE) {
  447. return theAccessBridge.getActiveDescendent(vmID, accessibleContext);
  448. }
  449. return (AccessibleContext)0;
  450. }
  451. /**
  452. * Accessible Context routines
  453. */
  454. BOOL GetAccessibleContextAt(long vmID, AccessibleContext acParent,
  455. jint x, jint y, AccessibleContext *ac) {
  456. if (theAccessBridgeInitializedFlag == TRUE) {
  457. return theAccessBridge.GetAccessibleContextAt(vmID, acParent, x, y, ac);
  458. }
  459. return FALSE;
  460. }
  461. BOOL GetAccessibleContextWithFocus(HWND window, long *vmID, AccessibleContext *ac) {
  462. if (theAccessBridgeInitializedFlag == TRUE) {
  463. return theAccessBridge.GetAccessibleContextWithFocus(window, vmID, ac);
  464. }
  465. return FALSE;
  466. }
  467. BOOL GetAccessibleContextInfo(long vmID, AccessibleContext ac, AccessibleContextInfo *info) {
  468. if (theAccessBridgeInitializedFlag == TRUE) {
  469. return theAccessBridge.GetAccessibleContextInfo(vmID, ac, info);
  470. }
  471. return FALSE;
  472. }
  473. AccessibleContext GetAccessibleChildFromContext(long vmID, AccessibleContext ac, jint index) {
  474. if (theAccessBridgeInitializedFlag == TRUE) {
  475. return theAccessBridge.GetAccessibleChildFromContext(vmID, ac, index);
  476. }
  477. return (AccessibleContext) 0;
  478. }
  479. AccessibleContext GetAccessibleParentFromContext(long vmID, AccessibleContext ac) {
  480. if (theAccessBridgeInitializedFlag == TRUE) {
  481. return theAccessBridge.GetAccessibleParentFromContext(vmID, ac);
  482. }
  483. return (AccessibleContext) 0;
  484. }
  485. /* begin AccessibleTable routines */
  486. /*
  487. * get information about an AccessibleTable
  488. */
  489. BOOL getAccessibleTableInfo(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo) {
  490. if (theAccessBridgeInitializedFlag == TRUE) {
  491. return theAccessBridge.getAccessibleTableInfo(vmID, acParent, tableInfo);
  492. }
  493. return FALSE;
  494. }
  495. /*
  496. * get information about an AccessibleTable cell
  497. */
  498. BOOL getAccessibleTableCellInfo(long vmID, AccessibleTable accessibleTable,
  499. jint row, jint column, AccessibleTableCellInfo *tableCellInfo) {
  500. if (theAccessBridgeInitializedFlag == TRUE) {
  501. return theAccessBridge.getAccessibleTableCellInfo(vmID, accessibleTable, row, column, tableCellInfo);
  502. }
  503. return FALSE;
  504. }
  505. /*
  506. * get information about an AccessibleTable row header
  507. */
  508. BOOL getAccessibleTableRowHeader(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo) {
  509. if (theAccessBridgeInitializedFlag == TRUE) {
  510. return theAccessBridge.getAccessibleTableRowHeader(vmID, acParent, tableInfo);
  511. }
  512. return FALSE;
  513. }
  514. /*
  515. * get information about an AccessibleTable column header
  516. */
  517. BOOL getAccessibleTableColumnHeader(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo) {
  518. if (theAccessBridgeInitializedFlag == TRUE) {
  519. return theAccessBridge.getAccessibleTableColumnHeader(vmID, acParent, tableInfo);
  520. }
  521. return FALSE;
  522. }
  523. /*
  524. * return a description of an AccessibleTable row header
  525. */
  526. AccessibleContext getAccessibleTableRowDescription(long vmID, AccessibleContext acParent, jint row) {
  527. if (theAccessBridgeInitializedFlag == TRUE) {
  528. return theAccessBridge.getAccessibleTableRowDescription(vmID, acParent, row);
  529. }
  530. return (AccessibleContext)0;
  531. }
  532. /*
  533. * return a description of an AccessibleTable column header
  534. */
  535. AccessibleContext getAccessibleTableColumnDescription(long vmID, AccessibleContext acParent, jint column) {
  536. if (theAccessBridgeInitializedFlag == TRUE) {
  537. return theAccessBridge.getAccessibleTableColumnDescription(vmID, acParent, column);
  538. }
  539. return (AccessibleContext)0;
  540. }
  541. /*
  542. * return the number of rows selected in an AccessibleTable
  543. */
  544. jint getAccessibleTableRowSelectionCount(long vmID, AccessibleTable table) {
  545. if (theAccessBridgeInitializedFlag == TRUE) {
  546. return theAccessBridge.getAccessibleTableRowSelectionCount(vmID, table);
  547. }
  548. return -1;
  549. }
  550. /*
  551. * return whether a row is selected in an AccessibleTable
  552. */
  553. BOOL isAccessibleTableRowSelected(long vmID, AccessibleTable table, jint row) {
  554. if (theAccessBridgeInitializedFlag == TRUE) {
  555. return theAccessBridge.isAccessibleTableRowSelected(vmID, table, row);
  556. }
  557. return FALSE;
  558. }
  559. /*
  560. * get an array of selected rows in an AccessibleTable
  561. */
  562. BOOL getAccessibleTableRowSelections(long vmID, AccessibleTable table, jint count, jint *selections) {
  563. if (theAccessBridgeInitializedFlag == TRUE) {
  564. return theAccessBridge.getAccessibleTableRowSelections(vmID, table, count, selections);
  565. }
  566. return FALSE;
  567. }
  568. /*
  569. * return the number of columns selected in an AccessibleTable
  570. */
  571. jint getAccessibleTableColumnSelectionCount(long vmID, AccessibleTable table) {
  572. if (theAccessBridgeInitializedFlag == TRUE) {
  573. return theAccessBridge.getAccessibleTableColumnSelectionCount(vmID, table);
  574. }
  575. return -1;
  576. }
  577. /*
  578. * return whether a column is selected in an AccessibleTable
  579. */
  580. BOOL isAccessibleTableColumnSelected(long vmID, AccessibleTable table, jint column) {
  581. if (theAccessBridgeInitializedFlag == TRUE) {
  582. return theAccessBridge.isAccessibleTableColumnSelected(vmID, table, column);
  583. }
  584. return FALSE;
  585. }
  586. /*
  587. * get an array of columns selected in an AccessibleTable
  588. */
  589. BOOL getAccessibleTableColumnSelections(long vmID, AccessibleTable table, jint count, jint *selections) {
  590. if (theAccessBridgeInitializedFlag == TRUE) {
  591. return theAccessBridge.getAccessibleTableColumnSelections(vmID, table, count, selections);
  592. }
  593. return FALSE;
  594. }
  595. /*
  596. * return the row number for a cell at a given index
  597. */
  598. jint
  599. getAccessibleTableRow(long vmID, AccessibleTable table, jint index) {
  600. if (theAccessBridgeInitializedFlag == TRUE) {
  601. return theAccessBridge.getAccessibleTableRow(vmID, table, index);
  602. }
  603. return -1;
  604. }
  605. /*
  606. * return the column number for a cell at a given index
  607. */
  608. jint
  609. getAccessibleTableColumn(long vmID, AccessibleTable table, jint index) {
  610. if (theAccessBridgeInitializedFlag == TRUE) {
  611. return theAccessBridge.getAccessibleTableColumn(vmID, table, index);
  612. }
  613. return -1;
  614. }
  615. /*
  616. * return the index of a cell at a given row and column
  617. */
  618. jint
  619. getAccessibleTableIndex(long vmID, AccessibleTable table, jint row, jint column) {
  620. if (theAccessBridgeInitializedFlag == TRUE) {
  621. return theAccessBridge.getAccessibleTableIndex(vmID, table, row, column);
  622. }
  623. return -1;
  624. }
  625. /* end AccessibleTable routines */
  626. /**
  627. * Accessible Text routines
  628. */
  629. BOOL GetAccessibleTextInfo(long vmID, AccessibleText at, AccessibleTextInfo *textInfo, jint x, jint y) {
  630. if (theAccessBridgeInitializedFlag == TRUE) {
  631. return theAccessBridge.GetAccessibleTextInfo(vmID, at, textInfo, x, y);
  632. }
  633. return FALSE;
  634. }
  635. BOOL GetAccessibleTextItems(long vmID, AccessibleText at, AccessibleTextItemsInfo *textItems, jint index) {
  636. if (theAccessBridgeInitializedFlag == TRUE) {
  637. return theAccessBridge.GetAccessibleTextItems(vmID, at, textItems, index);
  638. }
  639. return FALSE;
  640. }
  641. BOOL GetAccessibleTextSelectionInfo(long vmID, AccessibleText at, AccessibleTextSelectionInfo *textSelection) {
  642. if (theAccessBridgeInitializedFlag == TRUE) {
  643. return theAccessBridge.GetAccessibleTextSelectionInfo(vmID, at, textSelection);
  644. }
  645. return FALSE;
  646. }
  647. BOOL GetAccessibleTextAttributes(long vmID, AccessibleText at, jint index, AccessibleTextAttributesInfo *attributes) {
  648. if (theAccessBridgeInitializedFlag == TRUE) {
  649. return theAccessBridge.GetAccessibleTextAttributes(vmID, at, index, attributes);
  650. }
  651. return FALSE;
  652. }
  653. BOOL GetAccessibleTextRect(long vmID, AccessibleText at, AccessibleTextRectInfo *rectInfo, jint index) {
  654. if (theAccessBridgeInitializedFlag == TRUE) {
  655. return theAccessBridge.GetAccessibleTextRect(vmID, at, rectInfo, index);
  656. }
  657. return FALSE;
  658. }
  659. BOOL GetAccessibleTextLineBounds(long vmID, AccessibleText at, jint index, jint *startIndex, jint *endIndex) {
  660. if (theAccessBridgeInitializedFlag == TRUE) {
  661. return theAccessBridge.GetAccessibleTextLineBounds(vmID, at, index, startIndex, endIndex);
  662. }
  663. return FALSE;
  664. }
  665. BOOL GetAccessibleTextRange(long vmID, AccessibleText at, jint start, jint end, wchar_t *text, short len) {
  666. if (theAccessBridgeInitializedFlag == TRUE) {
  667. return theAccessBridge.GetAccessibleTextRange(vmID, at, start, end, text, len);
  668. }
  669. return FALSE;
  670. }
  671. /**
  672. * AccessibleRelationSet routines
  673. */
  674. BOOL getAccessibleRelationSet(long vmID, AccessibleContext accessibleContext,
  675. AccessibleRelationSetInfo *relationSetInfo) {
  676. if (theAccessBridgeInitializedFlag == TRUE) {
  677. return theAccessBridge.getAccessibleRelationSet(vmID, accessibleContext, relationSetInfo);
  678. }
  679. return FALSE;
  680. }
  681. /**
  682. * AccessibleHypertext routines
  683. */
  684. // Gets AccessibleHypertext for an AccessibleContext
  685. BOOL getAccessibleHypertext(long vmID, AccessibleContext accessibleContext,
  686. AccessibleHypertextInfo *hypertextInfo) {
  687. if (theAccessBridgeInitializedFlag == TRUE) {
  688. return theAccessBridge.getAccessibleHypertext(vmID, accessibleContext, hypertextInfo);
  689. }
  690. return FALSE;
  691. }
  692. // Activates an AccessibleHyperlink for an AccessibleContext
  693. BOOL activateAccessibleHyperlink(long vmID, AccessibleContext accessibleContext,
  694. AccessibleHyperlink accessibleHyperlink) {
  695. if (theAccessBridgeInitializedFlag == TRUE) {
  696. return theAccessBridge.activateAccessibleHyperlink(vmID, accessibleContext, accessibleHyperlink);
  697. }
  698. return FALSE;
  699. }
  700. /*
  701. * Returns the number of hyperlinks in a component
  702. * Maps to AccessibleHypertext.getLinkCount.
  703. * Returns -1 on error.
  704. */
  705. jint getAccessibleHyperlinkCount(const long vmID,
  706. const AccessibleContext accessibleContext) {
  707. if (theAccessBridgeInitializedFlag == TRUE) {
  708. return theAccessBridge.getAccessibleHyperlinkCount(vmID, accessibleContext);
  709. }
  710. return -1;
  711. }
  712. /*
  713. * This method is used to iterate through the hyperlinks in a component. It
  714. * returns hypertext information for a component starting at hyperlink index
  715. * nStartIndex. No more than MAX_HYPERLINKS AccessibleHypertextInfo objects will
  716. * be returned for each call to this method.
  717. * returns FALSE on error.
  718. */
  719. BOOL getAccessibleHypertextExt(const long vmID,
  720. const AccessibleContext accessibleContext,
  721. const jint nStartIndex,
  722. /* OUT */ AccessibleHypertextInfo *hypertextInfo) {
  723. if (theAccessBridgeInitializedFlag == TRUE) {
  724. return theAccessBridge.getAccessibleHypertextExt(vmID,
  725. accessibleContext,
  726. nStartIndex,
  727. hypertextInfo);
  728. }
  729. return FALSE;
  730. }
  731. /*
  732. * Returns the index into an array of hyperlinks that is associated with
  733. * a character index in document;
  734. * Maps to AccessibleHypertext.getLinkIndex.
  735. * Returns -1 on error.
  736. */
  737. jint getAccessibleHypertextLinkIndex(const long vmID,
  738. const AccessibleHypertext hypertext,
  739. const jint nIndex) {
  740. if (theAccessBridgeInitializedFlag == TRUE) {
  741. return theAccessBridge.getAccessibleHypertextLinkIndex(vmID,
  742. hypertext,
  743. nIndex);
  744. }
  745. return -1;
  746. }
  747. /*
  748. * Returns the nth hyperlink in a document.
  749. * Maps to AccessibleHypertext.getLink.
  750. * Returns -1 on error
  751. */
  752. BOOL getAccessibleHyperlink(const long vmID,
  753. const AccessibleHypertext hypertext,
  754. const jint nIndex,
  755. /* OUT */ AccessibleHyperlinkInfo *hyperlinkInfo) {
  756. if (theAccessBridgeInitializedFlag == TRUE) {
  757. return theAccessBridge.getAccessibleHyperlink(vmID,
  758. hypertext,
  759. nIndex,
  760. hyperlinkInfo);
  761. }
  762. return FALSE;
  763. }
  764. /* Accessible KeyBindings, Icons and Actions */
  765. BOOL getAccessibleKeyBindings(long vmID, AccessibleContext accessibleContext,
  766. AccessibleKeyBindings *keyBindings) {
  767. if (theAccessBridgeInitializedFlag == TRUE) {
  768. return theAccessBridge.getAccessibleKeyBindings(vmID, accessibleContext, keyBindings);
  769. }
  770. return FALSE;
  771. }
  772. BOOL getAccessibleIcons(long vmID, AccessibleContext accessibleContext,
  773. AccessibleIcons *icons) {
  774. if (theAccessBridgeInitializedFlag == TRUE) {
  775. return theAccessBridge.getAccessibleIcons(vmID, accessibleContext, icons);
  776. }
  777. return FALSE;
  778. }
  779. BOOL getAccessibleActions(long vmID, AccessibleContext accessibleContext,
  780. AccessibleActions *actions) {
  781. if (theAccessBridgeInitializedFlag == TRUE) {
  782. return theAccessBridge.getAccessibleActions(vmID, accessibleContext, actions);
  783. }
  784. return FALSE;
  785. }
  786. BOOL doAccessibleActions(long vmID, AccessibleContext accessibleContext,
  787. AccessibleActionsToDo *actionsToDo, jint *failure) {
  788. if (theAccessBridgeInitializedFlag == TRUE) {
  789. return theAccessBridge.doAccessibleActions(vmID, accessibleContext, actionsToDo, failure);
  790. }
  791. return FALSE;
  792. }
  793. /**
  794. * Accessible Value routines
  795. */
  796. BOOL GetCurrentAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len) {
  797. if (theAccessBridgeInitializedFlag == TRUE) {
  798. return theAccessBridge.GetCurrentAccessibleValueFromContext(vmID, av, value, len);
  799. }
  800. return FALSE;
  801. }
  802. BOOL GetMaximumAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len) {
  803. if (theAccessBridgeInitializedFlag == TRUE) {
  804. return theAccessBridge.GetMaximumAccessibleValueFromContext(vmID, av, value, len);
  805. }
  806. return FALSE;
  807. }
  808. BOOL GetMinimumAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len) {
  809. if (theAccessBridgeInitializedFlag == TRUE) {
  810. return theAccessBridge.GetMinimumAccessibleValueFromContext(vmID, av, value, len);
  811. }
  812. return FALSE;
  813. }
  814. /**
  815. * Accessible Selection routines
  816. */
  817. void addAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i) {
  818. if (theAccessBridgeInitializedFlag == TRUE) {
  819. theAccessBridge.AddAccessibleSelectionFromContext(vmID, as, i);
  820. }
  821. }
  822. void clearAccessibleSelectionFromContext(long vmID, AccessibleSelection as) {
  823. if (theAccessBridgeInitializedFlag == TRUE) {
  824. theAccessBridge.ClearAccessibleSelectionFromContext(vmID, as);
  825. }
  826. }
  827. JOBJECT64 GetAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i) {
  828. if (theAccessBridgeInitializedFlag == TRUE) {
  829. return theAccessBridge.GetAccessibleSelectionFromContext(vmID, as, i);
  830. }
  831. return (JOBJECT64) 0;
  832. }
  833. int GetAccessibleSelectionCountFromContext(long vmID, AccessibleSelection as) {
  834. if (theAccessBridgeInitializedFlag == TRUE) {
  835. return theAccessBridge.GetAccessibleSelectionCountFromContext(vmID, as);
  836. }
  837. return -1;
  838. }
  839. BOOL IsAccessibleChildSelectedFromContext(long vmID, AccessibleSelection as, int i) {
  840. if (theAccessBridgeInitializedFlag == TRUE) {
  841. return theAccessBridge.IsAccessibleChildSelectedFromContext(vmID, as, i);
  842. }
  843. return FALSE;
  844. }
  845. void RemoveAccessibleSelectionFromContext(long vmID, AccessibleSelection as, int i) {
  846. if (theAccessBridgeInitializedFlag == TRUE) {
  847. theAccessBridge.RemoveAccessibleSelectionFromContext(vmID, as, i);
  848. }
  849. }
  850. void SelectAllAccessibleSelectionFromContext(long vmID, AccessibleSelection as) {
  851. if (theAccessBridgeInitializedFlag == TRUE) {
  852. theAccessBridge.SelectAllAccessibleSelectionFromContext(vmID, as);
  853. }
  854. }
  855. /**
  856. * Additional methods for Teton
  857. */
  858. /**
  859. * Gets the AccessibleName for a component based upon the JAWS algorithm. Returns
  860. * whether successful.
  861. *
  862. * Bug ID 4916682 - Implement JAWS AccessibleName policy
  863. */
  864. BOOL getVirtualAccessibleName(const long vmID, const AccessibleContext accessibleContext,
  865. wchar_t *name, int len) {
  866. if (theAccessBridgeInitializedFlag == TRUE) {
  867. return theAccessBridge.getVirtualAccessibleName(vmID, accessibleContext, name, len);
  868. }
  869. return FALSE;
  870. }
  871. /**
  872. * Request focus for a component. Returns whether successful;
  873. *
  874. * Bug ID 4944757 - requestFocus method needed
  875. */
  876. BOOL requestFocus(const long vmID, const AccessibleContext accessibleContext) {
  877. if (theAccessBridgeInitializedFlag == TRUE) {
  878. return theAccessBridge.requestFocus(vmID, accessibleContext);
  879. }
  880. return FALSE;
  881. }
  882. /**
  883. * Selects text between two indices. Selection includes the text at the start index
  884. * and the text at the end index. Returns whether successful;
  885. *
  886. * Bug ID 4944758 - selectTextRange method needed
  887. */
  888. BOOL selectTextRange(const long vmID, const AccessibleContext accessibleContext,
  889. const int startIndex, const int endIndex) {
  890. if (theAccessBridgeInitializedFlag == TRUE) {
  891. return theAccessBridge.selectTextRange(vmID, accessibleContext, startIndex, endIndex);
  892. }
  893. return FALSE;
  894. }
  895. /**
  896. * Get text attributes between two indices. The attribute list includes the text at the
  897. * start index and the text at the end index. Returns whether successful;
  898. *
  899. * Bug ID 4944761 - getTextAttributes between two indices method needed
  900. */
  901. BOOL getTextAttributesInRange(const long vmID, const AccessibleContext accessibleContext,
  902. const int startIndex, const int endIndex,
  903. AccessibleTextAttributesInfo *attributes, short *len) {
  904. if (theAccessBridgeInitializedFlag == TRUE) {
  905. return theAccessBridge.getTextAttributesInRange(vmID, accessibleContext, startIndex,
  906. endIndex, attributes, len);
  907. }
  908. return FALSE;
  909. }
  910. /**
  911. * Returns the number of visible children of a component. Returns -1 on error.
  912. *
  913. * Bug ID 4944762- getVisibleChildren for list-like components needed
  914. */
  915. int getVisibleChildrenCount(const long vmID, const AccessibleContext accessibleContext) {
  916. if (theAccessBridgeInitializedFlag == TRUE) {
  917. return theAccessBridge.getVisibleChildrenCount(vmID, accessibleContext);
  918. }
  919. return FALSE;
  920. }
  921. /**
  922. * Gets the visible children of an AccessibleContext. Returns whether successful;
  923. *
  924. * Bug ID 4944762- getVisibleChildren for list-like components needed
  925. */
  926. BOOL getVisibleChildren(const long vmID, const AccessibleContext accessibleContext,
  927. const int startIndex, VisibleChildrenInfo *visibleChildrenInfo) {
  928. if (theAccessBridgeInitializedFlag == TRUE) {
  929. return theAccessBridge.getVisibleChildren(vmID, accessibleContext, startIndex,
  930. visibleChildrenInfo);
  931. }
  932. return FALSE;
  933. }
  934. /**
  935. * Set the caret to a text position. Returns whether successful;
  936. *
  937. * Bug ID 4944770 - setCaretPosition method needed
  938. */
  939. BOOL setCaretPosition(const long vmID, const AccessibleContext accessibleContext,
  940. const int position) {
  941. if (theAccessBridgeInitializedFlag == TRUE) {
  942. return theAccessBridge.setCaretPosition(vmID, accessibleContext, position);
  943. }
  944. return FALSE;
  945. }
  946. /**
  947. * Gets the text caret location
  948. */
  949. BOOL getCaretLocation(long vmID, AccessibleContext ac, AccessibleTextRectInfo *rectInfo, jint index) {
  950. if (theAccessBridgeInitializedFlag == TRUE) {
  951. return theAccessBridge.getCaretLocation(vmID, ac, rectInfo, index);
  952. }
  953. return FALSE;
  954. }
  955. /**
  956. * Gets the number of events waiting to fire
  957. */
  958. int getEventsWaiting() {
  959. if (theAccessBridgeInitializedFlag == TRUE) {
  960. return theAccessBridge.getEventsWaiting();
  961. }
  962. return FALSE;
  963. }
  964. #ifdef __cplusplus
  965. }
  966. #endif