1 /*
   2  * Copyright (c) 2005, 2014, 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
  38 extern "C" {
  39 #endif
  40 
  41 #ifdef ACCESSBRIDGE_ARCH_LEGACY
  42 typedef jobject JOBJECT64;
  43 typedef HWND ABHWND64;
  44 #define ABHandleToLong
  45 #define ABLongToHandle
  46 #else
  47 typedef jlong JOBJECT64;
  48 typedef 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