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 * Header file for packages of paramaters passed between Java Accessibility
28 * and native Assistive Technologies
29 */
30
31#ifndef __AccessBridgePackages_H__
32#define __AccessBridgePackages_H__
33
34#include <jni.h>
35#include <windows.h>
36
37#ifdef __cplusplus
38extern "C" {
39#endif
40
41#ifdef ACCESSBRIDGE_ARCH_LEGACY
42typedef jobject JOBJECT64;
43typedef HWND ABHWND64;
44#define ABHandleToLong
45#define ABLongToHandle
46#else
47typedef jlong JOBJECT64;
48typedef long ABHWND64;
49#define ABHandleToLong HandleToLong
50#define ABLongToHandle LongToHandle
51#endif
52
53#define MAX_BUFFER_SIZE   10240
54#define MAX_STRING_SIZE   1024
55#define SHORT_STRING_SIZE   256
56
57    // object types
58    typedef JOBJECT64 AccessibleContext;
59    typedef JOBJECT64 AccessibleText;
60    typedef JOBJECT64 AccessibleValue;
61    typedef JOBJECT64 AccessibleSelection;
62    typedef JOBJECT64 Java_Object;
63    typedef JOBJECT64 PropertyChangeEvent;
64    typedef JOBJECT64 FocusEvent;
65    typedef JOBJECT64 CaretEvent;
66    typedef JOBJECT64 MouseEvent;
67    typedef JOBJECT64 MenuEvent;
68    typedef JOBJECT64 AccessibleTable;
69    typedef JOBJECT64 AccessibleHyperlink;
70    typedef JOBJECT64 AccessibleHypertext;
71
72    /**
73     ******************************************************
74     *  Java event types
75     ******************************************************
76     */
77
78#define cPropertyChangeEvent (jlong) 1          // 1
79#define cFocusGainedEvent (jlong) 2             // 2
80#define cFocusLostEvent (jlong) 4               // 4
81#define cCaretUpdateEvent (jlong) 8             // 8
82#define cMouseClickedEvent (jlong) 16           // 10
83#define cMouseEnteredEvent (jlong) 32           // 20
84#define cMouseExitedEvent (jlong) 64            // 40
85#define cMousePressedEvent (jlong) 128          // 80
86#define cMouseReleasedEvent (jlong) 256         // 100
87#define cMenuCanceledEvent (jlong) 512          // 200
88#define cMenuDeselectedEvent (jlong) 1024       // 400
89#define cMenuSelectedEvent (jlong) 2048         // 800
90#define cPopupMenuCanceledEvent (jlong) 4096    // 1000
91#define cPopupMenuWillBecomeInvisibleEvent (jlong) 8192         // 2000
92#define cPopupMenuWillBecomeVisibleEvent (jlong) 16384          // 4000
93#define cJavaShutdownEvent (jlong) 32768        // 8000
94
95    /**
96     ******************************************************
97     *  Accessible Roles
98     *      Defines all AccessibleRoles in Local.US
99     ******************************************************
100     */
101
102    /**
103     * Object is used to alert the user about something.
104     */
105#define ACCESSIBLE_ALERT L"alert"
106
107    /**
108     * The header for a column of data.
109     */
110#define ACCESSIBLE_COLUMN_HEADER L"column header"
111
112    /**
113     * Object that can be drawn into and is used to trap
114     * events.
115     * see ACCESSIBLE_FRAME
116     * see ACCESSIBLE_GLASS_PANE
117     * see ACCESSIBLE_LAYERED_PANE
118     */
119#define ACCESSIBLE_CANVAS L"canvas"
120
121    /**
122     * A list of choices the user can select from.  Also optionally
123     * allows the user to enter a choice of their own.
124     */
125#define ACCESSIBLE_COMBO_BOX L"combo box"
126
127    /**
128     * An iconified internal frame in a DESKTOP_PANE.
129     * see ACCESSIBLE_DESKTOP_PANE
130     * see ACCESSIBLE_INTERNAL_FRAME
131     */
132#define ACCESSIBLE_DESKTOP_ICON L"desktop icon"
133
134    /**
135     * A frame-like object that is clipped by a desktop pane.  The
136     * desktop pane, internal frame, and desktop icon objects are
137     * often used to create multiple document interfaces within an
138     * application.
139     * see ACCESSIBLE_DESKTOP_ICON
140     * see ACCESSIBLE_DESKTOP_PANE
141     * see ACCESSIBLE_FRAME
142     */
143#define ACCESSIBLE_INTERNAL_FRAME L"internal frame"
144
145    /**
146     * A pane that supports internal frames and
147     * iconified versions of those internal frames.
148     * see ACCESSIBLE_DESKTOP_ICON
149     * see ACCESSIBLE_INTERNAL_FRAME
150     */
151#define ACCESSIBLE_DESKTOP_PANE L"desktop pane"
152
153    /**
154     * A specialized pane whose primary use is inside a DIALOG
155     * see ACCESSIBLE_DIALOG
156     */
157#define ACCESSIBLE_OPTION_PANE L"option pane"
158
159    /**
160     * A top level window with no title or border.
161     * see ACCESSIBLE_FRAME
162     * see ACCESSIBLE_DIALOG
163     */
164#define ACCESSIBLE_WINDOW L"window"
165
166    /**
167     * A top level window with a title bar, border, menu bar, etc.  It is
168     * often used as the primary window for an application.
169     * see ACCESSIBLE_DIALOG
170     * see ACCESSIBLE_CANVAS
171     * see ACCESSIBLE_WINDOW
172     */
173#define ACCESSIBLE_FRAME L"frame"
174
175    /**
176     * A top level window with title bar and a border.  A dialog is similar
177     * to a frame, but it has fewer properties and is often used as a
178     * secondary window for an application.
179     * see ACCESSIBLE_FRAME
180     * see ACCESSIBLE_WINDOW
181     */
182#define ACCESSIBLE_DIALOG L"dialog"
183
184    /**
185     * A specialized dialog that lets the user choose a color.
186     */
187#define ACCESSIBLE_COLOR_CHOOSER L"color chooser"
188
189
190    /**
191     * A pane that allows the user to navigate through
192     * and select the contents of a directory.  May be used
193     * by a file chooser.
194     * see ACCESSIBLE_FILE_CHOOSER
195     */
196#define ACCESSIBLE_DIRECTORY_PANE L"directory pane"
197
198    /**
199     * A specialized dialog that displays the files in the directory
200     * and lets the user select a file, browse a different directory,
201     * or specify a filename.  May use the directory pane to show the
202     * contents of a directory.
203     * see ACCESSIBLE_DIRECTORY_PANE
204     */
205#define ACCESSIBLE_FILE_CHOOSER L"file chooser"
206
207    /**
208     * An object that fills up space in a user interface.  It is often
209     * used in interfaces to tweak the spacing between components,
210     * but serves no other purpose.
211     */
212#define ACCESSIBLE_FILLER L"filler"
213
214    /**
215     * A hypertext anchor
216     */
217#define ACCESSIBLE_HYPERLINK L"hyperlink"
218
219    /**
220     * A small fixed size picture, typically used to decorate components.
221     */
222#define ACCESSIBLE_ICON L"icon"
223
224    /**
225     * An object used to present an icon or short string in an interface.
226     */
227#define ACCESSIBLE_LABEL L"label"
228
229    /**
230     * A specialized pane that has a glass pane and a layered pane as its
231     * children.
232     * see ACCESSIBLE_GLASS_PANE
233     * see ACCESSIBLE_LAYERED_PANE
234     */
235#define ACCESSIBLE_ROOT_PANE L"root pane"
236
237    /**
238     * A pane that is guaranteed to be painted on top
239     * of all panes beneath it.
240     * see ACCESSIBLE_ROOT_PANE
241     * see ACCESSIBLE_CANVAS
242     */
243#define ACCESSIBLE_GLASS_PANE L"glass pane"
244
245    /**
246     * A specialized pane that allows its children to be drawn in layers,
247     * providing a form of stacking order.  This is usually the pane that
248     * holds the menu bar as well as the pane that contains most of the
249     * visual components in a window.
250     * see ACCESSIBLE_GLASS_PANE
251     * see ACCESSIBLE_ROOT_PANE
252     */
253#define ACCESSIBLE_LAYERED_PANE L"layered pane"
254
255    /**
256     * An object that presents a list of objects to the user and allows the
257     * user to select one or more of them.  A list is usually contained
258     * within a scroll pane.
259     * see ACCESSIBLE_SCROLL_PANE
260     * see ACCESSIBLE_LIST_ITEM
261     */
262#define ACCESSIBLE_LIST L"list"
263
264    /**
265     * An object that presents an element in a list.  A list is usually
266     * contained within a scroll pane.
267     * see ACCESSIBLE_SCROLL_PANE
268     * see ACCESSIBLE_LIST
269     */
270#define ACCESSIBLE_LIST_ITEM L"list item"
271
272    /**
273     * An object usually drawn at the top of the primary dialog box of
274     * an application that contains a list of menus the user can choose
275     * from.  For example, a menu bar might contain menus for "File,"
276     * "Edit," and "Help."
277     * see ACCESSIBLE_MENU
278     * see ACCESSIBLE_POPUP_MENU
279     * see ACCESSIBLE_LAYERED_PANE
280     */
281#define ACCESSIBLE_MENU_BAR L"menu bar"
282
283    /**
284     * A temporary window that is usually used to offer the user a
285     * list of choices, and then hides when the user selects one of
286     * those choices.
287     * see ACCESSIBLE_MENU
288     * see ACCESSIBLE_MENU_ITEM
289     */
290#define ACCESSIBLE_POPUP_MENU L"popup menu"
291
292    /**
293     * An object usually found inside a menu bar that contains a list
294     * of actions the user can choose from.  A menu can have any object
295     * as its children, but most often they are menu items, other menus,
296     * or rudimentary objects such as radio buttons, check boxes, or
297     * separators.  For example, an application may have an "Edit" menu
298     * that contains menu items for "Cut" and "Paste."
299     * see ACCESSIBLE_MENU_BAR
300     * see ACCESSIBLE_MENU_ITEM
301     * see ACCESSIBLE_SEPARATOR
302     * see ACCESSIBLE_RADIO_BUTTON
303     * see ACCESSIBLE_CHECK_BOX
304     * see ACCESSIBLE_POPUP_MENU
305     */
306#define ACCESSIBLE_MENU L"menu"
307
308    /**
309     * An object usually contained in a menu that presents an action
310     * the user can choose.  For example, the "Cut" menu item in an
311     * "Edit" menu would be an action the user can select to cut the
312     * selected area of text in a document.
313     * see ACCESSIBLE_MENU_BAR
314     * see ACCESSIBLE_SEPARATOR
315     * see ACCESSIBLE_POPUP_MENU
316     */
317#define ACCESSIBLE_MENU_ITEM L"menu item"
318
319    /**
320     * An object usually contained in a menu to provide a visual
321     * and logical separation of the contents in a menu.  For example,
322     * the "File" menu of an application might contain menu items for
323     * "Open," "Close," and "Exit," and will place a separator between
324     * "Close" and "Exit" menu items.
325     * see ACCESSIBLE_MENU
326     * see ACCESSIBLE_MENU_ITEM
327     */
328#define ACCESSIBLE_SEPARATOR L"separator"
329
330    /**
331     * An object that presents a series of panels (or page tabs), one at a
332     * time, through some mechanism provided by the object.  The most common
333     * mechanism is a list of tabs at the top of the panel.  The children of
334     * a page tab list are all page tabs.
335     * see ACCESSIBLE_PAGE_TAB
336     */
337#define ACCESSIBLE_PAGE_TAB_LIST L"page tab list"
338
339    /**
340     * An object that is a child of a page tab list.  Its sole child is
341     * the panel that is to be presented to the user when the user
342     * selects the page tab from the list of tabs in the page tab list.
343     * see ACCESSIBLE_PAGE_TAB_LIST
344     */
345#define ACCESSIBLE_PAGE_TAB L"page tab"
346
347    /**
348     * A generic container that is often used to group objects.
349     */
350#define ACCESSIBLE_PANEL L"panel"
351
352    /**
353     * An object used to indicate how much of a task has been completed.
354     */
355#define ACCESSIBLE_PROGRESS_BAR L"progress bar"
356
357    /**
358     * A text object used for passwords, or other places where the
359     * text contents is not shown visibly to the user
360     */
361#define ACCESSIBLE_PASSWORD_TEXT L"password text"
362
363    /**
364     * An object the user can manipulate to tell the application to do
365     * something.
366     * see ACCESSIBLE_CHECK_BOX
367     * see ACCESSIBLE_TOGGLE_BUTTON
368     * see ACCESSIBLE_RADIO_BUTTON
369     */
370#define ACCESSIBLE_PUSH_BUTTON L"push button"
371
372    /**
373     * A specialized push button that can be checked or unchecked, but
374     * does not provide a separate indicator for the current state.
375     * see ACCESSIBLE_PUSH_BUTTON
376     * see ACCESSIBLE_CHECK_BOX
377     * see ACCESSIBLE_RADIO_BUTTON
378     */
379#define ACCESSIBLE_TOGGLE_BUTTON L"toggle button"
380
381    /**
382     * A choice that can be checked or unchecked and provides a
383     * separate indicator for the current state.
384     * see ACCESSIBLE_PUSH_BUTTON
385     * see ACCESSIBLE_TOGGLE_BUTTON
386     * see ACCESSIBLE_RADIO_BUTTON
387     */
388#define ACCESSIBLE_CHECK_BOX L"check box"
389
390    /**
391     * A specialized check box that will cause other radio buttons in the
392     * same group to become unchecked when this one is checked.
393     * see ACCESSIBLE_PUSH_BUTTON
394     * see ACCESSIBLE_TOGGLE_BUTTON
395     * see ACCESSIBLE_CHECK_BOX
396     */
397#define ACCESSIBLE_RADIO_BUTTON L"radio button"
398
399    /**
400     * The header for a row of data.
401     */
402#define ACCESSIBLE_ROW_HEADER L"row header"
403
404    /**
405     * An object that allows a user to incrementally view a large amount
406     * of information.  Its children can include scroll bars and a viewport.
407     * see ACCESSIBLE_SCROLL_BAR
408     * see ACCESSIBLE_VIEWPORT
409     */
410#define ACCESSIBLE_SCROLL_PANE L"scroll pane"
411
412    /**
413     * An object usually used to allow a user to incrementally view a
414     * large amount of data.  Usually used only by a scroll pane.
415     * see ACCESSIBLE_SCROLL_PANE
416     */
417#define ACCESSIBLE_SCROLL_BAR L"scroll bar"
418
419    /**
420     * An object usually used in a scroll pane.  It represents the portion
421     * of the entire data that the user can see.  As the user manipulates
422     * the scroll bars, the contents of the viewport can change.
423     * see ACCESSIBLE_SCROLL_PANE
424     */
425#define ACCESSIBLE_VIEWPORT L"viewport"
426
427    /**
428     * An object that allows the user to select from a bounded range.  For
429     * example, a slider might be used to select a number between 0 and 100.
430     */
431#define ACCESSIBLE_SLIDER L"slider"
432
433    /**
434     * A specialized panel that presents two other panels at the same time.
435     * Between the two panels is a divider the user can manipulate to make
436     * one panel larger and the other panel smaller.
437     */
438#define ACCESSIBLE_SPLIT_PANE L"split pane"
439
440    /**
441     * An object used to present information in terms of rows and columns.
442     * An example might include a spreadsheet application.
443     */
444#define ACCESSIBLE_TABLE L"table"
445
446    /**
447     * An object that presents text to the user.  The text is usually
448     * editable by the user as opposed to a label.
449     * see ACCESSIBLE_LABEL
450     */
451#define ACCESSIBLE_TEXT L"text"
452
453    /**
454     * An object used to present hierarchical information to the user.
455     * The individual nodes in the tree can be collapsed and expanded
456     * to provide selective disclosure of the tree's contents.
457     */
458#define ACCESSIBLE_TREE L"tree"
459
460    /**
461     * A bar or palette usually composed of push buttons or toggle buttons.
462     * It is often used to provide the most frequently used functions for an
463     * application.
464     */
465#define ACCESSIBLE_TOOL_BAR L"tool bar"
466
467    /**
468     * An object that provides information about another object.  The
469     * accessibleDescription property of the tool tip is often displayed
470     * to the user in a small L"help bubble" when the user causes the
471     * mouse to hover over the object associated with the tool tip.
472     */
473#define ACCESSIBLE_TOOL_TIP L"tool tip"
474
475    /**
476     * An AWT component, but nothing else is known about it.
477     * see ACCESSIBLE_SWING_COMPONENT
478     * see ACCESSIBLE_UNKNOWN
479     */
480#define ACCESSIBLE_AWT_COMPONENT L"awt component"
481
482    /**
483     * A Swing component, but nothing else is known about it.
484     * see ACCESSIBLE_AWT_COMPONENT
485     * see ACCESSIBLE_UNKNOWN
486     */
487#define ACCESSIBLE_SWING_COMPONENT L"swing component"
488
489    /**
490     * The object contains some Accessible information, but its role is
491     * not known.
492     * see ACCESSIBLE_AWT_COMPONENT
493     * see ACCESSIBLE_SWING_COMPONENT
494     */
495#define ACCESSIBLE_UNKNOWN L"unknown"
496
497    /**
498     * A STATUS_BAR is an simple component that can contain
499     * multiple labels of status information to the user.
500     */
501#define ACCESSIBLE_STATUS_BAR L"status bar"
502
503    /**
504     * A DATE_EDITOR is a component that allows users to edit
505     * java.util.Date and java.util.Time objects
506     */
507#define ACCESSIBLE_DATE_EDITOR L"date editor"
508
509    /**
510     * A SPIN_BOX is a simple spinner component and its main use
511     * is for simple numbers.
512     */
513#define ACCESSIBLE_SPIN_BOX L"spin box"
514
515    /**
516     * A FONT_CHOOSER is a component that lets the user pick various
517     * attributes for fonts.
518     */
519#define ACCESSIBLE_FONT_CHOOSER L"font chooser"
520
521    /**
522     * A GROUP_BOX is a simple container that contains a border
523     * around it and contains components inside it.
524     */
525#define ACCESSIBLE_GROUP_BOX L"group box"
526
527    /**
528     * A text header
529     */
530#define ACCESSIBLE_HEADER L"header"
531
532    /**
533     * A text footer
534     */
535#define ACCESSIBLE_FOOTER L"footer"
536
537    /**
538     * A text paragraph
539     */
540#define ACCESSIBLE_PARAGRAPH L"paragraph"
541
542    /**
543     * A ruler is an object used to measure distance
544     */
545#define ACCESSIBLE_RULER L"ruler"
546
547    /**
548     * A role indicating the object acts as a formula for
549     * calculating a value.  An example is a formula in
550     * a spreadsheet cell.
551     */
552#define ACCESSIBLE_EDITBAR L"editbar"
553
554    /**
555     * A role indicating the object monitors the progress
556     * of some operation.
557     */
558#define PROGRESS_MONITOR L"progress monitor"
559
560
561    /**
562     ******************************************************
563     *  Accessibility event types
564     ******************************************************
565     */
566
567#define cPropertyNameChangeEvent (jlong) 1              // 1
568#define cPropertyDescriptionChangeEvent (jlong) 2       // 2
569#define cPropertyStateChangeEvent (jlong) 4             // 4
570#define cPropertyValueChangeEvent (jlong) 8             // 8
571#define cPropertySelectionChangeEvent (jlong) 16        // 10
572#define cPropertyTextChangeEvent (jlong) 32             // 20
573#define cPropertyCaretChangeEvent (jlong) 64            // 40
574#define cPropertyVisibleDataChangeEvent (jlong) 128     // 80
575#define cPropertyChildChangeEvent (jlong) 256           // 100
576#define cPropertyActiveDescendentChangeEvent (jlong) 512 // 200
577#define cPropertyTableModelChangeEvent (jlong) 1024     // 400
578
579    /**
580     ******************************************************
581     *  optional AccessibleContext interfaces
582     *
583     * This version of the bridge reuses the accessibleValue
584     * field in the AccessibleContextInfo struct to represent
585     * additional optional interfaces that are supported by
586     * the Java AccessibleContext.  This is backwardly compatable
587     * because the old accessibleValue was set to the BOOL
588     * value TRUE (i.e., 1) if the AccessibleValue interface is
589     * supported.
590     ******************************************************
591     */
592
593#define cAccessibleValueInterface (jlong) 1             // 1 << 1 (TRUE)
594#define cAccessibleActionInterface (jlong) 2            // 1 << 2
595#define cAccessibleComponentInterface (jlong) 4         // 1 << 3
596#define cAccessibleSelectionInterface (jlong) 8         // 1 << 4
597#define cAccessibleTableInterface (jlong) 16            // 1 << 5
598#define cAccessibleTextInterface (jlong) 32             // 1 << 6
599#define cAccessibleHypertextInterface (jlong) 64        // 1 << 7
600
601
602    /**
603     ******************************************************
604     *  Accessibility information bundles
605     ******************************************************
606     */
607
608    typedef struct AccessBridgeVersionInfoTag {
609        wchar_t VMversion[SHORT_STRING_SIZE];               // output of "java -version"
610        wchar_t bridgeJavaClassVersion[SHORT_STRING_SIZE];  // version of the AccessBridge.class
611        wchar_t bridgeJavaDLLVersion[SHORT_STRING_SIZE];    // version of JavaAccessBridge.dll
612        wchar_t bridgeWinDLLVersion[SHORT_STRING_SIZE];     // version of WindowsAccessBridge.dll
613    } AccessBridgeVersionInfo;
614
615
616    typedef struct AccessibleContextInfoTag {
617        wchar_t name[MAX_STRING_SIZE];          // the AccessibleName of the object
618        wchar_t description[MAX_STRING_SIZE];   // the AccessibleDescription of the object
619
620        wchar_t role[SHORT_STRING_SIZE];        // localized AccesibleRole string
621        wchar_t role_en_US[SHORT_STRING_SIZE];  // AccesibleRole string in the en_US locale
622        wchar_t states[SHORT_STRING_SIZE];      // localized AccesibleStateSet string (comma separated)
623        wchar_t states_en_US[SHORT_STRING_SIZE]; // AccesibleStateSet string in the en_US locale (comma separated)
624
625        jint indexInParent;                     // index of object in parent
626        jint childrenCount;                     // # of children, if any
627
628        jint x;                                 // screen coords in pixels
629        jint y;                                 // "
630        jint width;                             // pixel width of object
631        jint height;                            // pixel height of object
632
633        BOOL accessibleComponent;               // flags for various additional
634        BOOL accessibleAction;                  //  Java Accessibility interfaces
635        BOOL accessibleSelection;               //  FALSE if this object doesn't
636        BOOL accessibleText;                    //  implement the additional interface
637                                                //  in question
638
639        // BOOL accessibleValue;                // old BOOL indicating whether AccessibleValue is supported
640        BOOL accessibleInterfaces;              // new bitfield containing additional interface flags
641
642    } AccessibleContextInfo;
643
644
645
646    // AccessibleText packages
647    typedef struct AccessibleTextInfoTag {
648        jint charCount;                 // # of characters in this text object
649        jint caretIndex;                // index of caret
650        jint indexAtPoint;              // index at the passsed in point
651    } AccessibleTextInfo;
652
653    typedef struct AccessibleTextItemsInfoTag {
654        wchar_t letter;
655        wchar_t word[SHORT_STRING_SIZE];
656        wchar_t sentence[MAX_STRING_SIZE];
657    } AccessibleTextItemsInfo;
658
659    typedef struct AccessibleTextSelectionInfoTag {
660        jint selectionStartIndex;
661        jint selectionEndIndex;
662        wchar_t selectedText[MAX_STRING_SIZE];
663    } AccessibleTextSelectionInfo;
664
665    typedef struct AccessibleTextRectInfoTag {
666        jint x;                     // bounding rect of char at index
667        jint y;                     // "
668        jint width;                 // "
669        jint height;                // "
670    } AccessibleTextRectInfo;
671
672    // standard attributes for text; note: tabstops are not supported
673    typedef struct AccessibleTextAttributesInfoTag {
674        BOOL bold;
675        BOOL italic;
676        BOOL underline;
677        BOOL strikethrough;
678        BOOL superscript;
679        BOOL subscript;
680
681        wchar_t backgroundColor[SHORT_STRING_SIZE];
682        wchar_t foregroundColor[SHORT_STRING_SIZE];
683        wchar_t fontFamily[SHORT_STRING_SIZE];
684        jint fontSize;
685
686        jint alignment;
687        jint bidiLevel;
688
689        jfloat firstLineIndent;
690        jfloat leftIndent;
691        jfloat rightIndent;
692        jfloat lineSpacing;
693        jfloat spaceAbove;
694        jfloat spaceBelow;
695
696        wchar_t fullAttributesString[MAX_STRING_SIZE];
697    } AccessibleTextAttributesInfo;
698
699    /**
700     ******************************************************
701     *  IPC management typedefs
702     ******************************************************
703     */
704
705#define cMemoryMappedNameSize   255
706
707    /**
708     * sent by the WindowsDLL -> the memory-mapped file is setup
709     *
710     */
711    typedef struct MemoryMappedFileCreatedPackageTag {
712//      HWND bridgeWindow;              // redundant, but easier to get to here...
713        ABHWND64 bridgeWindow;          // redundant, but easier to get to here...
714        char filename[cMemoryMappedNameSize];
715    } MemoryMappedFileCreatedPackage;
716
717
718
719
720    /**
721     * sent when a new JavaVM attaches to the Bridge
722     *
723     */
724    typedef struct JavaVMCreatedPackageTag {
725        ABHWND64 bridgeWindow;
726        long vmID;
727    } JavaVMCreatedPackage;
728
729    /**
730     * sent when a JavaVM detatches from the Bridge
731     *
732     */
733    typedef struct JavaVMDestroyedPackageTag {
734        ABHWND64 bridgeWindow;
735    } JavaVMDestroyedPackage;
736
737    /**
738     * sent when a new AT attaches to the Bridge
739     *
740     */
741    typedef struct WindowsATCreatedPackageTag {
742        ABHWND64 bridgeWindow;
743    } WindowsATCreatedPackage;
744
745    /**
746     * sent when an AT detatches from the Bridge
747     *
748     */
749    typedef struct WindowsATDestroyedPackageTag {
750        ABHWND64 bridgeWindow;
751    } WindowsATDestroyedPackage;
752
753
754    /**
755     * sent by JVM Bridges in response to a WindowsATCreate
756     * message; saying "howdy, welcome to the neighborhood"
757     *
758     */
759    typedef struct JavaVMPresentNotificationPackageTag {
760        ABHWND64 bridgeWindow;
761        long vmID;
762    } JavaVMPresentNotificationPackage;
763
764    /**
765     * sent by AT Bridges in response to a JavaVMCreate
766     * message; saying "howdy, welcome to the neighborhood"
767     *
768     */
769    typedef struct WindowsATPresentNotificationPackageTag {
770        ABHWND64 bridgeWindow;
771    } WindowsATPresentNotificationPackage;
772
773
774    /**
775     ******************************************************
776     *  Core packages
777     ******************************************************
778     */
779
780    typedef struct ReleaseJavaObjectPackageTag {
781        long vmID;
782        JOBJECT64 object;
783    } ReleaseJavaObjectPackage;
784
785    typedef struct GetAccessBridgeVersionPackageTag {
786        long vmID;                    // can't get VM info w/out a VM!
787        AccessBridgeVersionInfo rVersionInfo;
788    } GetAccessBridgeVersionPackage;
789
790    typedef struct IsSameObjectPackageTag {
791        long vmID;
792        JOBJECT64 obj1;
793        JOBJECT64 obj2;
794        jboolean rResult;
795    } IsSameObjectPackage;
796
797    /**
798     ******************************************************
799     *  Windows packages
800     ******************************************************
801     */
802
803    typedef struct IsJavaWindowPackageTag {
804        jint window;
805        jboolean rResult;
806    } IsJavaWindowPackage;
807
808    typedef struct GetAccessibleContextFromHWNDPackageTag {
809        jint window;
810        long rVMID;
811        JOBJECT64 rAccessibleContext;
812    } GetAccessibleContextFromHWNDPackage;
813
814    typedef struct GetHWNDFromAccessibleContextPackageTag {
815        JOBJECT64 accessibleContext;
816        ABHWND64 rHWND;
817    } GetHWNDFromAccessibleContextPackage;
818
819    /**
820******************************************************
821*  AccessibleContext packages
822******************************************************
823*/
824
825    typedef struct GetAccessibleContextAtPackageTag {
826        jint x;
827        jint y;
828        long vmID;
829        JOBJECT64 AccessibleContext;            // look within this AC
830        JOBJECT64 rAccessibleContext;
831    } GetAccessibleContextAtPackage;
832
833    typedef struct GetAccessibleContextWithFocusPackageTag {
834        long rVMID;
835        JOBJECT64 rAccessibleContext;
836    } GetAccessibleContextWithFocusPackage;
837
838    typedef struct GetAccessibleContextInfoPackageTag {
839        long vmID;
840        JOBJECT64 AccessibleContext;
841        AccessibleContextInfo rAccessibleContextInfo;
842    } GetAccessibleContextInfoPackage;
843
844    typedef struct GetAccessibleChildFromContextPackageTag {
845        long vmID;
846        JOBJECT64 AccessibleContext;
847        jint childIndex;
848        JOBJECT64 rAccessibleContext;
849    } GetAccessibleChildFromContextPackage;
850
851    typedef struct GetAccessibleParentFromContextPackageTag {
852        long vmID;
853        JOBJECT64 AccessibleContext;
854        JOBJECT64 rAccessibleContext;
855    } GetAccessibleParentFromContextPackage;
856
857    /**
858******************************************************
859*  AccessibleTable packages
860******************************************************
861*/
862
863#define MAX_TABLE_SELECTIONS 64
864
865    // table information
866    typedef struct AccessibleTableInfoTag {
867        JOBJECT64 caption;  // AccesibleContext
868        JOBJECT64 summary;  // AccessibleContext
869        jint rowCount;
870        jint columnCount;
871        JOBJECT64 accessibleContext;
872        JOBJECT64 accessibleTable;
873    } AccessibleTableInfo;
874
875    typedef struct GetAccessibleTableInfoPackageTag {
876        long vmID;
877        JOBJECT64 accessibleContext;
878        AccessibleTableInfo rTableInfo;
879    } GetAccessibleTableInfoPackage;
880
881    // table cell information
882    typedef struct AccessibleTableCellInfoTag {
883        JOBJECT64  accessibleContext;
884        jint     index;
885        jint     row;
886        jint     column;
887        jint     rowExtent;
888        jint     columnExtent;
889        jboolean isSelected;
890    } AccessibleTableCellInfo;
891
892    typedef struct GetAccessibleTableCellInfoPackageTag {
893        long vmID;
894        JOBJECT64 accessibleTable;
895        jint row;
896        jint column;
897        AccessibleTableCellInfo rTableCellInfo;
898    } GetAccessibleTableCellInfoPackage;
899
900    typedef struct GetAccessibleTableRowHeaderPackageTag {
901        long vmID;
902        JOBJECT64 accessibleContext;
903        AccessibleTableInfo rTableInfo;
904    } GetAccessibleTableRowHeaderPackage;
905
906    typedef struct GetAccessibleTableColumnHeaderPackageTag {
907        long vmID;
908        JOBJECT64 accessibleContext;
909        AccessibleTableInfo rTableInfo;
910    } GetAccessibleTableColumnHeaderPackage;
911
912    typedef struct GetAccessibleTableRowDescriptionPackageTag {
913        long vmID;
914        JOBJECT64 accessibleContext;
915        jint row;
916        JOBJECT64 rAccessibleContext;
917    } GetAccessibleTableRowDescriptionPackage;
918
919    typedef struct GetAccessibleTableColumnDescriptionPackageTag {
920        long vmID;
921        JOBJECT64 accessibleContext;
922        jint column;
923        JOBJECT64 rAccessibleContext;
924    } GetAccessibleTableColumnDescriptionPackage;
925
926    typedef struct GetAccessibleTableRowSelectionCountPackageTag {
927        long vmID;
928        JOBJECT64 accessibleTable;
929        jint rCount;
930    } GetAccessibleTableRowSelectionCountPackage;
931
932    typedef struct IsAccessibleTableRowSelectedPackageTag {
933        long vmID;
934        JOBJECT64 accessibleTable;
935        jint row;
936        jboolean rResult;
937    } IsAccessibleTableRowSelectedPackage;
938
939    typedef struct GetAccessibleTableRowSelectionsPackageTag {
940        long vmID;
941        JOBJECT64 accessibleTable;
942        jint count;
943        jint rSelections[MAX_TABLE_SELECTIONS];
944    } GetAccessibleTableRowSelectionsPackage;
945
946    typedef struct GetAccessibleTableColumnSelectionCountPackageTag {
947        long vmID;
948        JOBJECT64 accessibleTable;
949        jint rCount;
950    } GetAccessibleTableColumnSelectionCountPackage;
951
952    typedef struct IsAccessibleTableColumnSelectedPackageTag {
953        long vmID;
954        JOBJECT64 accessibleTable;
955        jint column;
956        jboolean rResult;
957    } IsAccessibleTableColumnSelectedPackage;
958
959    typedef struct GetAccessibleTableColumnSelectionsPackageTag {
960        long vmID;
961        JOBJECT64 accessibleTable;
962        jint count;
963        jint rSelections[MAX_TABLE_SELECTIONS];
964    } GetAccessibleTableColumnSelectionsPackage;
965
966
967    typedef struct GetAccessibleTableRowPackageTag {
968        long vmID;
969        JOBJECT64 accessibleTable;
970        jint index;
971        jint rRow;
972    } GetAccessibleTableRowPackage;
973
974    typedef struct GetAccessibleTableColumnPackageTag {
975        long vmID;
976        JOBJECT64 accessibleTable;
977        jint index;
978        jint rColumn;
979    } GetAccessibleTableColumnPackage;
980
981    typedef struct GetAccessibleTableIndexPackageTag {
982        long vmID;
983        JOBJECT64 accessibleTable;
984        jint row;
985        jint column;
986        jint rIndex;
987    } GetAccessibleTableIndexPackage;
988
989
990    /**
991     ******************************************************
992     *  AccessibleRelationSet packages
993     ******************************************************
994     */
995
996#define MAX_RELATION_TARGETS 25
997#define MAX_RELATIONS 5
998
999    typedef struct AccessibleRelationInfoTag {
1000        wchar_t key[SHORT_STRING_SIZE];
1001        jint targetCount;
1002        JOBJECT64 targets[MAX_RELATION_TARGETS];  // AccessibleContexts
1003    } AccessibleRelationInfo;
1004
1005    typedef struct AccessibleRelationSetInfoTag {
1006        jint relationCount;
1007        AccessibleRelationInfo relations[MAX_RELATIONS];
1008    } AccessibleRelationSetInfo;
1009
1010    typedef struct GetAccessibleRelationSetPackageTag {
1011        long vmID;
1012        JOBJECT64 accessibleContext;
1013        AccessibleRelationSetInfo rAccessibleRelationSetInfo;
1014    } GetAccessibleRelationSetPackage;
1015
1016    /**
1017     ******************************************************
1018     *  AccessibleHypertext packagess
1019     ******************************************************
1020     */
1021
1022#define MAX_HYPERLINKS          64      // maximum number of hyperlinks returned
1023
1024    // hyperlink information
1025    typedef struct AccessibleHyperlinkInfoTag {
1026        wchar_t text[SHORT_STRING_SIZE]; // the hyperlink text
1027        jint startIndex;        //index in the hypertext document where the link begins
1028        jint endIndex;          //index in the hypertext document where the link ends
1029        JOBJECT64 accessibleHyperlink; // AccessibleHyperlink object
1030    } AccessibleHyperlinkInfo;
1031
1032    // hypertext information
1033    typedef struct AccessibleHypertextInfoTag {
1034        jint linkCount;         // number of hyperlinks
1035        AccessibleHyperlinkInfo links[MAX_HYPERLINKS];  // the hyperlinks
1036        JOBJECT64 accessibleHypertext; // AccessibleHypertext object
1037    } AccessibleHypertextInfo;
1038
1039    // struct for sending a message to get the hypertext for an AccessibleContext
1040    typedef struct GetAccessibleHypertextPackageTag {
1041        long vmID;              // the virtual machine ID
1042        JOBJECT64 accessibleContext; // AccessibleContext with hypertext
1043        AccessibleHypertextInfo rAccessibleHypertextInfo; // returned hypertext
1044    } GetAccessibleHypertextPackage;
1045
1046    // struct for sending an message to activate a hyperlink
1047    typedef struct ActivateAccessibleHyperlinkPackageTag {
1048        long vmID;              // the virtual machine ID
1049        JOBJECT64 accessibleContext; // AccessibleContext containing the link
1050        JOBJECT64 accessibleHyperlink; // the link to activate
1051        BOOL rResult;           // hyperlink activation return value
1052    } ActivateAccessibleHyperlinkPackage;
1053
1054    // struct for sending a message to get the number of hyperlinks in a component
1055    typedef struct GetAccessibleHyperlinkCountPackageTag {
1056        long vmID;              // the virtual machine ID
1057        JOBJECT64 accessibleContext;    // AccessibleContext containing AccessibleHypertext
1058        jint rLinkCount;        // link count return value
1059    } GetAccessibleHyperlinkCountPackage;
1060
1061    // struct for sending a message to get the hypertext for an AccessibleContext
1062    // starting at a specified index in the document
1063    typedef struct GetAccessibleHypertextExtPackageTag {
1064        long vmID;              // the virtual machine ID
1065        JOBJECT64 accessibleContext; // AccessibleContext with hypertext
1066        jint startIndex;        // start index in document
1067        AccessibleHypertextInfo rAccessibleHypertextInfo; // returned hypertext
1068        BOOL rSuccess;          // whether call succeeded
1069    } GetAccessibleHypertextExtPackage;
1070
1071    // struct for sending a message to get the nth hyperlink in a document;
1072    // maps to AccessibleHypertext.getLink
1073    typedef struct GetAccessibleHyperlinkPackageTag {
1074        long vmID;              // the virtual machine ID
1075        JOBJECT64 hypertext;    // AccessibleHypertext
1076        jint linkIndex;         // hyperlink index
1077        AccessibleHyperlinkInfo rAccessibleHyperlinkInfo; // returned hyperlink
1078    } GetAccessibleHyperlinkPackage;
1079
1080    // struct for sending a message to get the index into an array
1081    // of hyperlinks that is associated with a character index in a
1082    // document; maps to AccessibleHypertext.getLinkIndex
1083    typedef struct GetAccessibleHypertextLinkIndexPackageTag {
1084        long vmID;              // the virtual machine ID
1085        JOBJECT64 hypertext;    // AccessibleHypertext
1086        jint charIndex;         // character index in document
1087        jint rLinkIndex;        // returned hyperlink index
1088    } GetAccessibleHypertextLinkIndexPackage;
1089
1090    /**
1091     ******************************************************
1092     *  Accessible Key Bindings packages
1093     ******************************************************
1094     */
1095
1096#define MAX_KEY_BINDINGS        10
1097
1098    // keyboard character modifiers
1099#define ACCESSIBLE_SHIFT_KEYSTROKE              1
1100#define ACCESSIBLE_CONTROL_KEYSTROKE            2
1101#define ACCESSIBLE_META_KEYSTROKE               4
1102#define ACCESSIBLE_ALT_KEYSTROKE                8
1103#define ACCESSIBLE_ALT_GRAPH_KEYSTROKE          16
1104#define ACCESSIBLE_BUTTON1_KEYSTROKE            32
1105#define ACCESSIBLE_BUTTON2_KEYSTROKE            64
1106#define ACCESSIBLE_BUTTON3_KEYSTROKE            128
1107#define ACCESSIBLE_FKEY_KEYSTROKE               256  // F key pressed, character contains 1-24
1108#define ACCESSIBLE_CONTROLCODE_KEYSTROKE        512  // Control code key pressed, character contains control code.
1109
1110// The supported control code keys are:
1111#define ACCESSIBLE_VK_BACK_SPACE    8
1112#define ACCESSIBLE_VK_DELETE        127
1113#define ACCESSIBLE_VK_DOWN          40
1114#define ACCESSIBLE_VK_END           35
1115#define ACCESSIBLE_VK_HOME          36
1116#define ACCESSIBLE_VK_INSERT        155
1117#define ACCESSIBLE_VK_KP_DOWN       225
1118#define ACCESSIBLE_VK_KP_LEFT       226
1119#define ACCESSIBLE_VK_KP_RIGHT      227
1120#define ACCESSIBLE_VK_KP_UP         224
1121#define ACCESSIBLE_VK_LEFT          37
1122#define ACCESSIBLE_VK_PAGE_DOWN     34
1123#define ACCESSIBLE_VK_PAGE_UP       33
1124#define ACCESSIBLE_VK_RIGHT         39
1125#define ACCESSIBLE_VK_UP            38
1126
1127    // a key binding associates with a component
1128    typedef struct AccessibleKeyBindingInfoTag {
1129        jchar character;                // the key character
1130        jint modifiers;                 // the key modifiers
1131    } AccessibleKeyBindingInfo;
1132
1133    // all of the key bindings associated with a component
1134    typedef struct AccessibleKeyBindingsTag {
1135        int keyBindingsCount;   // number of key bindings
1136        AccessibleKeyBindingInfo keyBindingInfo[MAX_KEY_BINDINGS];
1137    } AccessibleKeyBindings;
1138
1139    // struct to get the key bindings associated with a component
1140    typedef struct GetAccessibleKeyBindingsPackageTag {
1141        long vmID;                                      // the virtual machine id
1142        JOBJECT64 accessibleContext;                    // the component
1143        AccessibleKeyBindings rAccessibleKeyBindings;   // the key bindings
1144    } GetAccessibleKeyBindingsPackage;
1145
1146    /**
1147******************************************************
1148*  AccessibleIcon packages
1149******************************************************
1150*/
1151#define MAX_ICON_INFO 8
1152
1153    // an icon assocated with a component
1154    typedef struct AccessibleIconInfoTag {
1155        wchar_t description[SHORT_STRING_SIZE]; // icon description
1156        jint height;                            // icon height
1157        jint width;                             // icon width
1158    } AccessibleIconInfo;
1159
1160    // all of the icons associated with a component
1161    typedef struct AccessibleIconsTag {
1162        jint iconsCount;                // number of icons
1163        AccessibleIconInfo iconInfo[MAX_ICON_INFO];     // the icons
1164    } AccessibleIcons;
1165
1166    // struct to get the icons associated with a component
1167    typedef struct GetAccessibleIconsPackageTag {
1168        long vmID;                              // the virtual machine id
1169        JOBJECT64 accessibleContext;            // the component
1170        AccessibleIcons rAccessibleIcons;       // the icons
1171    } GetAccessibleIconsPackage;
1172
1173
1174    /**
1175******************************************************
1176*  AccessibleAction packages
1177******************************************************
1178*/
1179#define MAX_ACTION_INFO 256
1180#define MAX_ACTIONS_TO_DO 32
1181
1182    // an action assocated with a component
1183    typedef struct AccessibleActionInfoTag {
1184        wchar_t name[SHORT_STRING_SIZE];        // action name
1185    } AccessibleActionInfo;
1186
1187    // all of the actions associated with a component
1188    typedef struct AccessibleActionsTag {
1189        jint actionsCount;              // number of actions
1190        AccessibleActionInfo actionInfo[MAX_ACTION_INFO];       // the action information
1191    } AccessibleActions;
1192
1193    // struct for requesting the actions associated with a component
1194    typedef struct GetAccessibleActionsPackageTag {
1195        long vmID;
1196        JOBJECT64 accessibleContext;                                    // the component
1197        AccessibleActions rAccessibleActions;           // the actions
1198    } GetAccessibleActionsPackage;
1199
1200    // list of AccessibleActions to do
1201    typedef struct AccessibleActionsToDoTag {
1202        jint actionsCount;                              // number of actions to do
1203        AccessibleActionInfo actions[MAX_ACTIONS_TO_DO];// the accessible actions to do
1204    } AccessibleActionsToDo;
1205
1206    // struct for sending an message to do one or more actions
1207    typedef struct DoAccessibleActionsPackageTag {
1208        long vmID;                         // the virtual machine ID
1209        JOBJECT64 accessibleContext;       // component to do the action
1210        AccessibleActionsToDo actionsToDo; // the accessible actions to do
1211        BOOL rResult;                      // action return value
1212        jint failure;                      // index of action that failed if rResult is FALSE
1213    } DoAccessibleActionsPackage;
1214
1215    /**
1216******************************************************
1217*  AccessibleText packages
1218******************************************************
1219*/
1220
1221    typedef struct GetAccessibleTextInfoPackageTag {
1222        long vmID;
1223        JOBJECT64 AccessibleContext;
1224        jint x;
1225        jint y;
1226        AccessibleTextInfo rTextInfo;
1227    } GetAccessibleTextInfoPackage;
1228
1229    typedef struct GetAccessibleTextItemsPackageTag {
1230        long vmID;
1231        JOBJECT64 AccessibleContext;
1232        jint index;
1233        AccessibleTextItemsInfo rTextItemsInfo;
1234    } GetAccessibleTextItemsPackage;
1235
1236    typedef struct GetAccessibleTextSelectionInfoPackageTag {
1237        long vmID;
1238        JOBJECT64 AccessibleContext;
1239        AccessibleTextSelectionInfo rTextSelectionItemsInfo;
1240    } GetAccessibleTextSelectionInfoPackage;
1241
1242    typedef struct GetAccessibleTextAttributeInfoPackageTag {
1243        long vmID;
1244        JOBJECT64 AccessibleContext;
1245        jint index;
1246        AccessibleTextAttributesInfo rAttributeInfo;
1247    } GetAccessibleTextAttributeInfoPackage;
1248
1249    typedef struct GetAccessibleTextRectInfoPackageTag {
1250        long vmID;
1251        JOBJECT64 AccessibleContext;
1252        jint index;
1253        AccessibleTextRectInfo rTextRectInfo;
1254    } GetAccessibleTextRectInfoPackage;
1255
1256    typedef struct GetCaretLocationPackageTag {
1257        long vmID;
1258        JOBJECT64 AccessibleContext;
1259        jint index;
1260        AccessibleTextRectInfo rTextRectInfo;
1261    } GetCaretLocationPackage;
1262
1263    typedef struct GetAccessibleTextLineBoundsPackageTag {
1264        long vmID;
1265        JOBJECT64 AccessibleContext;
1266        jint index;
1267        jint rLineStart;
1268        jint rLineEnd;
1269    } GetAccessibleTextLineBoundsPackage;
1270
1271    typedef struct GetAccessibleTextRangePackageTag {
1272        long vmID;
1273        JOBJECT64 AccessibleContext;
1274        jint start;
1275        jint end;
1276        wchar_t rText[MAX_BUFFER_SIZE];
1277    } GetAccessibleTextRangePackage;
1278
1279    /**
1280******************************************************
1281*
1282* Utility method packages
1283******************************************************
1284*/
1285
1286    typedef struct SetTextContentsPackageTag {
1287        long vmID;
1288        JOBJECT64 accessibleContext;    // the text field
1289        wchar_t text[MAX_STRING_SIZE];  // the text
1290        BOOL rResult;
1291    } SetTextContentsPackage;
1292
1293    typedef struct GetParentWithRolePackageTag {
1294        long vmID;
1295        JOBJECT64 accessibleContext;
1296        wchar_t role[SHORT_STRING_SIZE];  // one of Accessible Roles above
1297        JOBJECT64 rAccessibleContext;
1298    } GetParentWithRolePackage;
1299
1300    typedef struct GetTopLevelObjectPackageTag {
1301        long vmID;
1302        JOBJECT64 accessibleContext;
1303        JOBJECT64 rAccessibleContext;
1304    } GetTopLevelObjectPackage;
1305
1306    typedef struct GetParentWithRoleElseRootPackageTag {
1307        long vmID;
1308        JOBJECT64 accessibleContext;
1309        wchar_t role[SHORT_STRING_SIZE];  // one of Accessible Roles above
1310        JOBJECT64 rAccessibleContext;
1311    } GetParentWithRoleElseRootPackage;
1312
1313    typedef struct GetObjectDepthPackageTag {
1314        long vmID;
1315        JOBJECT64 accessibleContext;
1316        jint rResult;
1317    } GetObjectDepthPackage;
1318
1319    typedef struct GetActiveDescendentPackageTag {
1320        long vmID;
1321        JOBJECT64 accessibleContext;
1322        JOBJECT64 rAccessibleContext;
1323    } GetActiveDescendentPackage;
1324
1325    /**
1326******************************************************
1327*  AccessibleValue packages
1328******************************************************
1329*/
1330
1331    typedef struct GetCurrentAccessibleValueFromContextPackageTag {
1332        long vmID;
1333        JOBJECT64 AccessibleContext;
1334        wchar_t rValue[SHORT_STRING_SIZE];
1335    } GetCurrentAccessibleValueFromContextPackage;
1336
1337    typedef struct GetMaximumAccessibleValueFromContextPackageTag {
1338        long vmID;
1339        JOBJECT64 AccessibleContext;
1340        wchar_t rValue[SHORT_STRING_SIZE];
1341    } GetMaximumAccessibleValueFromContextPackage;
1342
1343    typedef struct GetMinimumAccessibleValueFromContextPackageTag {
1344        long vmID;
1345        JOBJECT64 AccessibleContext;
1346        wchar_t rValue[SHORT_STRING_SIZE];
1347    } GetMinimumAccessibleValueFromContextPackage;
1348
1349
1350    /**
1351******************************************************
1352*  AccessibleSelection packages
1353******************************************************
1354*/
1355
1356    typedef struct AddAccessibleSelectionFromContextPackageTag {
1357        long vmID;
1358        JOBJECT64 AccessibleContext;
1359        jint index;
1360    } AddAccessibleSelectionFromContextPackage;
1361
1362    typedef struct ClearAccessibleSelectionFromContextPackageTag {
1363        long vmID;
1364        JOBJECT64 AccessibleContext;
1365    } ClearAccessibleSelectionFromContextPackage;
1366
1367    typedef struct GetAccessibleSelectionFromContextPackageTag {
1368        long vmID;
1369        JOBJECT64 AccessibleContext;
1370        jint index;
1371        JOBJECT64 rAccessibleContext;
1372    } GetAccessibleSelectionFromContextPackage;
1373
1374    typedef struct GetAccessibleSelectionCountFromContextPackageTag {
1375        long vmID;
1376        JOBJECT64 AccessibleContext;
1377        jint rCount;
1378    } GetAccessibleSelectionCountFromContextPackage;
1379
1380    typedef struct IsAccessibleChildSelectedFromContextPackageTag {
1381        long vmID;
1382        JOBJECT64 AccessibleContext;
1383        jint index;
1384        jboolean rResult;
1385    } IsAccessibleChildSelectedFromContextPackage;
1386
1387    typedef struct RemoveAccessibleSelectionFromContextPackageTag {
1388        long vmID;
1389        JOBJECT64 AccessibleContext;
1390        jint index;
1391    } RemoveAccessibleSelectionFromContextPackage;
1392
1393    typedef struct SelectAllAccessibleSelectionFromContextPackageTag {
1394        long vmID;
1395        JOBJECT64 AccessibleContext;
1396    } SelectAllAccessibleSelectionFromContextPackage;
1397
1398
1399    /**
1400******************************************************
1401*  Java Event Notification Registration packages
1402******************************************************
1403*/
1404
1405    typedef struct AddJavaEventNotificationPackageTag {
1406        jlong type;
1407        //HWND DLLwindow;
1408        ABHWND64 DLLwindow;
1409    } AddJavaEventNotificationPackage;
1410
1411    typedef struct RemoveJavaEventNotificationPackageTag {
1412        jlong type;
1413        //HWND DLLwindow;
1414        ABHWND64 DLLwindow;
1415    } RemoveJavaEventNotificationPackage;
1416
1417
1418    /**
1419******************************************************
1420*  Accessibility Event Notification Registration packages
1421******************************************************
1422*/
1423
1424    typedef struct AddAccessibilityEventNotificationPackageTag {
1425        jlong type;
1426        //HWND DLLwindow;
1427        ABHWND64 DLLwindow;
1428    } AddAccessibilityEventNotificationPackage;
1429
1430    typedef struct RemoveAccessibilityEventNotificationPackageTag {
1431        jlong type;
1432        //HWND DLLwindow;
1433        ABHWND64 DLLwindow;
1434    } RemoveAccessibilityEventNotificationPackage;
1435
1436
1437    /**
1438******************************************************
1439*  Accessibility Property Change Event packages
1440******************************************************
1441*/
1442
1443    typedef struct PropertyCaretChangePackageTag {
1444        long vmID;
1445        JOBJECT64 Event;
1446        JOBJECT64 AccessibleContextSource;
1447        jint oldPosition;
1448        jint newPosition;
1449    } PropertyCaretChangePackage;
1450
1451    typedef struct PropertyDescriptionChangePackageTag {
1452        long vmID;
1453        JOBJECT64 Event;
1454        JOBJECT64 AccessibleContextSource;
1455        wchar_t oldDescription[SHORT_STRING_SIZE];
1456        wchar_t newDescription[SHORT_STRING_SIZE];
1457    } PropertyDescriptionChangePackage;
1458
1459    typedef struct PropertyNameChangePackageTag {
1460        long vmID;
1461        JOBJECT64 Event;
1462        JOBJECT64 AccessibleContextSource;
1463        wchar_t oldName[SHORT_STRING_SIZE];
1464        wchar_t newName[SHORT_STRING_SIZE];
1465    } PropertyNameChangePackage;
1466
1467    typedef struct PropertySelectionChangePackageTag {
1468        long vmID;
1469        JOBJECT64 Event;
1470        JOBJECT64 AccessibleContextSource;
1471    } PropertySelectionChangePackage;
1472
1473    typedef struct PropertyStateChangePackageTag {
1474        long vmID;
1475        JOBJECT64 Event;
1476        JOBJECT64 AccessibleContextSource;
1477        wchar_t oldState[SHORT_STRING_SIZE];
1478        wchar_t newState[SHORT_STRING_SIZE];
1479    } PropertyStateChangePackage;
1480
1481    typedef struct PropertyTextChangePackageTag {
1482        long vmID;
1483        JOBJECT64 Event;
1484        JOBJECT64 AccessibleContextSource;
1485    } PropertyTextChangePackage;
1486
1487    typedef struct PropertyValueChangePackageTag {
1488        long vmID;
1489        JOBJECT64 Event;
1490        JOBJECT64 AccessibleContextSource;
1491        wchar_t oldValue[SHORT_STRING_SIZE];
1492        wchar_t newValue[SHORT_STRING_SIZE];
1493    } PropertyValueChangePackage;
1494
1495    typedef struct PropertyVisibleDataChangePackageTag {
1496        long vmID;
1497        JOBJECT64 Event;
1498        JOBJECT64 AccessibleContextSource;
1499    } PropertyVisibleDataChangePackage;
1500
1501    typedef struct PropertyChildChangePackageTag {
1502        long vmID;
1503        JOBJECT64 Event;
1504        JOBJECT64 AccessibleContextSource;
1505        JOBJECT64 oldChildAccessibleContext;
1506        JOBJECT64 newChildAccessibleContext;
1507    } PropertyChildChangePackage;
1508
1509    typedef struct PropertyActiveDescendentChangePackageTag {
1510        long vmID;
1511        JOBJECT64 Event;
1512        JOBJECT64 AccessibleContextSource;
1513        JOBJECT64 oldActiveDescendentAccessibleContext;
1514        JOBJECT64 newActiveDescendentAccessibleContext;
1515    } PropertyActiveDescendentChangePackage;
1516
1517
1518    // String format for newValue is:
1519    //  "type" one of "INSERT", "UPDATE" or "DELETE"
1520    //  "firstRow"
1521    //  "lastRow"
1522    //  "firstColumn"
1523    //  "lastColumn"
1524    //
1525    // oldValue is currently unused
1526    //
1527    typedef struct PropertyTableModelChangePackageTag {
1528        long vmID;
1529        JOBJECT64 Event;
1530        JOBJECT64 AccessibleContextSource;
1531        wchar_t oldValue[SHORT_STRING_SIZE];
1532        wchar_t newValue[SHORT_STRING_SIZE];
1533    } PropertyTableModelChangePackage;
1534
1535
1536    /**
1537******************************************************
1538*  Property Change Event packages
1539******************************************************
1540*/
1541
1542    /*
1543      typedef struct PropertyChangePackageTag {
1544      long vmID;
1545      jobject Event;
1546      jobject AccessibleContextSource;
1547      char propertyName[SHORT_STRING_SIZE];
1548      char oldValue[SHORT_STRING_SIZE]; // PropertyChangeEvent().getOldValue().toString()
1549      char newValue[SHORT_STRING_SIZE]; // PropertyChangeEvent().getNewValue().toString()
1550      } PropertyChangePackage;
1551    */
1552
1553    /*
1554     * Java shutdown event package
1555     */
1556    typedef struct JavaShutdownPackageTag {
1557        long vmID;
1558    } JavaShutdownPackage;
1559
1560
1561    /**
1562******************************************************
1563*  Focus Event packages
1564******************************************************
1565*/
1566
1567    typedef struct FocusGainedPackageTag {
1568        long vmID;
1569        JOBJECT64 Event;
1570        JOBJECT64 AccessibleContextSource;
1571    } FocusGainedPackage;
1572
1573    typedef struct FocusLostPackageTag {
1574        long vmID;
1575        JOBJECT64 Event;
1576        JOBJECT64 AccessibleContextSource;
1577    } FocusLostPackage;
1578
1579
1580    /**
1581******************************************************
1582*  Caret Event packages
1583******************************************************
1584*/
1585
1586    typedef struct CaretUpdatePackageTag {
1587        long vmID;
1588        JOBJECT64 Event;
1589        JOBJECT64 AccessibleContextSource;
1590    } CaretUpdatePackage;
1591
1592
1593    /**
1594******************************************************
1595*  Mouse Event packages
1596******************************************************
1597*/
1598
1599    typedef struct MouseClickedPackageTag {
1600        long vmID;
1601        JOBJECT64 Event;
1602        JOBJECT64 AccessibleContextSource;
1603    } MouseClickedPackage;
1604
1605    typedef struct MouseEnteredPackageTag {
1606        long vmID;
1607        JOBJECT64 Event;
1608        JOBJECT64 AccessibleContextSource;
1609    } MouseEnteredPackage;
1610
1611    typedef struct MouseExitedPackageTag {
1612        long vmID;
1613        JOBJECT64 Event;
1614        JOBJECT64 AccessibleContextSource;
1615    } MouseExitedPackage;
1616
1617    typedef struct MousePressedPackageTag {
1618        long vmID;
1619        JOBJECT64 Event;
1620        JOBJECT64 AccessibleContextSource;
1621    } MousePressedPackage;
1622
1623    typedef struct MouseReleasedPackageTag {
1624        long vmID;
1625        JOBJECT64 Event;
1626        JOBJECT64 AccessibleContextSource;
1627    } MouseReleasedPackage;
1628
1629
1630    /**
1631******************************************************
1632*  Menu/PopupMenu Event packages
1633******************************************************
1634*/
1635
1636    typedef struct MenuCanceledPackageTag {
1637        long vmID;
1638        JOBJECT64 Event;
1639        JOBJECT64 AccessibleContextSource;
1640    } MenuCanceledPackage;
1641
1642    typedef struct MenuDeselectedPackageTag {
1643        long vmID;
1644        JOBJECT64 Event;
1645        JOBJECT64 AccessibleContextSource;
1646    } MenuDeselectedPackage;
1647
1648    typedef struct MenuSelectedPackageTag {
1649        long vmID;
1650        JOBJECT64 Event;
1651        JOBJECT64 AccessibleContextSource;
1652    } MenuSelectedPackage;
1653
1654
1655    typedef struct PopupMenuCanceledPackageTag {
1656        long vmID;
1657        JOBJECT64 Event;
1658        JOBJECT64 AccessibleContextSource;
1659    } PopupMenuCanceledPackage;
1660
1661    typedef struct PopupMenuWillBecomeInvisiblePackageTag {
1662        long vmID;
1663        JOBJECT64 Event;
1664        JOBJECT64 AccessibleContextSource;
1665    } PopupMenuWillBecomeInvisiblePackage;
1666
1667    typedef struct PopupMenuWillBecomeVisiblePackageTag {
1668        long vmID;
1669        JOBJECT64 Event;
1670        JOBJECT64 AccessibleContextSource;
1671    } PopupMenuWillBecomeVisiblePackage;
1672
1673    /**
1674******************************************************
1675*  Additional methods for Teton
1676******************************************************
1677*/
1678
1679    /**
1680     * Gets the AccessibleName for a component based upon the JAWS algorithm. Returns
1681     * whether successful.
1682     *
1683     * Bug ID 4916682 - Implement JAWS AccessibleName policy
1684     */
1685    typedef struct GetVirtualAccessibleNamePackageTag {
1686        long vmID;
1687        AccessibleContext accessibleContext;
1688        wchar_t rName[MAX_STRING_SIZE];
1689        int len;
1690    } GetVirtualAccessibleNamePackage;
1691
1692    /**
1693     * Request focus for a component. Returns whether successful;
1694     *
1695     * Bug ID 4944757 - requestFocus method needed
1696     */
1697    typedef struct RequestFocusPackageTag {
1698        long vmID;
1699        AccessibleContext accessibleContext;
1700    } RequestFocusPackage;
1701
1702    /**
1703     * Selects text between two indices.  Selection includes the text at the start index
1704     * and the text at the end index. Returns whether successful;
1705     *
1706     * Bug ID 4944758 - selectTextRange method needed
1707     */
1708    typedef struct SelectTextRangePackageTag {
1709        long vmID;
1710        AccessibleContext accessibleContext;
1711        jint startIndex;
1712        jint endIndex;
1713    } SelectTextRangePackage;
1714
1715    /**
1716     * Gets the number of contiguous characters with the same attributes.
1717     *
1718     * Bug ID 4944761 - getTextAttributes between two indices method needed
1719     */
1720    typedef struct GetTextAttributesInRangePackageTag {
1721        long vmID;
1722        AccessibleContext accessibleContext;
1723        jint startIndex;        // start index (inclusive)
1724        jint endIndex;          // end index (inclusive)
1725        AccessibleTextAttributesInfo attributes; // character attributes to match
1726        short rLength;          // number of contiguous characters with matching attributes
1727    } GetTextAttributesInRangePackage;
1728
1729#define MAX_VISIBLE_CHILDREN 256
1730
1731    // visible children information
1732    typedef struct VisibleChildenInfoTag {
1733        int returnedChildrenCount; // number of children returned
1734        AccessibleContext children[MAX_VISIBLE_CHILDREN]; // the visible children
1735    } VisibleChildrenInfo;
1736
1737    // struct for sending a message to get the number of visible children
1738    typedef struct GetVisibleChildrenCountPackageTag {
1739        long vmID;              // the virtual machine ID
1740        JOBJECT64 accessibleContext; // AccessibleContext of parent component
1741        jint rChildrenCount;    // visible children count return value
1742    } GetVisibleChildrenCountPackage;
1743
1744    // struct for sending a message to get the hypertext for an AccessibleContext
1745    // starting at a specified index in the document
1746    typedef struct GetVisibleChildrenPackageTag {
1747        long vmID;              // the virtual machine ID
1748        JOBJECT64 accessibleContext; // AccessibleContext of parent component
1749        jint startIndex;        // start index for retrieving children
1750        VisibleChildrenInfo rVisibleChildrenInfo; // returned info
1751        BOOL rSuccess;          // whether call succeeded
1752    } GetVisibleChildrenPackage;
1753
1754    /**
1755     * Set the caret to a text position. Returns whether successful;
1756     *
1757     * Bug ID 4944770 - setCaretPosition method needed
1758     */
1759    typedef struct SetCaretPositionPackageTag {
1760        long vmID;
1761        AccessibleContext accessibleContext;
1762        jint position;
1763    } SetCaretPositionPackage;
1764
1765
1766    /**
1767     ******************************************************
1768     *  Wrapping up all of the packages
1769     ******************************************************
1770     */
1771
1772    /**
1773     *  What is the type of this package
1774     */
1775    typedef enum PackageType {
1776
1777        cMemoryMappedFileCreatedPackage = 0x11000,
1778
1779        // many of these will go away...
1780        cJavaVMCreatedPackage = 0x10000,
1781        cJavaVMDestroyedPackage,
1782        cWindowsATCreatedPackage,
1783        cWindowsATDestroyedPackage,
1784        cJavaVMPresentNotificationPackage,
1785        cWindowsATPresentNotificationPackage,
1786
1787        cReleaseJavaObjectPackage = 1,
1788        cGetAccessBridgeVersionPackage = 2,
1789
1790        cGetAccessibleContextFromHWNDPackage = 0x10,
1791        cIsJavaWindowPackage,
1792        cGetHWNDFromAccessibleContextPackage,
1793
1794        cGetAccessibleContextAtPackage = 0x100,
1795        cGetAccessibleContextWithFocusPackage,
1796        cGetAccessibleContextInfoPackage,
1797        cGetAccessibleChildFromContextPackage,
1798        cGetAccessibleParentFromContextPackage,
1799        cIsSameObjectPackage,
1800
1801        cGetAccessibleTextInfoPackage = 0x200,
1802        cGetAccessibleTextItemsPackage,
1803        cGetAccessibleTextSelectionInfoPackage,
1804        cGetAccessibleTextAttributeInfoPackage,
1805        cGetAccessibleTextRectInfoPackage,
1806        cGetAccessibleTextLineBoundsPackage,
1807        cGetAccessibleTextRangePackage,
1808
1809        cGetCurrentAccessibleValueFromContextPackage = 0x300,
1810        cGetMaximumAccessibleValueFromContextPackage,
1811        cGetMinimumAccessibleValueFromContextPackage,
1812
1813        cAddAccessibleSelectionFromContextPackage = 0x400,
1814        cClearAccessibleSelectionFromContextPackage,
1815        cGetAccessibleSelectionFromContextPackage,
1816        cGetAccessibleSelectionCountFromContextPackage,
1817        cIsAccessibleChildSelectedFromContextPackage,
1818        cRemoveAccessibleSelectionFromContextPackage,
1819        cSelectAllAccessibleSelectionFromContextPackage,
1820
1821        cAddJavaEventNotificationPackage = 0x900,
1822        cRemoveJavaEventNotificationPackage,
1823        cAddAccessibilityEventNotificationPackage,
1824        cRemoveAccessibilityEventNotificationPackage,
1825
1826        cPropertyChangePackage = 0x1000,
1827
1828        cJavaShutdownPackage = 0x1010,
1829        cFocusGainedPackage,
1830        cFocusLostPackage,
1831
1832        cCaretUpdatePackage = 0x1020,
1833
1834        cMouseClickedPackage = 0x1030,
1835        cMouseEnteredPackage,
1836        cMouseExitedPackage,
1837        cMousePressedPackage,
1838        cMouseReleasedPackage,
1839
1840        cMenuCanceledPackage = 0x1040,
1841        cMenuDeselectedPackage,
1842        cMenuSelectedPackage,
1843        cPopupMenuCanceledPackage,
1844        cPopupMenuWillBecomeInvisiblePackage,
1845        cPopupMenuWillBecomeVisiblePackage,
1846
1847        cPropertyCaretChangePackage = 0x1100,
1848        cPropertyDescriptionChangePackage,
1849        cPropertyNameChangePackage,
1850        cPropertySelectionChangePackage,
1851        cPropertyStateChangePackage,
1852        cPropertyTextChangePackage,
1853        cPropertyValueChangePackage,
1854        cPropertyVisibleDataChangePackage,
1855        cPropertyChildChangePackage,
1856        cPropertyActiveDescendentChangePackage,
1857
1858
1859        // AccessibleTable
1860        cGetAccessibleTableInfoPackage = 0x1200,
1861        cGetAccessibleTableCellInfoPackage,
1862
1863        cGetAccessibleTableRowHeaderPackage,
1864        cGetAccessibleTableColumnHeaderPackage,
1865
1866        cGetAccessibleTableRowDescriptionPackage,
1867        cGetAccessibleTableColumnDescriptionPackage,
1868
1869        cGetAccessibleTableRowSelectionCountPackage,
1870        cIsAccessibleTableRowSelectedPackage,
1871        cGetAccessibleTableRowSelectionsPackage,
1872
1873        cGetAccessibleTableColumnSelectionCountPackage,
1874        cIsAccessibleTableColumnSelectedPackage,
1875        cGetAccessibleTableColumnSelectionsPackage,
1876
1877        cGetAccessibleTableRowPackage,
1878        cGetAccessibleTableColumnPackage,
1879        cGetAccessibleTableIndexPackage,
1880
1881        cPropertyTableModelChangePackage,
1882
1883
1884        // AccessibleRelationSet
1885        cGetAccessibleRelationSetPackage = 0x1300,
1886
1887        // AccessibleHypertext
1888        cGetAccessibleHypertextPackage = 0x1400,
1889        cActivateAccessibleHyperlinkPackage,
1890        cGetAccessibleHyperlinkCountPackage,
1891        cGetAccessibleHypertextExtPackage,
1892        cGetAccessibleHypertextLinkIndexPackage,
1893        cGetAccessibleHyperlinkPackage,
1894
1895        // Accessible KeyBinding, Icon and Action
1896        cGetAccessibleKeyBindingsPackage = 0x1500,
1897        cGetAccessibleIconsPackage,
1898        cGetAccessibleActionsPackage,
1899        cDoAccessibleActionsPackage,
1900
1901        // Utility methods
1902        cSetTextContentsPackage = 0x1600,
1903        cGetParentWithRolePackage,
1904        cGetTopLevelObjectPackage,
1905        cGetParentWithRoleElseRootPackage,
1906        cGetObjectDepthPackage,
1907        cGetActiveDescendentPackage,
1908
1909        // Additional methods for Teton
1910        cGetVirtualAccessibleNamePackage = 0x1700,
1911        cRequestFocusPackage,
1912        cSelectTextRangePackage,
1913        cGetTextAttributesInRangePackage,
1914        cGetSameTextAttributesInRangePackage,
1915        cGetVisibleChildrenCountPackage,
1916        cGetVisibleChildrenPackage,
1917        cSetCaretPositionPackage,
1918        cGetCaretLocationPackage
1919
1920
1921    } PackageType;
1922
1923
1924    /**
1925     *  Union of all package contents
1926     */
1927    typedef union AllPackagesTag {
1928
1929        // Initial Rendezvous packages
1930        MemoryMappedFileCreatedPackage memoryMappedFileCreatedPackage;
1931
1932        JavaVMCreatedPackage javaVMCreatedPackage;
1933        JavaVMDestroyedPackage javaVMDestroyedPackage;
1934        WindowsATCreatedPackage windowsATCreatedPackage;
1935        WindowsATDestroyedPackage windowsATDestroyedPackage;
1936        JavaVMPresentNotificationPackage javaVMPresentNotificationPackage;
1937        WindowsATPresentNotificationPackage windowsATPresentNotificationPackage;
1938
1939        // Core packages
1940        ReleaseJavaObjectPackage releaseJavaObject;
1941        GetAccessBridgeVersionPackage getAccessBridgeVersion;
1942
1943        // Window packages
1944        GetAccessibleContextFromHWNDPackage getAccessibleContextFromHWND;
1945        GetHWNDFromAccessibleContextPackage getHWNDFromAccessibleContext;
1946
1947        // AccessibleContext packages
1948        GetAccessibleContextAtPackage getAccessibleContextAt;
1949        GetAccessibleContextWithFocusPackage getAccessibleContextWithFocus;
1950        GetAccessibleContextInfoPackage getAccessibleContextInfo;
1951        GetAccessibleChildFromContextPackage getAccessibleChildFromContext;
1952        GetAccessibleParentFromContextPackage getAccessibleParentFromContext;
1953
1954        // AccessibleText packages
1955        GetAccessibleTextInfoPackage getAccessibleTextInfo;
1956        GetAccessibleTextItemsPackage getAccessibleTextItems;
1957        GetAccessibleTextSelectionInfoPackage getAccessibleTextSelectionInfo;
1958        GetAccessibleTextAttributeInfoPackage getAccessibleTextAttributeInfo;
1959        GetAccessibleTextRectInfoPackage getAccessibleTextRectInfo;
1960        GetAccessibleTextLineBoundsPackage getAccessibleTextLineBounds;
1961        GetAccessibleTextRangePackage getAccessibleTextRange;
1962
1963        // AccessibleValue packages
1964        GetCurrentAccessibleValueFromContextPackage getCurrentAccessibleValueFromContext;
1965        GetMaximumAccessibleValueFromContextPackage getMaximumAccessibleValueFromContext;
1966        GetMinimumAccessibleValueFromContextPackage getMinimumAccessibleValueFromContext;
1967
1968        // AccessibleSelection packages
1969        AddAccessibleSelectionFromContextPackage addAccessibleSelectionFromContext;
1970        ClearAccessibleSelectionFromContextPackage clearAccessibleSelectionFromContext;
1971        GetAccessibleSelectionFromContextPackage getAccessibleSelectionFromContext;
1972        GetAccessibleSelectionCountFromContextPackage getAccessibleSelectionCountFromContext;
1973        IsAccessibleChildSelectedFromContextPackage isAccessibleChildSelectedFromContext;
1974        RemoveAccessibleSelectionFromContextPackage removeAccessibleSelectionFromContext;
1975        SelectAllAccessibleSelectionFromContextPackage selectAllAccessibleSelectionFromContext;
1976
1977        // Event Notification Registration packages
1978        AddJavaEventNotificationPackage addJavaEventNotification;
1979        RemoveJavaEventNotificationPackage removeJavaEventNotification;
1980        AddAccessibilityEventNotificationPackage addAccessibilityEventNotification;
1981        RemoveAccessibilityEventNotificationPackage removeAccessibilityEventNotification;
1982
1983        // Event contents packages
1984        //      PropertyChangePackage propertyChange;
1985        PropertyCaretChangePackage propertyCaretChangePackage;
1986        PropertyDescriptionChangePackage propertyDescriptionChangePackage;
1987        PropertyNameChangePackage propertyNameChangePackage;
1988        PropertySelectionChangePackage propertySelectionChangePackage;
1989        PropertyStateChangePackage propertyStateChangePackage;
1990        PropertyTextChangePackage propertyTextChangePackage;
1991        PropertyValueChangePackage propertyValueChangePackage;
1992        PropertyVisibleDataChangePackage propertyVisibleDataChangePackage;
1993        PropertyChildChangePackage propertyChildChangePackage;
1994        PropertyActiveDescendentChangePackage propertyActiveDescendentChangePackage;
1995
1996        PropertyTableModelChangePackage propertyTableModelChangePackage;
1997
1998        JavaShutdownPackage JavaShutdown;
1999        FocusGainedPackage focusGained;
2000        FocusLostPackage focusLost;
2001
2002        CaretUpdatePackage caretUpdate;
2003
2004        MouseClickedPackage mouseClicked;
2005        MouseEnteredPackage mouseEntered;
2006        MouseExitedPackage mouseExited;
2007        MousePressedPackage mousePressed;
2008        MouseReleasedPackage mouseReleased;
2009
2010        MenuCanceledPackage menuCanceled;
2011        MenuDeselectedPackage menuDeselected;
2012        MenuSelectedPackage menuSelected;
2013        PopupMenuCanceledPackage popupMenuCanceled;
2014        PopupMenuWillBecomeInvisiblePackage popupMenuWillBecomeInvisible;
2015        PopupMenuWillBecomeVisiblePackage popupMenuWillBecomeVisible;
2016
2017        // AccessibleRelationSet
2018        GetAccessibleRelationSetPackage getAccessibleRelationSet;
2019
2020        // AccessibleHypertext
2021        GetAccessibleHypertextPackage _getAccessibleHypertext;
2022        ActivateAccessibleHyperlinkPackage _activateAccessibleHyperlink;
2023        GetAccessibleHyperlinkCountPackage _getAccessibleHyperlinkCount;
2024        GetAccessibleHypertextExtPackage _getAccessibleHypertextExt;
2025        GetAccessibleHypertextLinkIndexPackage _getAccessibleHypertextLinkIndex;
2026        GetAccessibleHyperlinkPackage _getAccessibleHyperlink;
2027
2028        // Accessible KeyBinding, Icon and Action
2029        GetAccessibleKeyBindingsPackage getAccessibleKeyBindings;
2030        GetAccessibleIconsPackage getAccessibleIcons;
2031        GetAccessibleActionsPackage getAccessibleActions;
2032        DoAccessibleActionsPackage doAccessibleActions;
2033
2034        // utility methods
2035        SetTextContentsPackage _setTextContents;
2036        GetParentWithRolePackage _getParentWithRole;
2037        GetTopLevelObjectPackage _getTopLevelObject;
2038        GetParentWithRoleElseRootPackage _getParentWithRoleElseRoot;
2039        GetObjectDepthPackage _getObjectDepth;
2040        GetActiveDescendentPackage _getActiveDescendent;
2041
2042        // Additional methods for Teton
2043        GetVirtualAccessibleNamePackage _getVirtualAccessibleName;
2044        RequestFocusPackage _requestFocus;
2045        SelectTextRangePackage _selectTextRange;
2046        GetTextAttributesInRangePackage _getTextAttributesInRange;
2047        GetVisibleChildrenCountPackage _getVisibleChildrenCount;
2048        GetVisibleChildrenPackage _getVisibleChildren;
2049        SetCaretPositionPackage _setCaretPosition;
2050
2051    } AllPackages;
2052
2053
2054    /**
2055     *  Union of all Java-initiated package contents
2056     */
2057    typedef union JavaInitiatedPackagesTag {
2058
2059        // Initial Rendezvous packages
2060        JavaVMCreatedPackage javaVMCreatedPackage;
2061        JavaVMDestroyedPackage javaVMDestroyedPackage;
2062        JavaVMPresentNotificationPackage javaVMPresentNotificationPackage;
2063
2064        // Event contents packages
2065        PropertyCaretChangePackage propertyCaretChangePackage;
2066        PropertyDescriptionChangePackage propertyDescriptionChangePackage;
2067        PropertyNameChangePackage propertyNameChangePackage;
2068        PropertySelectionChangePackage propertySelectionChangePackage;
2069        PropertyStateChangePackage propertyStateChangePackage;
2070        PropertyTextChangePackage propertyTextChangePackage;
2071        PropertyValueChangePackage propertyValueChangePackage;
2072        PropertyVisibleDataChangePackage propertyVisibleDataChangePackage;
2073        PropertyChildChangePackage propertyChildChangePackage;
2074        PropertyActiveDescendentChangePackage propertyActiveDescendentChangePackage;
2075
2076        PropertyTableModelChangePackage propertyTableModelChangePackage;
2077
2078        JavaShutdownPackage JavaShutdown;
2079        FocusGainedPackage focusGained;
2080        FocusLostPackage focusLost;
2081
2082        CaretUpdatePackage caretUpdate;
2083
2084        MouseClickedPackage mouseClicked;
2085        MouseEnteredPackage mouseEntered;
2086        MouseExitedPackage mouseExited;
2087        MousePressedPackage mousePressed;
2088        MouseReleasedPackage mouseReleased;
2089
2090        MenuCanceledPackage menuCanceled;
2091        MenuDeselectedPackage menuDeselected;
2092        MenuSelectedPackage menuSelected;
2093        PopupMenuCanceledPackage popupMenuCanceled;
2094        PopupMenuWillBecomeInvisiblePackage popupMenuWillBecomeInvisible;
2095        PopupMenuWillBecomeVisiblePackage popupMenuWillBecomeVisible;
2096
2097    } JavaInitiatedPackages;
2098
2099
2100    /**
2101     *  Union of all Windows-initiated package contents
2102     */
2103    typedef union WindowsInitiatedPackagesTag {
2104
2105        // Initial Rendezvous packages
2106        MemoryMappedFileCreatedPackage memoryMappedFileCreatedPackage;
2107
2108        WindowsATCreatedPackage windowsATCreatedPackage;
2109        WindowsATDestroyedPackage windowsATDestroyedPackage;
2110        WindowsATPresentNotificationPackage windowsATPresentNotificationPackage;
2111
2112        // Core packages
2113        ReleaseJavaObjectPackage releaseJavaObject;
2114        GetAccessBridgeVersionPackage getAccessBridgeVersion;
2115
2116        // Window packages
2117        GetAccessibleContextFromHWNDPackage getAccessibleContextFromHWND;
2118        GetHWNDFromAccessibleContextPackage getHWNDFromAccessibleContext;
2119
2120        // AccessibleContext packages
2121        GetAccessibleContextAtPackage getAccessibleContextAt;
2122        GetAccessibleContextWithFocusPackage getAccessibleContextWithFocus;
2123        GetAccessibleContextInfoPackage getAccessibleContextInfo;
2124        GetAccessibleChildFromContextPackage getAccessibleChildFromContext;
2125        GetAccessibleParentFromContextPackage getAccessibleParentFromContext;
2126
2127        // AccessibleText packages
2128        GetAccessibleTextInfoPackage getAccessibleTextInfo;
2129        GetAccessibleTextItemsPackage getAccessibleTextItems;
2130        GetAccessibleTextSelectionInfoPackage getAccessibleTextSelectionInfo;
2131        GetAccessibleTextAttributeInfoPackage getAccessibleTextAttributeInfo;
2132        GetAccessibleTextRectInfoPackage getAccessibleTextRectInfo;
2133        GetAccessibleTextLineBoundsPackage getAccessibleTextLineBounds;
2134        GetAccessibleTextRangePackage getAccessibleTextRange;
2135
2136        // AccessibleValue packages
2137        GetCurrentAccessibleValueFromContextPackage getCurrentAccessibleValueFromContext;
2138        GetMaximumAccessibleValueFromContextPackage getMaximumAccessibleValueFromContext;
2139        GetMinimumAccessibleValueFromContextPackage getMinimumAccessibleValueFromContext;
2140
2141        // AccessibleSelection packages
2142        AddAccessibleSelectionFromContextPackage addAccessibleSelectionFromContext;
2143        ClearAccessibleSelectionFromContextPackage clearAccessibleSelectionFromContext;
2144        GetAccessibleSelectionFromContextPackage getAccessibleSelectionFromContext;
2145        GetAccessibleSelectionCountFromContextPackage getAccessibleSelectionCountFromContext;
2146        IsAccessibleChildSelectedFromContextPackage isAccessibleChildSelectedFromContext;
2147        RemoveAccessibleSelectionFromContextPackage removeAccessibleSelectionFromContext;
2148        SelectAllAccessibleSelectionFromContextPackage selectAllAccessibleSelectionFromContext;
2149
2150        // Event Notification Registration packages
2151        AddJavaEventNotificationPackage addJavaEventNotification;
2152        RemoveJavaEventNotificationPackage removeJavaEventNotification;
2153        AddAccessibilityEventNotificationPackage addAccessibilityEventNotification;
2154        RemoveAccessibilityEventNotificationPackage removeAccessibilityEventNotification;
2155
2156        // AccessibleTable
2157        GetAccessibleTableInfoPackage _getAccessibleTableInfo;
2158        GetAccessibleTableCellInfoPackage _getAccessibleTableCellInfo;
2159
2160        GetAccessibleTableRowHeaderPackage _getAccessibleTableRowHeader;
2161        GetAccessibleTableColumnHeaderPackage _getAccessibleTableColumnHeader;
2162
2163        GetAccessibleTableRowDescriptionPackage _getAccessibleTableRowDescription;
2164        GetAccessibleTableColumnDescriptionPackage _getAccessibleTableColumnDescription;
2165
2166        GetAccessibleTableRowSelectionCountPackage _getAccessibleTableRowSelectionCount;
2167        IsAccessibleTableRowSelectedPackage _isAccessibleTableRowSelected;
2168        GetAccessibleTableRowSelectionsPackage _getAccessibleTableRowSelections;
2169
2170        GetAccessibleTableColumnSelectionCountPackage _getAccessibleTableColumnSelectionCount;
2171        IsAccessibleTableColumnSelectedPackage _isAccessibleTableColumnSelected;
2172        GetAccessibleTableColumnSelectionsPackage _getAccessibleTableColumnSelections;
2173
2174        GetAccessibleTableRowPackage _getAccessibleTableRow;
2175        GetAccessibleTableColumnPackage _getAccessibleTableColumn;
2176        GetAccessibleTableIndexPackage _getAccessibleTableIndex;
2177
2178        // AccessibleRelationSet
2179        GetAccessibleRelationSetPackage _getAccessibleRelationSet;
2180
2181        // Accessible KeyBindings, Icons and Actions
2182        GetAccessibleKeyBindingsPackage _getAccessibleKeyBindings;
2183        GetAccessibleIconsPackage _getAccessibleIcons;
2184        GetAccessibleActionsPackage _getAccessibleActions;
2185        DoAccessibleActionsPackage _doAccessibleActions;
2186
2187
2188        IsSameObjectPackage _isSameObject;
2189
2190        // utility methods
2191        SetTextContentsPackage _setTextContents;
2192        GetParentWithRolePackage _getParentWithRole;
2193        GetTopLevelObjectPackage _getTopLevelObject;
2194        GetParentWithRoleElseRootPackage _getParentWithRoleElseRoot;
2195        GetObjectDepthPackage _getObjectDepth;
2196        GetActiveDescendentPackage _getActiveDescendent;
2197
2198        // Additional methods for Teton
2199        GetVirtualAccessibleNamePackage _getVirtualAccessibleName;
2200        RequestFocusPackage _requestFocus;
2201        SelectTextRangePackage _selectTextRange;
2202        GetTextAttributesInRangePackage _getTextAttributesInRange;
2203        GetVisibleChildrenCountPackage _getVisibleChildrenCount;
2204        GetVisibleChildrenPackage _getVisibleChildren;
2205        SetCaretPositionPackage _setCaretPosition;
2206
2207
2208    } WindowsInitiatedPackages;
2209
2210
2211#ifdef __cplusplus
2212}
2213#endif
2214
2215#endif
2216