blob: 2472bc786cb0277017414e68654442b80179988c [file] [log] [blame]
/*
* Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* Glue routines called by Windows AT into the WindowsAccessBridge dll
*/
#include "AccessBridgeDebug.h"
#include "AccessBridgeWindowsEntryPoints.h"
#include "WinAccessBridge.h"
#include "accessBridgeResource.h"
#include <windows.h>
#include <jni.h>
extern WinAccessBridge *theWindowsAccessBridge;
extern HWND theDialogWindow;
#ifdef __cplusplus
extern "C" {
#endif
/**
* Windows_run - where Windows executables will load/unload us
*
*/
void Windows_run() {
// open our window
if (theWindowsAccessBridge != (WinAccessBridge *) 0) {
theWindowsAccessBridge->initWindow();
DEBUG_CODE(SetDlgItemText(theDialogWindow, cInvokedByText, "Windows"));
}
}
/*
/**
* Windows_shutdown - where Windows executables will load/unload us
*
*
void Windows_shutdown() {
if (theWindowsAccessBridge != (WinAccessBridge *) 0) {
theWindowsAccessBridge->initWindow();
}
}
*/
/**
* getTopLevelHWND - returns the top-level window parent of the descendent
*
*/
HWND getTopLevelHWND(HWND descendent) {
HWND hwnd;
if (descendent == NULL) {
return NULL;
}
if (!IsWindow(descendent)) {
return NULL;
}
hwnd = descendent;
for(;;) {
LONG style = GetWindowLong(hwnd, GWL_STYLE);
if ( (style & WS_CHILD) == 0 ) {
// found a non-child window so terminate
break;
}
hwnd = GetParent(hwnd);
}
return hwnd;
}
void releaseJavaObject(long vmID, JOBJECT64 object) {
if (theWindowsAccessBridge != 0) {
theWindowsAccessBridge->releaseJavaObject(vmID, object);
}
}
void getVersionInfo(long vmID, AccessBridgeVersionInfo *info) {
if (theWindowsAccessBridge != 0) {
theWindowsAccessBridge->getVersionInfo(vmID, info);
}
}
BOOL isJavaWindow(HWND window) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->isJavaWindow(window);
}
return FALSE;
}
/*
* Returns whether two object references refer to the same object
*/
BOOL isSameObject(long vmID, JOBJECT64 obj1, JOBJECT64 obj2) {
#ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
PrintDebugString("\r\nAccessBridgeWindowsEntryPoints::isSameObject(%p %p)", obj1, obj2);
#else // JOBJECT64 is jlong (64 bit)
PrintDebugString("\r\nAccessBridgeWindowsEntryPoints::isSameObject(%016I64X %016I64X)", obj1, obj2);
#endif
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->isSameObject(vmID, obj1, obj2);
}
return FALSE;
}
/**
* Sets a text field to the specified string. Returns whether successful
*/
BOOL setTextContents (const long vmID, const AccessibleContext accessibleContext,const wchar_t *text) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->setTextContents(vmID, accessibleContext, text);
}
return FALSE;
}
/**
* Returns the Accessible Context of an object of the specified role that is the
* ancestor of a given object. If the object is of the specified role
* or an ancestor object of the specified role was found, returns the object's
* AccessibleContext.
* If there is no ancestor object of the specified role,
* returns (AccessibleContext)0.
*/
AccessibleContext getParentWithRole (const long vmID, const AccessibleContext accessibleContext, const wchar_t *role) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getParentWithRole(vmID, accessibleContext, role);
}
return (AccessibleContext)0;
}
/**
* Returns the Accessible Context for the top level object in
* a Java Window. This is same Accessible Context that is obtained
* from GetAccessibleContextFromHWND for that window. Returns
* (AccessibleContext)0 on error.
*/
AccessibleContext getTopLevelObject (const long vmID, const AccessibleContext accessibleContext) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getTopLevelObject(vmID, accessibleContext);
}
return (AccessibleContext)0;
}
/**
* If there is an Ancestor object of the specified role,
* returns the Accessible Context of the found object.
* Otherwise, returns the top level object for that
* Java Window. Returns (AccessibleContext)0 on error.
*/
AccessibleContext getParentWithRoleElseRoot (const long vmID, const AccessibleContext accessibleContext, const wchar_t *role) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getParentWithRoleElseRoot(vmID, accessibleContext, role);
}
return (AccessibleContext)0;
}
/**
* Returns how deep in the object hierarchy a given object is.
* The top most object in the object hierarchy has an object depth of 0.
* Returns -1 on error.
*/
int getObjectDepth (const long vmID, const AccessibleContext accessibleContext) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getObjectDepth(vmID, accessibleContext);
}
return -1;
}
/**
* Returns the Accessible Context of the currently ActiveDescendent of an object.
* Returns (AccessibleContext)0 on error.
*/
AccessibleContext getActiveDescendent (const long vmID, const AccessibleContext accessibleContext) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getActiveDescendent(vmID, accessibleContext);
}
return (AccessibleContext)0;
}
// -------- Accessible Context methods -------------
BOOL getAccessibleContextFromHWND(HWND window, long *vmID, JOBJECT64 *AccessibleContext) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleContextFromHWND(window, vmID, AccessibleContext);
}
return FALSE;
}
HWND getHWNDFromAccessibleContext(long vmID, JOBJECT64 accessibleContext) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getHWNDFromAccessibleContext(vmID, accessibleContext);
}
return (HWND)0;
}
BOOL getAccessibleContextAt(long vmID, JOBJECT64 AccessibleContextParent,
jint x, jint y, JOBJECT64 *AccessibleContext) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleContextAt(vmID, AccessibleContextParent,
x, y, AccessibleContext);
}
return FALSE;
}
BOOL getAccessibleContextWithFocus(HWND window, long *vmID, JOBJECT64 *AccessibleContext) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleContextWithFocus(window, vmID, AccessibleContext);
}
return FALSE;
}
BOOL getAccessibleContextInfo(long vmID,
JOBJECT64 AccessibleContext,
AccessibleContextInfo *info) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleContextInfo(
vmID,
AccessibleContext,
info);
}
return FALSE;
}
JOBJECT64 getAccessibleChildFromContext(long vmID,
JOBJECT64 AccessibleContext,
jint childIndex) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleChildFromContext(
vmID,
AccessibleContext,
childIndex);
}
return (JOBJECT64) 0;
}
JOBJECT64 getAccessibleParentFromContext(long vmID,
JOBJECT64 AccessibleContext) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleParentFromContext(
vmID,
AccessibleContext);
}
return (JOBJECT64) 0;
}
// -------- begin AccessibleTable routines -------------
BOOL getAccessibleTableInfo(long vmID, JOBJECT64 ac,
AccessibleTableInfo *tableInfo) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleTableInfo(
vmID,
ac,
tableInfo);
}
return FALSE;
}
BOOL getAccessibleTableCellInfo(long vmID, JOBJECT64 accessibleTable,
jint row, jint column, AccessibleTableCellInfo *tableCellInfo) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleTableCellInfo(
vmID,
accessibleTable,
row, column, tableCellInfo);
}
return FALSE;
}
BOOL getAccessibleTableRowHeader(long vmID, JOBJECT64 acParent, AccessibleTableInfo *tableInfo) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleTableRowHeader(
vmID,
acParent,
tableInfo);
}
return FALSE;
}
BOOL getAccessibleTableColumnHeader(long vmID, JOBJECT64 acParent, AccessibleTableInfo *tableInfo) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleTableColumnHeader(
vmID,
acParent,
tableInfo);
}
return FALSE;
}
JOBJECT64 getAccessibleTableRowDescription(long vmID, JOBJECT64 acParent, jint row) {
if (theWindowsAccessBridge != 0) {
return (JOBJECT64)theWindowsAccessBridge->getAccessibleTableRowDescription(
vmID,
acParent,
row);
}
return (JOBJECT64)0;
}
JOBJECT64 getAccessibleTableColumnDescription(long vmID, JOBJECT64 acParent, jint column) {
if (theWindowsAccessBridge != 0) {
return (JOBJECT64)theWindowsAccessBridge->getAccessibleTableColumnDescription(
vmID,
acParent,
column);
}
return (JOBJECT64)0;
}
jint getAccessibleTableRowSelectionCount(long vmID, JOBJECT64 accessibleTable) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleTableRowSelectionCount(vmID, accessibleTable);
}
return -1;
}
BOOL isAccessibleTableRowSelected(long vmID, JOBJECT64 accessibleTable, jint row) {
if (theWindowsAccessBridge != 0 ) {
return theWindowsAccessBridge->isAccessibleTableRowSelected(vmID, accessibleTable, row);
}
return FALSE;
}
BOOL getAccessibleTableRowSelections(long vmID, JOBJECT64 accessibleTable, jint count, jint *selections) {
if (theWindowsAccessBridge != 0 ) {
return theWindowsAccessBridge->getAccessibleTableRowSelections(vmID, accessibleTable, count,
selections);
}
return FALSE;
}
jint getAccessibleTableColumnSelectionCount(long vmID, JOBJECT64 accessibleTable) {
if (theWindowsAccessBridge != 0 ) {
return theWindowsAccessBridge->getAccessibleTableColumnSelectionCount(vmID, accessibleTable);
}
return -1;
}
BOOL isAccessibleTableColumnSelected(long vmID, JOBJECT64 accessibleTable, jint column) {
if (theWindowsAccessBridge != 0 ) {
return theWindowsAccessBridge->isAccessibleTableColumnSelected(vmID, accessibleTable, column);
}
return FALSE;
}
BOOL getAccessibleTableColumnSelections(long vmID, JOBJECT64 accessibleTable, jint count, jint *selections) {
if (theWindowsAccessBridge != 0 ) {
return theWindowsAccessBridge->getAccessibleTableColumnSelections(vmID, accessibleTable, count,
selections);
}
return FALSE;
}
jint getAccessibleTableRow(long vmID, JOBJECT64 accessibleTable, jint index) {
if (theWindowsAccessBridge != 0 ) {
return theWindowsAccessBridge->getAccessibleTableRow(vmID, accessibleTable, index);
}
return -1;
}
jint getAccessibleTableColumn(long vmID, JOBJECT64 accessibleTable, jint index) {
if (theWindowsAccessBridge != 0 ) {
return theWindowsAccessBridge->getAccessibleTableColumn(vmID, accessibleTable, index);
}
return -1;
}
jint getAccessibleTableIndex(long vmID, JOBJECT64 accessibleTable, jint row, jint column) {
if (theWindowsAccessBridge != 0 ) {
return theWindowsAccessBridge->getAccessibleTableIndex(vmID, accessibleTable, row, column);
}
return -1;
}
/* --------- end AccessibleTable routines ------- */
// --------- AccessibleRelationSet methods
BOOL getAccessibleRelationSet(long vmID, JOBJECT64 accessibleContext,
AccessibleRelationSetInfo *relationSetInfo) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleRelationSet(vmID, accessibleContext, relationSetInfo);
}
return FALSE;
}
// --------- AccessibleHypertext methods
BOOL getAccessibleHypertext(long vmID, JOBJECT64 accessibleContext,
AccessibleHypertextInfo *accessibleHypertextInfo) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleHypertext(vmID, accessibleContext,
accessibleHypertextInfo);
}
return FALSE;
}
BOOL activateAccessibleHyperlink(long vmID, JOBJECT64 accessibleContext, JOBJECT64 accessibleHyperlink) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->activateAccessibleHyperlink(vmID, accessibleContext,
accessibleHyperlink);
}
return FALSE;
}
jint getAccessibleHyperlinkCount(const long vmID,
const AccessibleContext accessibleContext) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleHyperlinkCount(vmID, accessibleContext);
}
return -1;
}
BOOL getAccessibleHypertextExt(const long vmID,
const AccessibleContext accessibleContext,
const jint nStartIndex,
/* OUT */ AccessibleHypertextInfo *hypertextInfo) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleHypertextExt(vmID,
accessibleContext,
nStartIndex,
hypertextInfo);
}
return FALSE;
}
jint getAccessibleHypertextLinkIndex(const long vmID,
const AccessibleHypertext hypertext,
const jint nIndex) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleHypertextLinkIndex(vmID,
hypertext,
nIndex);
}
return -1;
}
BOOL getAccessibleHyperlink(const long vmID,
const AccessibleHypertext hypertext,
const jint nIndex,
/* OUT */ AccessibleHyperlinkInfo *hyperlinkInfo) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleHyperlink(vmID,
hypertext,
nIndex,
hyperlinkInfo);
}
return FALSE;
}
/* Accessible KeyBindings, Icons and Actions */
BOOL getAccessibleKeyBindings(long vmID, JOBJECT64 accessibleContext, AccessibleKeyBindings *keyBindings) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleKeyBindings(vmID, accessibleContext, keyBindings);
}
return FALSE;
}
BOOL getAccessibleIcons(long vmID, JOBJECT64 accessibleContext, AccessibleIcons *icons) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleIcons(vmID, accessibleContext, icons);
}
return FALSE;
}
BOOL getAccessibleActions(long vmID, JOBJECT64 accessibleContext, AccessibleActions *actions) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleActions(vmID, accessibleContext, actions);
}
return FALSE;
}
BOOL doAccessibleActions(long vmID, JOBJECT64 accessibleContext, AccessibleActionsToDo *actionsToDo,
jint *failure) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->doAccessibleActions(vmID, accessibleContext, actionsToDo,
failure);
}
return FALSE;
}
/**
* Additional methods for Teton
*/
/**
* Gets the AccessibleName for a component based upon the JAWS algorithm. Returns
* whether successful.
*
* Bug ID 4916682 - Implement JAWS AccessibleName policy
*/
BOOL getVirtualAccessibleName(long vmID, AccessibleContext accessibleContext, wchar_t *name, int len) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getVirtualAccessibleName(vmID, accessibleContext, name, len);
}
return FALSE;
}
/**
* Request focus for a component. Returns whether successful;
*
* Bug ID 4944757 - requestFocus method needed
*/
BOOL requestFocus(long vmID, AccessibleContext accessibleContext) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->requestFocus(vmID, accessibleContext);
}
return FALSE;
}
/**
* Selects text between two indices. Selection includes the text at the start index
* and the text at the end index. Returns whether successful;
*
* Bug ID 4944758 - selectTextRange method needed
*/
BOOL selectTextRange(long vmID, AccessibleContext accessibleContext, int startIndex, int endIndex) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->selectTextRange(vmID, accessibleContext, startIndex, endIndex);
}
return FALSE;
}
/**
* Get text attributes between two indices. The attribute list includes the text at the
* start index and the text at the end index. Returns whether successful;
*
* Bug ID 4944761 - getTextAttributes between two indices method needed
*/
BOOL getTextAttributesInRange(long vmID, AccessibleContext accessibleContext, int startIndex, int endIndex,
AccessibleTextAttributesInfo *attributes, short *len) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getTextAttributesInRange(vmID, accessibleContext,
startIndex, endIndex, attributes, len);
}
return FALSE;
}
/**
* Gets the number of visible children of a component. Returns -1 on error.
*
* Bug ID 4944762- getVisibleChildren for list-like components needed
*/
int getVisibleChildrenCount(long vmID, AccessibleContext accessibleContext) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getVisibleChildrenCount(vmID, accessibleContext);
}
return FALSE;
}
/**
* Gets the visible children of an AccessibleContext. Returns whether successful;
*
* Bug ID 4944762- getVisibleChildren for list-like components needed
*/
BOOL getVisibleChildren(long vmID, AccessibleContext accessibleContext, int startIndex,
VisibleChildrenInfo *visibleChildrenInfo) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getVisibleChildren(vmID, accessibleContext, startIndex,
visibleChildrenInfo);
}
return FALSE;
}
/**
* Set the caret to a text position. Returns whether successful;
*
* Bug ID 4944770 - setCaretPosition method needed
*/
BOOL setCaretPosition(const long vmID, const AccessibleContext accessibleContext,
const int position) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->setCaretPosition(vmID, accessibleContext, position);
}
return FALSE;
}
// -------- Accessible Text methods -------------
BOOL getAccessibleTextInfo(long vmID, JOBJECT64 AccessibleContext,
AccessibleTextInfo *textInfo, jint x, jint y) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleTextInfo(
vmID,
AccessibleContext,
textInfo, x, y);
}
return FALSE;
}
BOOL getAccessibleTextItems(long vmID, JOBJECT64 AccessibleContext,
AccessibleTextItemsInfo *textItems, jint index) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleTextItems(
vmID,
AccessibleContext,
textItems, index);
}
return FALSE;
}
BOOL getAccessibleTextSelectionInfo(long vmID, JOBJECT64 AccessibleContext,
AccessibleTextSelectionInfo *selectionInfo) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleTextSelectionInfo(
vmID,
AccessibleContext,
selectionInfo);
}
return FALSE;
}
BOOL getAccessibleTextAttributes(long vmID, JOBJECT64 AccessibleContext,
jint index, AccessibleTextAttributesInfo *attributes) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleTextAttributes(
vmID,
AccessibleContext,
index, attributes);
}
return FALSE;
}
BOOL getAccessibleTextRect(long vmID, JOBJECT64 AccessibleContext,
AccessibleTextRectInfo *rectInfo, jint index) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleTextRect(
vmID,
AccessibleContext,
rectInfo, index);
}
return FALSE;
}
BOOL getCaretLocation(long vmID, JOBJECT64 AccessibleContext,
AccessibleTextRectInfo *rectInfo, jint index) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getCaretLocation(vmID,
AccessibleContext,
rectInfo, index);
}
return FALSE;
}
int getEventsWaiting() {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getEventsWaiting();
}
return FALSE;
}
BOOL getAccessibleTextLineBounds(long vmID, JOBJECT64 AccessibleContext,
jint index, jint *startIndex, jint *endIndex) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleTextLineBounds(
vmID,
AccessibleContext,
index, startIndex, endIndex);
}
return FALSE;
}
BOOL getAccessibleTextRange(long vmID, JOBJECT64 AccessibleContext,
jint start, jint end, wchar_t *text, short len) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleTextRange(
vmID,
AccessibleContext,
start, end, text, len);
}
return FALSE;
}
// -------- Accessible Value methods -------------
BOOL getCurrentAccessibleValueFromContext(long vmID, JOBJECT64 AccessibleContext,
wchar_t *value, short len) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getCurrentAccessibleValueFromContext(
vmID, AccessibleContext, value, len);
}
return FALSE;
}
BOOL getMaximumAccessibleValueFromContext(long vmID, JOBJECT64 AccessibleContext,
wchar_t *value, short len) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getMaximumAccessibleValueFromContext(
vmID, AccessibleContext, value, len);
}
return FALSE;
}
BOOL getMinimumAccessibleValueFromContext(long vmID, JOBJECT64 AccessibleContext,
wchar_t *value, short len) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getMinimumAccessibleValueFromContext(
vmID, AccessibleContext, value, len);
}
return FALSE;
}
// -------- Accessible Selection methods -------------
void addAccessibleSelectionFromContext(long vmID, JOBJECT64 AccessibleContext, int i) {
if (theWindowsAccessBridge != 0) {
theWindowsAccessBridge->addAccessibleSelectionFromContext(
vmID, AccessibleContext, i);
}
}
void clearAccessibleSelectionFromContext(long vmID, JOBJECT64 AccessibleContext) {
if (theWindowsAccessBridge != 0) {
theWindowsAccessBridge->clearAccessibleSelectionFromContext(
vmID, AccessibleContext);
}
}
JOBJECT64 getAccessibleSelectionFromContext(long vmID, JOBJECT64 AccessibleContext, int i) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleSelectionFromContext(
vmID, AccessibleContext, i);
}
return (JOBJECT64) 0;
}
int getAccessibleSelectionCountFromContext(long vmID, JOBJECT64 AccessibleContext) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->getAccessibleSelectionCountFromContext(
vmID, AccessibleContext);
}
return -1;
}
BOOL isAccessibleChildSelectedFromContext(long vmID, JOBJECT64 AccessibleContext, int i) {
if (theWindowsAccessBridge != 0) {
return theWindowsAccessBridge->isAccessibleChildSelectedFromContext(
vmID, AccessibleContext, i);
}
return FALSE;
}
void removeAccessibleSelectionFromContext(long vmID, JOBJECT64 AccessibleContext, int i) {
if (theWindowsAccessBridge != 0) {
theWindowsAccessBridge->removeAccessibleSelectionFromContext(
vmID, AccessibleContext, i);
}
}
void selectAllAccessibleSelectionFromContext(long vmID, JOBJECT64 AccessibleContext) {
if (theWindowsAccessBridge != 0) {
theWindowsAccessBridge->selectAllAccessibleSelectionFromContext(
vmID, AccessibleContext);
}
}
// -------- Event Handler methods -------------
#define SET_EVENT_FP(function, callbackFP) \
void function(callbackFP fp) { \
if (theWindowsAccessBridge != 0) { \
theWindowsAccessBridge->function(fp); \
} \
}
void setJavaShutdownFP(AccessBridge_JavaShutdownFP fp) {
if (theWindowsAccessBridge != 0) {
theWindowsAccessBridge->setJavaShutdownFP(fp);
}
}
SET_EVENT_FP(setPropertyChangeFP, AccessBridge_PropertyChangeFP)
SET_EVENT_FP(setFocusGainedFP, AccessBridge_FocusGainedFP)
SET_EVENT_FP(setFocusLostFP, AccessBridge_FocusLostFP)
SET_EVENT_FP(setCaretUpdateFP, AccessBridge_CaretUpdateFP)
SET_EVENT_FP(setMouseClickedFP, AccessBridge_MouseClickedFP)
SET_EVENT_FP(setMouseEnteredFP, AccessBridge_MouseEnteredFP)
SET_EVENT_FP(setMouseExitedFP, AccessBridge_MouseExitedFP)
SET_EVENT_FP(setMousePressedFP, AccessBridge_MousePressedFP)
SET_EVENT_FP(setMouseReleasedFP, AccessBridge_MouseReleasedFP)
SET_EVENT_FP(setMenuCanceledFP, AccessBridge_MenuCanceledFP)
SET_EVENT_FP(setMenuDeselectedFP, AccessBridge_MenuDeselectedFP)
SET_EVENT_FP(setMenuSelectedFP, AccessBridge_MenuSelectedFP)
SET_EVENT_FP(setPopupMenuCanceledFP, AccessBridge_PopupMenuCanceledFP)
SET_EVENT_FP(setPopupMenuWillBecomeInvisibleFP, AccessBridge_PopupMenuWillBecomeInvisibleFP)
SET_EVENT_FP(setPopupMenuWillBecomeVisibleFP, AccessBridge_PopupMenuWillBecomeVisibleFP)
SET_EVENT_FP(setPropertyNameChangeFP, AccessBridge_PropertyNameChangeFP)
SET_EVENT_FP(setPropertyDescriptionChangeFP, AccessBridge_PropertyDescriptionChangeFP)
SET_EVENT_FP(setPropertyStateChangeFP, AccessBridge_PropertyStateChangeFP)
SET_EVENT_FP(setPropertyValueChangeFP, AccessBridge_PropertyValueChangeFP)
SET_EVENT_FP(setPropertySelectionChangeFP, AccessBridge_PropertySelectionChangeFP)
SET_EVENT_FP(setPropertyTextChangeFP, AccessBridge_PropertyTextChangeFP)
SET_EVENT_FP(setPropertyCaretChangeFP, AccessBridge_PropertyCaretChangeFP)
SET_EVENT_FP(setPropertyVisibleDataChangeFP, AccessBridge_PropertyVisibleDataChangeFP)
SET_EVENT_FP(setPropertyChildChangeFP, AccessBridge_PropertyChildChangeFP)
SET_EVENT_FP(setPropertyActiveDescendentChangeFP, AccessBridge_PropertyActiveDescendentChangeFP)
SET_EVENT_FP(setPropertyTableModelChangeFP, AccessBridge_PropertyTableModelChangeFP)
#ifdef __cplusplus
}
#endif