1 /* 2 * Copyright (c) 2005, 2015, 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 26 /* 27 * Glue routines called by Windows AT into the WindowsAccessBridge dll 28 */ 29 30 #ifndef __AccessBridgeWindowsEntryPoints_H__ 31 #define __AccessBridgeWindowsEntryPoints_H__ 32 33 #include <windows.h> 34 #include <jni.h> 35 36 #include "AccessBridgePackages.h" 37 #include "AccessBridgeCallbacks.h" 38 39 #ifdef __cplusplus 40 extern "C" { 41 #endif 42 43 void Windows_run(); 44 45 void releaseJavaObject(long vmID, JOBJECT64 object); 46 void getVersionInfo(long vmID, AccessBridgeVersionInfo *info); 47 48 // Window related functions 49 HWND getTopLevelHWND(HWND descendent); 50 BOOL isJavaWindow(HWND window); 51 BOOL getAccessibleContextFromHWND(HWND window, long *vmID, JOBJECT64 *AccessibleContext); 52 HWND getHWNDFromAccessibleContext(long vmID, JOBJECT64 accessibleContext); 53 54 // returns whether two objects are the same 55 BOOL isSameObject(long vmID, JOBJECT64 obj1, JOBJECT64 obj2); 56 57 // Accessible Context functions 58 BOOL getAccessibleContextAt(long vmID, JOBJECT64 AccessibleContextParent, 59 jint x, jint y, JOBJECT64 *AccessibleContext); 60 BOOL getAccessibleContextWithFocus(HWND window, long *vmID, JOBJECT64 *AccessibleContext); 61 BOOL getAccessibleContextInfo(long vmID, JOBJECT64 AccessibleContext, AccessibleContextInfo *info); 62 JOBJECT64 getAccessibleChildFromContext(long vmID, JOBJECT64 AccessibleContext, jint childIndex); 63 JOBJECT64 getAccessibleParentFromContext(long vmID, JOBJECT64 AccessibleContext); 64 65 /* begin AccessibleTable */ 66 BOOL getAccessibleTableInfo(long vmID, JOBJECT64 acParent, AccessibleTableInfo *tableInfo); 67 BOOL getAccessibleTableCellInfo(long vmID, JOBJECT64 accessibleTable, jint row, jint column, 68 AccessibleTableCellInfo *tableCellInfo); 69 70 BOOL getAccessibleTableRowHeader(long vmID, JOBJECT64 acParent, AccessibleTableInfo *tableInfo); 71 BOOL getAccessibleTableColumnHeader(long vmID, JOBJECT64 acParent, AccessibleTableInfo *tableInfo); 72 73 JOBJECT64 getAccessibleTableRowDescription(long vmID, JOBJECT64 acParent, jint row); 74 JOBJECT64 getAccessibleTableColumnDescription(long vmID, JOBJECT64 acParent, jint column); 75 76 jint getAccessibleTableRowSelectionCount(long vmID, JOBJECT64 accessibleTable); 77 BOOL isAccessibleTableRowSelected(long vmID, JOBJECT64 accessibleTable, jint row); 78 BOOL getAccessibleTableRowSelections(long vmID, JOBJECT64 accessibleTable, jint count, 79 jint *selections); 80 81 jint getAccessibleTableColumnSelectionCount(long vmID, JOBJECT64 accessibleTable); 82 BOOL isAccessibleTableColumnSelected(long vmID, JOBJECT64 accessibleTable, jint column); 83 BOOL getAccessibleTableColumnSelections(long vmID, JOBJECT64 accessibleTable, jint count, 84 jint *selections); 85 86 jint getAccessibleTableRow(long vmID, JOBJECT64 accessibleTable, jint index); 87 jint getAccessibleTableColumn(long vmID, JOBJECT64 accessibleTable, jint index); 88 jint getAccessibleTableIndex(long vmID, JOBJECT64 accessibleTable, jint row, jint column); 89 90 /* end AccessibleTable */ 91 92 BOOL getAccessibleRelationSet(long vmID, JOBJECT64 accessibleContext, 93 AccessibleRelationSetInfo *relationSetInfo); 94 95 // AccessibleHypertext methods 96 BOOL getAccessibleHypertext(long vmID, JOBJECT64 accessibleContext, AccessibleHypertextInfo *hypertextInfo); 97 98 BOOL activateAccessibleHyperlink(long vmID, JOBJECT64 accessibleContext, JOBJECT64 accessibleHyperlink); 99 100 jint getAccessibleHyperlinkCount(const long vmID, 101 const AccessibleContext accessibleContext); 102 103 BOOL getAccessibleHypertextExt(const long vmID, 104 const AccessibleContext accessibleContext, 105 const jint nStartIndex, 106 /* OUT */ AccessibleHypertextInfo *hypertextInfo); 107 108 jint getAccessibleHypertextLinkIndex(const long vmID, 109 const AccessibleHypertext hypertext, 110 const jint nIndex); 111 112 BOOL getAccessibleHyperlink(const long vmID, 113 const AccessibleHypertext hypertext, 114 const jint nIndex, 115 /* OUT */ AccessibleHyperlinkInfo *hyperlinkInfo); 116 117 118 /* Accessible KeyBindings, Icons and Actions */ 119 BOOL getAccessibleKeyBindings(long vmID, JOBJECT64 accessibleContext, 120 AccessibleKeyBindings *keyBindings); 121 122 BOOL getAccessibleIcons(long vmID, JOBJECT64 accessibleContext, 123 AccessibleIcons *icons); 124 125 BOOL getAccessibleActions(long vmID, JOBJECT64 accessibleContext, 126 AccessibleActions *actions); 127 128 BOOL doAccessibleActions(long vmID, JOBJECT64 accessibleContext, 129 AccessibleActionsToDo *actionsToDo, jint *failure); 130 131 /* ----- Additional AccessibleHypertext methods for Teton */ 132 133 134 jint getAccessibleHypertextLinkCount(const long vmID, 135 const AccessibleContext accessibleContext); 136 137 BOOL getAccessibleHypertextExt(const long vmID, 138 const AccessibleContext accessibleContext, 139 const jint nStartIndex, 140 /* OUT */ AccessibleHypertextInfo *hypertextInfo); 141 142 jint getAccessibleHypertextLinkIndex(const long vmID, 143 const AccessibleContext accessibleContext, 144 const jint nIndex); 145 146 BOOL getAccessibleHyperlink(const long vmID, 147 const AccessibleContext accessibleContext, 148 const jint nIndex, 149 /* OUT */ AccessibleHyperlinkInfo *hyperlinkInfo); 150 151 152 /* Additional utility methods */ 153 BOOL setTextContents (const long vmID, const AccessibleContext accessibleContext, const wchar_t *text); 154 155 AccessibleContext getParentWithRole (const long vmID, const AccessibleContext accessibleContext, const wchar_t *role); 156 157 AccessibleContext getTopLevelObject (const long vmID, const AccessibleContext accessibleContext); 158 159 AccessibleContext getParentWithRoleElseRoot (const long vmID, const AccessibleContext accessibleContext, const wchar_t *role); 160 161 int getObjectDepth (const long vmID, const AccessibleContext accessibleContext); 162 163 AccessibleContext getActiveDescendent (const long vmID, const AccessibleContext accessibleContext); 164 165 /** 166 * Additional methods for Teton 167 */ 168 169 /** 170 * Gets the AccessibleName for a component based upon the JAWS algorithm. Returns 171 * whether successful. 172 * 173 * Bug ID 4916682 - Implement JAWS AccessibleName policy 174 */ 175 BOOL getVirtualAccessibleName(long vmID, AccessibleContext accessibleContext, wchar_t *name, int len); 176 177 /** 178 * Request focus for a component. Returns whether successful; 179 * 180 * Bug ID 4944757 - requestFocus method needed 181 */ 182 BOOL requestFocus(long vmID, AccessibleContext accessibleContext); 183 184 /** 185 * Selects text between two indices. Selection includes the text at the start index 186 * and the text at the end index. Returns whether successful; 187 * 188 * Bug ID 4944758 - selectTextRange method needed 189 */ 190 BOOL selectTextRange(long vmID, AccessibleContext accessibleContext, int startIndex, int endIndex); 191 192 /** 193 * Get text attributes between two indices. The attribute list includes the text at the 194 * start index and the text at the end index. Returns whether successful; 195 * 196 * Bug ID 4944761 - getTextAttributes between two indices method needed 197 */ 198 BOOL getTextAttributesInRange(long vmID, AccessibleContext accessibleContext, int startIndex, int endIndex, 199 AccessibleTextAttributesInfo *attributes, short *len); 200 201 /** 202 * Returns the number of visible children of a component. Returns -1 on error. 203 * 204 * Bug ID 4944762- getVisibleChildren for list-like components needed 205 */ 206 int getVisibleChildrenCount(long vmID, AccessibleContext accessibleContext); 207 208 /** 209 * Gets the visible children of an AccessibleContext. Returns whether successful; 210 * 211 * Bug ID 4944762- getVisibleChildren for list-like components needed 212 */ 213 BOOL getVisibleChildren(long vmID, AccessibleContext accessibleContext, int startIndex, 214 VisibleChildrenInfo *visibleChildrenInfo); 215 216 /** 217 * Set the caret to a text position. Returns whether successful; 218 * 219 * Bug ID 4944770 - setCaretPosition method needed 220 */ 221 BOOL setCaretPosition(long vmID, AccessibleContext accessibleContext, int position); 222 223 /** 224 * Gets the text caret bounding rectangle 225 */ 226 BOOL getCaretLocation(long vmID, JOBJECT64 AccessibleContext, AccessibleTextRectInfo *rectInfo, jint index); 227 228 // Accessible Text functions 229 BOOL getAccessibleTextInfo(long vmID, JOBJECT64 AccessibleContext, AccessibleTextInfo *textInfo, jint x, jint y); 230 BOOL getAccessibleTextItems(long vmID, JOBJECT64 AccessibleContext, AccessibleTextItemsInfo *textItems, jint index); 231 BOOL getAccessibleTextSelectionInfo(long vmID, JOBJECT64 AccessibleContext, AccessibleTextSelectionInfo *selectionInfo); 232 BOOL getAccessibleTextAttributes(long vmID, JOBJECT64 AccessibleContext, jint index, AccessibleTextAttributesInfo *attributes); 233 BOOL getAccessibleTextRect(long vmID, JOBJECT64 AccessibleContext, AccessibleTextRectInfo *rectInfo, jint index); 234 BOOL getAccessibleTextLineBounds(long vmID, JOBJECT64 AccessibleContext, jint index, jint *startIndex, jint *endIndex); 235 BOOL getAccessibleTextRange(long vmID, JOBJECT64 AccessibleContext, jint start, jint end, wchar_t *text, short len); 236 237 // Accessible Value methods 238 BOOL getCurrentAccessibleValueFromContext(long vmID,JOBJECT64 AccessibleContext, wchar_t *value, short len); 239 BOOL getMaximumAccessibleValueFromContext(long vmID,JOBJECT64 AccessibleContext, wchar_t *value, short len); 240 BOOL getMinimumAccessibleValueFromContext(long vmID,JOBJECT64 AccessibleContext, wchar_t *value, short len); 241 242 // Accessible Selection methods 243 void addAccessibleSelectionFromContext(long vmID,JOBJECT64 AccessibleContext, int i); 244 void clearAccessibleSelectionFromContext(long vmID,JOBJECT64 AccessibleContext); 245 JOBJECT64 getAccessibleSelectionFromContext(long vmID,JOBJECT64 AccessibleContext, int i); 246 int getAccessibleSelectionCountFromContext(long vmID,JOBJECT64 AccessibleContext); 247 BOOL isAccessibleChildSelectedFromContext(long vmID,JOBJECT64 AccessibleContext, int i); 248 void removeAccessibleSelectionFromContext(long vmID,JOBJECT64 AccessibleContext, int i); 249 void selectAllAccessibleSelectionFromContext(long vmID,JOBJECT64 AccessibleContext); 250 251 252 // PropertyChange Event registry routines 253 void setPropertyChangeFP(AccessBridge_PropertyChangeFP fp); 254 255 // Java application shutdown 256 void setJavaShutdownFP(AccessBridge_JavaShutdownFP fp); 257 258 // Focus Event registry routines 259 void setFocusGainedFP(AccessBridge_FocusGainedFP fp); 260 void setFocusLostFP(AccessBridge_FocusLostFP fp); 261 262 // Caret Event registry routines 263 void setCaretUpdateFP(AccessBridge_CaretUpdateFP fp); 264 265 // Mouse Event registry routines 266 void setMouseClickedFP(AccessBridge_MouseClickedFP fp); 267 void setMouseEnteredFP(AccessBridge_MouseEnteredFP fp); 268 void setMouseExitedFP(AccessBridge_MouseExitedFP fp); 269 void setMousePressedFP(AccessBridge_MousePressedFP fp); 270 void setMouseReleasedFP(AccessBridge_MouseReleasedFP fp); 271 272 // Menu/PopupMenu Event registry routines 273 void setMenuCanceledFP(AccessBridge_MenuCanceledFP fp); 274 void setMenuDeselectedFP(AccessBridge_MenuDeselectedFP fp); 275 void setMenuSelectedFP(AccessBridge_MenuSelectedFP fp); 276 void setPopupMenuCanceledFP(AccessBridge_PopupMenuCanceledFP fp); 277 void setPopupMenuWillBecomeInvisibleFP(AccessBridge_PopupMenuWillBecomeInvisibleFP fp); 278 void setPopupMenuWillBecomeVisibleFP(AccessBridge_PopupMenuWillBecomeVisibleFP fp); 279 280 // Accessibility PropertyChange Event registry routines 281 void setPropertyNameChangeFP(AccessBridge_PropertyNameChangeFP fp); 282 void setPropertyDescriptionChangeFP(AccessBridge_PropertyDescriptionChangeFP fp); 283 void setPropertyStateChangeFP(AccessBridge_PropertyStateChangeFP fp); 284 void setPropertyValueChangeFP(AccessBridge_PropertyValueChangeFP fp); 285 void setPropertySelectionChangeFP(AccessBridge_PropertySelectionChangeFP fp); 286 void setPropertyTextChangeFP(AccessBridge_PropertyTextChangeFP fp); 287 void setPropertyCaretChangeFP(AccessBridge_PropertyCaretChangeFP fp); 288 void setPropertyVisibleDataChangeFP(AccessBridge_PropertyVisibleDataChangeFP fp); 289 void setPropertyChildChangeFP(AccessBridge_PropertyChildChangeFP fp); 290 void setPropertyActiveDescendentChangeFP(AccessBridge_PropertyActiveDescendentChangeFP fp); 291 292 void setPropertyTableModelChangeFP(AccessBridge_PropertyTableModelChangeFP fp); 293 294 295 296 #ifdef __cplusplus 297 } 298 #endif 299 300 #endif