Path: blob/master/src/jdk.accessibility/windows/native/libwindowsaccessbridge/AccessBridgeWindowsEntryPoints.cpp
40957 views
/*1* Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation. Oracle designates this7* particular file as subject to the "Classpath" exception as provided8* by Oracle in the LICENSE file that accompanied this code.9*10* This code is distributed in the hope that it will be useful, but WITHOUT11* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or12* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License13* version 2 for more details (a copy is included in the LICENSE file that14* accompanied this code).15*16* You should have received a copy of the GNU General Public License version17* 2 along with this work; if not, write to the Free Software Foundation,18* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.19*20* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA21* or visit www.oracle.com if you need additional information or have any22* questions.23*/2425/*26* Glue routines called by Windows AT into the WindowsAccessBridge dll27*/2829#include "AccessBridgeDebug.h"30#include "AccessBridgeWindowsEntryPoints.h"31#include "WinAccessBridge.h"32#include "accessBridgeResource.h"3334#include <windows.h>35#include <jni.h>363738extern WinAccessBridge *theWindowsAccessBridge;39extern HWND theDialogWindow;4041#ifdef __cplusplus42extern "C" {43#endif4445/**46* Windows_run - where Windows executables will load/unload us47*48*/49void Windows_run() {50// open our window51if (theWindowsAccessBridge != (WinAccessBridge *) 0) {52theWindowsAccessBridge->initWindow();53}54}5556/*57/**58* Windows_shutdown - where Windows executables will load/unload us59*60*61void Windows_shutdown() {62if (theWindowsAccessBridge != (WinAccessBridge *) 0) {63theWindowsAccessBridge->initWindow();64}65}66*/6768/**69* getTopLevelHWND - returns the top-level window parent of the descendent70*71*/72HWND getTopLevelHWND(HWND descendent) {73HWND hwnd;74if (descendent == NULL) {75return NULL;76}7778if (!IsWindow(descendent)) {79return NULL;80}8182hwnd = descendent;83for(;;) {84LONG style = GetWindowLong(hwnd, GWL_STYLE);85if ( (style & WS_CHILD) == 0 ) {86// found a non-child window so terminate87break;88}89hwnd = GetParent(hwnd);90}9192return hwnd;93}9495void releaseJavaObject(long vmID, JOBJECT64 object) {96if (theWindowsAccessBridge != 0) {97theWindowsAccessBridge->releaseJavaObject(vmID, object);98}99}100101void getVersionInfo(long vmID, AccessBridgeVersionInfo *info) {102if (theWindowsAccessBridge != 0) {103theWindowsAccessBridge->getVersionInfo(vmID, info);104}105}106107108BOOL isJavaWindow(HWND window) {109if (theWindowsAccessBridge != 0) {110return theWindowsAccessBridge->isJavaWindow(window);111}112return FALSE;113}114115/*116* Returns whether two object references refer to the same object117*/118BOOL isSameObject(long vmID, JOBJECT64 obj1, JOBJECT64 obj2) {119#ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)120PrintDebugString("\r\nAccessBridgeWindowsEntryPoints::isSameObject(%p %p)", obj1, obj2);121#else // JOBJECT64 is jlong (64 bit)122PrintDebugString("\r\nAccessBridgeWindowsEntryPoints::isSameObject(%016I64X %016I64X)", obj1, obj2);123#endif124if (theWindowsAccessBridge != 0) {125return theWindowsAccessBridge->isSameObject(vmID, obj1, obj2);126}127return FALSE;128}129130/**131* Sets a text field to the specified string. Returns whether successful132*/133BOOL setTextContents (const long vmID, const AccessibleContext accessibleContext,const wchar_t *text) {134135if (theWindowsAccessBridge != 0) {136return theWindowsAccessBridge->setTextContents(vmID, accessibleContext, text);137}138return FALSE;139}140141/**142* Returns the Accessible Context of an object of the specified role that is the143* ancestor of a given object. If the object is of the specified role144* or an ancestor object of the specified role was found, returns the object's145* AccessibleContext.146* If there is no ancestor object of the specified role,147* returns (AccessibleContext)0.148*/149AccessibleContext getParentWithRole (const long vmID, const AccessibleContext accessibleContext, const wchar_t *role) {150151if (theWindowsAccessBridge != 0) {152return theWindowsAccessBridge->getParentWithRole(vmID, accessibleContext, role);153}154return (AccessibleContext)0;155}156157158/**159* Returns the Accessible Context for the top level object in160* a Java Window. This is same Accessible Context that is obtained161* from GetAccessibleContextFromHWND for that window. Returns162* (AccessibleContext)0 on error.163*/164AccessibleContext getTopLevelObject (const long vmID, const AccessibleContext accessibleContext) {165166if (theWindowsAccessBridge != 0) {167return theWindowsAccessBridge->getTopLevelObject(vmID, accessibleContext);168}169return (AccessibleContext)0;170}171172/**173* If there is an Ancestor object of the specified role,174* returns the Accessible Context of the found object.175* Otherwise, returns the top level object for that176* Java Window. Returns (AccessibleContext)0 on error.177*/178AccessibleContext getParentWithRoleElseRoot (const long vmID, const AccessibleContext accessibleContext, const wchar_t *role) {179180if (theWindowsAccessBridge != 0) {181return theWindowsAccessBridge->getParentWithRoleElseRoot(vmID, accessibleContext, role);182}183return (AccessibleContext)0;184}185186/**187* Returns how deep in the object hierarchy a given object is.188* The top most object in the object hierarchy has an object depth of 0.189* Returns -1 on error.190*/191int getObjectDepth (const long vmID, const AccessibleContext accessibleContext) {192193if (theWindowsAccessBridge != 0) {194return theWindowsAccessBridge->getObjectDepth(vmID, accessibleContext);195}196return -1;197}198199/**200* Returns the Accessible Context of the currently ActiveDescendent of an object.201* Returns (AccessibleContext)0 on error.202*/203AccessibleContext getActiveDescendent (const long vmID, const AccessibleContext accessibleContext) {204205if (theWindowsAccessBridge != 0) {206return theWindowsAccessBridge->getActiveDescendent(vmID, accessibleContext);207}208return (AccessibleContext)0;209}210211// -------- Accessible Context methods -------------212213BOOL getAccessibleContextFromHWND(HWND window, long *vmID, JOBJECT64 *AccessibleContext) {214if (theWindowsAccessBridge != 0) {215return theWindowsAccessBridge->getAccessibleContextFromHWND(window, vmID, AccessibleContext);216}217return FALSE;218}219220HWND getHWNDFromAccessibleContext(long vmID, JOBJECT64 accessibleContext) {221if (theWindowsAccessBridge != 0) {222return theWindowsAccessBridge->getHWNDFromAccessibleContext(vmID, accessibleContext);223}224return (HWND)0;225}226227BOOL getAccessibleContextAt(long vmID, JOBJECT64 AccessibleContextParent,228jint x, jint y, JOBJECT64 *AccessibleContext) {229if (theWindowsAccessBridge != 0) {230return theWindowsAccessBridge->getAccessibleContextAt(vmID, AccessibleContextParent,231x, y, AccessibleContext);232}233return FALSE;234}235236BOOL getAccessibleContextWithFocus(HWND window, long *vmID, JOBJECT64 *AccessibleContext) {237if (theWindowsAccessBridge != 0) {238return theWindowsAccessBridge->getAccessibleContextWithFocus(window, vmID, AccessibleContext);239}240return FALSE;241}242243BOOL getAccessibleContextInfo(long vmID,244JOBJECT64 AccessibleContext,245AccessibleContextInfo *info) {246if (theWindowsAccessBridge != 0) {247return theWindowsAccessBridge->getAccessibleContextInfo(248vmID,249AccessibleContext,250info);251}252return FALSE;253}254255JOBJECT64 getAccessibleChildFromContext(long vmID,256JOBJECT64 AccessibleContext,257jint childIndex) {258if (theWindowsAccessBridge != 0) {259return theWindowsAccessBridge->getAccessibleChildFromContext(260vmID,261AccessibleContext,262childIndex);263}264return (JOBJECT64) 0;265}266267JOBJECT64 getAccessibleParentFromContext(long vmID,268JOBJECT64 AccessibleContext) {269if (theWindowsAccessBridge != 0) {270return theWindowsAccessBridge->getAccessibleParentFromContext(271vmID,272AccessibleContext);273}274return (JOBJECT64) 0;275}276277// -------- begin AccessibleTable routines -------------278279BOOL getAccessibleTableInfo(long vmID, JOBJECT64 ac,280AccessibleTableInfo *tableInfo) {281if (theWindowsAccessBridge != 0) {282return theWindowsAccessBridge->getAccessibleTableInfo(283vmID,284ac,285tableInfo);286}287return FALSE;288}289290BOOL getAccessibleTableCellInfo(long vmID, JOBJECT64 accessibleTable,291jint row, jint column, AccessibleTableCellInfo *tableCellInfo) {292293if (theWindowsAccessBridge != 0) {294return theWindowsAccessBridge->getAccessibleTableCellInfo(295vmID,296accessibleTable,297row, column, tableCellInfo);298}299return FALSE;300}301302BOOL getAccessibleTableRowHeader(long vmID, JOBJECT64 acParent, AccessibleTableInfo *tableInfo) {303304if (theWindowsAccessBridge != 0) {305return theWindowsAccessBridge->getAccessibleTableRowHeader(306vmID,307acParent,308tableInfo);309}310return FALSE;311}312313BOOL getAccessibleTableColumnHeader(long vmID, JOBJECT64 acParent, AccessibleTableInfo *tableInfo) {314315if (theWindowsAccessBridge != 0) {316return theWindowsAccessBridge->getAccessibleTableColumnHeader(317vmID,318acParent,319tableInfo);320}321return FALSE;322}323324JOBJECT64 getAccessibleTableRowDescription(long vmID, JOBJECT64 acParent, jint row) {325326if (theWindowsAccessBridge != 0) {327return (JOBJECT64)theWindowsAccessBridge->getAccessibleTableRowDescription(328vmID,329acParent,330row);331}332return (JOBJECT64)0;333}334335JOBJECT64 getAccessibleTableColumnDescription(long vmID, JOBJECT64 acParent, jint column) {336337if (theWindowsAccessBridge != 0) {338return (JOBJECT64)theWindowsAccessBridge->getAccessibleTableColumnDescription(339vmID,340acParent,341column);342}343return (JOBJECT64)0;344}345346jint getAccessibleTableRowSelectionCount(long vmID, JOBJECT64 accessibleTable) {347if (theWindowsAccessBridge != 0) {348return theWindowsAccessBridge->getAccessibleTableRowSelectionCount(vmID, accessibleTable);349}350return -1;351}352353BOOL isAccessibleTableRowSelected(long vmID, JOBJECT64 accessibleTable, jint row) {354if (theWindowsAccessBridge != 0 ) {355return theWindowsAccessBridge->isAccessibleTableRowSelected(vmID, accessibleTable, row);356}357return FALSE;358}359360BOOL getAccessibleTableRowSelections(long vmID, JOBJECT64 accessibleTable, jint count, jint *selections) {361if (theWindowsAccessBridge != 0 ) {362return theWindowsAccessBridge->getAccessibleTableRowSelections(vmID, accessibleTable, count,363selections);364}365return FALSE;366}367368369jint getAccessibleTableColumnSelectionCount(long vmID, JOBJECT64 accessibleTable) {370if (theWindowsAccessBridge != 0 ) {371return theWindowsAccessBridge->getAccessibleTableColumnSelectionCount(vmID, accessibleTable);372}373return -1;374}375376BOOL isAccessibleTableColumnSelected(long vmID, JOBJECT64 accessibleTable, jint column) {377if (theWindowsAccessBridge != 0 ) {378return theWindowsAccessBridge->isAccessibleTableColumnSelected(vmID, accessibleTable, column);379}380return FALSE;381}382383BOOL getAccessibleTableColumnSelections(long vmID, JOBJECT64 accessibleTable, jint count, jint *selections) {384if (theWindowsAccessBridge != 0 ) {385return theWindowsAccessBridge->getAccessibleTableColumnSelections(vmID, accessibleTable, count,386selections);387}388return FALSE;389}390391jint getAccessibleTableRow(long vmID, JOBJECT64 accessibleTable, jint index) {392if (theWindowsAccessBridge != 0 ) {393return theWindowsAccessBridge->getAccessibleTableRow(vmID, accessibleTable, index);394}395return -1;396}397398jint getAccessibleTableColumn(long vmID, JOBJECT64 accessibleTable, jint index) {399if (theWindowsAccessBridge != 0 ) {400return theWindowsAccessBridge->getAccessibleTableColumn(vmID, accessibleTable, index);401}402return -1;403}404405jint getAccessibleTableIndex(long vmID, JOBJECT64 accessibleTable, jint row, jint column) {406if (theWindowsAccessBridge != 0 ) {407return theWindowsAccessBridge->getAccessibleTableIndex(vmID, accessibleTable, row, column);408}409return -1;410}411412/* --------- end AccessibleTable routines ------- */413414// --------- AccessibleRelationSet methods415416BOOL getAccessibleRelationSet(long vmID, JOBJECT64 accessibleContext,417AccessibleRelationSetInfo *relationSetInfo) {418if (theWindowsAccessBridge != 0) {419return theWindowsAccessBridge->getAccessibleRelationSet(vmID, accessibleContext, relationSetInfo);420}421return FALSE;422}423424// --------- AccessibleHypertext methods425426BOOL getAccessibleHypertext(long vmID, JOBJECT64 accessibleContext,427AccessibleHypertextInfo *accessibleHypertextInfo) {428if (theWindowsAccessBridge != 0) {429return theWindowsAccessBridge->getAccessibleHypertext(vmID, accessibleContext,430accessibleHypertextInfo);431}432return FALSE;433}434435BOOL activateAccessibleHyperlink(long vmID, JOBJECT64 accessibleContext, JOBJECT64 accessibleHyperlink) {436if (theWindowsAccessBridge != 0) {437return theWindowsAccessBridge->activateAccessibleHyperlink(vmID, accessibleContext,438accessibleHyperlink);439}440return FALSE;441}442443jint getAccessibleHyperlinkCount(const long vmID,444const AccessibleContext accessibleContext) {445446if (theWindowsAccessBridge != 0) {447return theWindowsAccessBridge->getAccessibleHyperlinkCount(vmID, accessibleContext);448}449return -1;450}451452453BOOL getAccessibleHypertextExt(const long vmID,454const AccessibleContext accessibleContext,455const jint nStartIndex,456/* OUT */ AccessibleHypertextInfo *hypertextInfo) {457458if (theWindowsAccessBridge != 0) {459return theWindowsAccessBridge->getAccessibleHypertextExt(vmID,460accessibleContext,461nStartIndex,462hypertextInfo);463}464return FALSE;465}466467468jint getAccessibleHypertextLinkIndex(const long vmID,469const AccessibleHypertext hypertext,470const jint nIndex) {471472if (theWindowsAccessBridge != 0) {473return theWindowsAccessBridge->getAccessibleHypertextLinkIndex(vmID,474hypertext,475nIndex);476}477return -1;478}479480481BOOL getAccessibleHyperlink(const long vmID,482const AccessibleHypertext hypertext,483const jint nIndex,484/* OUT */ AccessibleHyperlinkInfo *hyperlinkInfo) {485486if (theWindowsAccessBridge != 0) {487return theWindowsAccessBridge->getAccessibleHyperlink(vmID,488hypertext,489nIndex,490hyperlinkInfo);491}492return FALSE;493}494495496/* Accessible KeyBindings, Icons and Actions */497BOOL getAccessibleKeyBindings(long vmID, JOBJECT64 accessibleContext, AccessibleKeyBindings *keyBindings) {498499if (theWindowsAccessBridge != 0) {500return theWindowsAccessBridge->getAccessibleKeyBindings(vmID, accessibleContext, keyBindings);501}502return FALSE;503}504505BOOL getAccessibleIcons(long vmID, JOBJECT64 accessibleContext, AccessibleIcons *icons) {506507if (theWindowsAccessBridge != 0) {508return theWindowsAccessBridge->getAccessibleIcons(vmID, accessibleContext, icons);509}510return FALSE;511}512513BOOL getAccessibleActions(long vmID, JOBJECT64 accessibleContext, AccessibleActions *actions) {514515if (theWindowsAccessBridge != 0) {516return theWindowsAccessBridge->getAccessibleActions(vmID, accessibleContext, actions);517}518return FALSE;519}520521BOOL doAccessibleActions(long vmID, JOBJECT64 accessibleContext, AccessibleActionsToDo *actionsToDo,522jint *failure) {523524if (theWindowsAccessBridge != 0) {525return theWindowsAccessBridge->doAccessibleActions(vmID, accessibleContext, actionsToDo,526failure);527}528return FALSE;529}530531/**532* Additional methods for Teton533*/534535/**536* Gets the AccessibleName for a component based upon the JAWS algorithm. Returns537* whether successful.538*539* Bug ID 4916682 - Implement JAWS AccessibleName policy540*/541BOOL getVirtualAccessibleName(long vmID, AccessibleContext accessibleContext, wchar_t *name, int len) {542if (theWindowsAccessBridge != 0) {543return theWindowsAccessBridge->getVirtualAccessibleName(vmID, accessibleContext, name, len);544}545return FALSE;546}547548/**549* Request focus for a component. Returns whether successful;550*551* Bug ID 4944757 - requestFocus method needed552*/553BOOL requestFocus(long vmID, AccessibleContext accessibleContext) {554if (theWindowsAccessBridge != 0) {555return theWindowsAccessBridge->requestFocus(vmID, accessibleContext);556}557return FALSE;558}559560/**561* Selects text between two indices. Selection includes the text at the start index562* and the text at the end index. Returns whether successful;563*564* Bug ID 4944758 - selectTextRange method needed565*/566BOOL selectTextRange(long vmID, AccessibleContext accessibleContext, int startIndex, int endIndex) {567if (theWindowsAccessBridge != 0) {568return theWindowsAccessBridge->selectTextRange(vmID, accessibleContext, startIndex, endIndex);569}570return FALSE;571}572573/**574* Get text attributes between two indices. The attribute list includes the text at the575* start index and the text at the end index. Returns whether successful;576*577* Bug ID 4944761 - getTextAttributes between two indices method needed578*/579BOOL getTextAttributesInRange(long vmID, AccessibleContext accessibleContext, int startIndex, int endIndex,580AccessibleTextAttributesInfo *attributes, short *len) {581if (theWindowsAccessBridge != 0) {582return theWindowsAccessBridge->getTextAttributesInRange(vmID, accessibleContext,583startIndex, endIndex, attributes, len);584}585return FALSE;586}587588/**589* Gets the number of visible children of a component. Returns -1 on error.590*591* Bug ID 4944762- getVisibleChildren for list-like components needed592*/593int getVisibleChildrenCount(long vmID, AccessibleContext accessibleContext) {594if (theWindowsAccessBridge != 0) {595return theWindowsAccessBridge->getVisibleChildrenCount(vmID, accessibleContext);596}597return FALSE;598}599600/**601* Gets the visible children of an AccessibleContext. Returns whether successful;602*603* Bug ID 4944762- getVisibleChildren for list-like components needed604*/605BOOL getVisibleChildren(long vmID, AccessibleContext accessibleContext, int startIndex,606VisibleChildrenInfo *visibleChildrenInfo) {607if (theWindowsAccessBridge != 0) {608return theWindowsAccessBridge->getVisibleChildren(vmID, accessibleContext, startIndex,609visibleChildrenInfo);610}611return FALSE;612}613614/**615* Set the caret to a text position. Returns whether successful;616*617* Bug ID 4944770 - setCaretPosition method needed618*/619BOOL setCaretPosition(const long vmID, const AccessibleContext accessibleContext,620const int position) {621if (theWindowsAccessBridge != 0) {622return theWindowsAccessBridge->setCaretPosition(vmID, accessibleContext, position);623}624return FALSE;625}626627// -------- Accessible Text methods -------------628629BOOL getAccessibleTextInfo(long vmID, JOBJECT64 AccessibleContext,630AccessibleTextInfo *textInfo, jint x, jint y) {631if (theWindowsAccessBridge != 0) {632return theWindowsAccessBridge->getAccessibleTextInfo(633vmID,634AccessibleContext,635textInfo, x, y);636}637return FALSE;638}639640BOOL getAccessibleTextItems(long vmID, JOBJECT64 AccessibleContext,641AccessibleTextItemsInfo *textItems, jint index) {642if (theWindowsAccessBridge != 0) {643return theWindowsAccessBridge->getAccessibleTextItems(644vmID,645AccessibleContext,646textItems, index);647}648return FALSE;649}650651BOOL getAccessibleTextSelectionInfo(long vmID, JOBJECT64 AccessibleContext,652AccessibleTextSelectionInfo *selectionInfo) {653if (theWindowsAccessBridge != 0) {654return theWindowsAccessBridge->getAccessibleTextSelectionInfo(655vmID,656AccessibleContext,657selectionInfo);658}659return FALSE;660}661662BOOL getAccessibleTextAttributes(long vmID, JOBJECT64 AccessibleContext,663jint index, AccessibleTextAttributesInfo *attributes) {664if (theWindowsAccessBridge != 0) {665return theWindowsAccessBridge->getAccessibleTextAttributes(666vmID,667AccessibleContext,668index, attributes);669}670return FALSE;671}672673BOOL getAccessibleTextRect(long vmID, JOBJECT64 AccessibleContext,674AccessibleTextRectInfo *rectInfo, jint index) {675if (theWindowsAccessBridge != 0) {676return theWindowsAccessBridge->getAccessibleTextRect(677vmID,678AccessibleContext,679rectInfo, index);680}681return FALSE;682}683684BOOL getCaretLocation(long vmID, JOBJECT64 AccessibleContext,685AccessibleTextRectInfo *rectInfo, jint index) {686if (theWindowsAccessBridge != 0) {687return theWindowsAccessBridge->getCaretLocation(vmID,688AccessibleContext,689rectInfo, index);690}691return FALSE;692}693694int getEventsWaiting() {695if (theWindowsAccessBridge != 0) {696return theWindowsAccessBridge->getEventsWaiting();697}698return FALSE;699}700701BOOL getAccessibleTextLineBounds(long vmID, JOBJECT64 AccessibleContext,702jint index, jint *startIndex, jint *endIndex) {703if (theWindowsAccessBridge != 0) {704return theWindowsAccessBridge->getAccessibleTextLineBounds(705vmID,706AccessibleContext,707index, startIndex, endIndex);708}709return FALSE;710}711712BOOL getAccessibleTextRange(long vmID, JOBJECT64 AccessibleContext,713jint start, jint end, wchar_t *text, short len) {714if (theWindowsAccessBridge != 0) {715return theWindowsAccessBridge->getAccessibleTextRange(716vmID,717AccessibleContext,718start, end, text, len);719}720return FALSE;721}722723724// -------- Accessible Value methods -------------725726BOOL getCurrentAccessibleValueFromContext(long vmID, JOBJECT64 AccessibleContext,727wchar_t *value, short len) {728if (theWindowsAccessBridge != 0) {729return theWindowsAccessBridge->getCurrentAccessibleValueFromContext(730vmID, AccessibleContext, value, len);731}732return FALSE;733}734735BOOL getMaximumAccessibleValueFromContext(long vmID, JOBJECT64 AccessibleContext,736wchar_t *value, short len) {737if (theWindowsAccessBridge != 0) {738return theWindowsAccessBridge->getMaximumAccessibleValueFromContext(739vmID, AccessibleContext, value, len);740}741return FALSE;742}743744BOOL getMinimumAccessibleValueFromContext(long vmID, JOBJECT64 AccessibleContext,745wchar_t *value, short len) {746if (theWindowsAccessBridge != 0) {747return theWindowsAccessBridge->getMinimumAccessibleValueFromContext(748vmID, AccessibleContext, value, len);749}750return FALSE;751}752753// -------- Accessible Selection methods -------------754755void addAccessibleSelectionFromContext(long vmID, JOBJECT64 AccessibleContext, int i) {756if (theWindowsAccessBridge != 0) {757theWindowsAccessBridge->addAccessibleSelectionFromContext(758vmID, AccessibleContext, i);759}760}761762void clearAccessibleSelectionFromContext(long vmID, JOBJECT64 AccessibleContext) {763if (theWindowsAccessBridge != 0) {764theWindowsAccessBridge->clearAccessibleSelectionFromContext(765vmID, AccessibleContext);766}767}768769JOBJECT64 getAccessibleSelectionFromContext(long vmID, JOBJECT64 AccessibleContext, int i) {770if (theWindowsAccessBridge != 0) {771return theWindowsAccessBridge->getAccessibleSelectionFromContext(772vmID, AccessibleContext, i);773}774return (JOBJECT64) 0;775}776777int getAccessibleSelectionCountFromContext(long vmID, JOBJECT64 AccessibleContext) {778if (theWindowsAccessBridge != 0) {779return theWindowsAccessBridge->getAccessibleSelectionCountFromContext(780vmID, AccessibleContext);781}782return -1;783}784785BOOL isAccessibleChildSelectedFromContext(long vmID, JOBJECT64 AccessibleContext, int i) {786if (theWindowsAccessBridge != 0) {787return theWindowsAccessBridge->isAccessibleChildSelectedFromContext(788vmID, AccessibleContext, i);789}790return FALSE;791}792793void removeAccessibleSelectionFromContext(long vmID, JOBJECT64 AccessibleContext, int i) {794if (theWindowsAccessBridge != 0) {795theWindowsAccessBridge->removeAccessibleSelectionFromContext(796vmID, AccessibleContext, i);797}798}799800void selectAllAccessibleSelectionFromContext(long vmID, JOBJECT64 AccessibleContext) {801if (theWindowsAccessBridge != 0) {802theWindowsAccessBridge->selectAllAccessibleSelectionFromContext(803vmID, AccessibleContext);804}805}806807808// -------- Event Handler methods -------------809810#define SET_EVENT_FP(function, callbackFP) \811void function(callbackFP fp) { \812if (theWindowsAccessBridge != 0) { \813theWindowsAccessBridge->function(fp); \814} \815}816817void setJavaShutdownFP(AccessBridge_JavaShutdownFP fp) {818if (theWindowsAccessBridge != 0) {819theWindowsAccessBridge->setJavaShutdownFP(fp);820}821}822823SET_EVENT_FP(setPropertyChangeFP, AccessBridge_PropertyChangeFP)824SET_EVENT_FP(setFocusGainedFP, AccessBridge_FocusGainedFP)825SET_EVENT_FP(setFocusLostFP, AccessBridge_FocusLostFP)826SET_EVENT_FP(setCaretUpdateFP, AccessBridge_CaretUpdateFP)827SET_EVENT_FP(setMouseClickedFP, AccessBridge_MouseClickedFP)828SET_EVENT_FP(setMouseEnteredFP, AccessBridge_MouseEnteredFP)829SET_EVENT_FP(setMouseExitedFP, AccessBridge_MouseExitedFP)830SET_EVENT_FP(setMousePressedFP, AccessBridge_MousePressedFP)831SET_EVENT_FP(setMouseReleasedFP, AccessBridge_MouseReleasedFP)832SET_EVENT_FP(setMenuCanceledFP, AccessBridge_MenuCanceledFP)833SET_EVENT_FP(setMenuDeselectedFP, AccessBridge_MenuDeselectedFP)834SET_EVENT_FP(setMenuSelectedFP, AccessBridge_MenuSelectedFP)835SET_EVENT_FP(setPopupMenuCanceledFP, AccessBridge_PopupMenuCanceledFP)836SET_EVENT_FP(setPopupMenuWillBecomeInvisibleFP, AccessBridge_PopupMenuWillBecomeInvisibleFP)837SET_EVENT_FP(setPopupMenuWillBecomeVisibleFP, AccessBridge_PopupMenuWillBecomeVisibleFP)838839SET_EVENT_FP(setPropertyNameChangeFP, AccessBridge_PropertyNameChangeFP)840SET_EVENT_FP(setPropertyDescriptionChangeFP, AccessBridge_PropertyDescriptionChangeFP)841SET_EVENT_FP(setPropertyStateChangeFP, AccessBridge_PropertyStateChangeFP)842SET_EVENT_FP(setPropertyValueChangeFP, AccessBridge_PropertyValueChangeFP)843SET_EVENT_FP(setPropertySelectionChangeFP, AccessBridge_PropertySelectionChangeFP)844SET_EVENT_FP(setPropertyTextChangeFP, AccessBridge_PropertyTextChangeFP)845SET_EVENT_FP(setPropertyCaretChangeFP, AccessBridge_PropertyCaretChangeFP)846SET_EVENT_FP(setPropertyVisibleDataChangeFP, AccessBridge_PropertyVisibleDataChangeFP)847SET_EVENT_FP(setPropertyChildChangeFP, AccessBridge_PropertyChildChangeFP)848SET_EVENT_FP(setPropertyActiveDescendentChangeFP, AccessBridge_PropertyActiveDescendentChangeFP)849850SET_EVENT_FP(setPropertyTableModelChangeFP, AccessBridge_PropertyTableModelChangeFP)851852#ifdef __cplusplus853}854#endif855856857