Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/src/jdk.accessibility/windows/native/libwindowsaccessbridge/AccessBridgeWindowsEntryPoints.cpp
40957 views
1
/*
2
* Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation. Oracle designates this
8
* particular file as subject to the "Classpath" exception as provided
9
* by Oracle in the LICENSE file that accompanied this code.
10
*
11
* This code is distributed in the hope that it will be useful, but WITHOUT
12
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14
* version 2 for more details (a copy is included in the LICENSE file that
15
* accompanied this code).
16
*
17
* You should have received a copy of the GNU General Public License version
18
* 2 along with this work; if not, write to the Free Software Foundation,
19
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20
*
21
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22
* or visit www.oracle.com if you need additional information or have any
23
* questions.
24
*/
25
26
/*
27
* Glue routines called by Windows AT into the WindowsAccessBridge dll
28
*/
29
30
#include "AccessBridgeDebug.h"
31
#include "AccessBridgeWindowsEntryPoints.h"
32
#include "WinAccessBridge.h"
33
#include "accessBridgeResource.h"
34
35
#include <windows.h>
36
#include <jni.h>
37
38
39
extern WinAccessBridge *theWindowsAccessBridge;
40
extern HWND theDialogWindow;
41
42
#ifdef __cplusplus
43
extern "C" {
44
#endif
45
46
/**
47
* Windows_run - where Windows executables will load/unload us
48
*
49
*/
50
void Windows_run() {
51
// open our window
52
if (theWindowsAccessBridge != (WinAccessBridge *) 0) {
53
theWindowsAccessBridge->initWindow();
54
}
55
}
56
57
/*
58
/**
59
* Windows_shutdown - where Windows executables will load/unload us
60
*
61
*
62
void Windows_shutdown() {
63
if (theWindowsAccessBridge != (WinAccessBridge *) 0) {
64
theWindowsAccessBridge->initWindow();
65
}
66
}
67
*/
68
69
/**
70
* getTopLevelHWND - returns the top-level window parent of the descendent
71
*
72
*/
73
HWND getTopLevelHWND(HWND descendent) {
74
HWND hwnd;
75
if (descendent == NULL) {
76
return NULL;
77
}
78
79
if (!IsWindow(descendent)) {
80
return NULL;
81
}
82
83
hwnd = descendent;
84
for(;;) {
85
LONG style = GetWindowLong(hwnd, GWL_STYLE);
86
if ( (style & WS_CHILD) == 0 ) {
87
// found a non-child window so terminate
88
break;
89
}
90
hwnd = GetParent(hwnd);
91
}
92
93
return hwnd;
94
}
95
96
void releaseJavaObject(long vmID, JOBJECT64 object) {
97
if (theWindowsAccessBridge != 0) {
98
theWindowsAccessBridge->releaseJavaObject(vmID, object);
99
}
100
}
101
102
void getVersionInfo(long vmID, AccessBridgeVersionInfo *info) {
103
if (theWindowsAccessBridge != 0) {
104
theWindowsAccessBridge->getVersionInfo(vmID, info);
105
}
106
}
107
108
109
BOOL isJavaWindow(HWND window) {
110
if (theWindowsAccessBridge != 0) {
111
return theWindowsAccessBridge->isJavaWindow(window);
112
}
113
return FALSE;
114
}
115
116
/*
117
* Returns whether two object references refer to the same object
118
*/
119
BOOL isSameObject(long vmID, JOBJECT64 obj1, JOBJECT64 obj2) {
120
#ifdef ACCESSBRIDGE_ARCH_LEGACY // JOBJECT64 is jobject (32 bit pointer)
121
PrintDebugString("\r\nAccessBridgeWindowsEntryPoints::isSameObject(%p %p)", obj1, obj2);
122
#else // JOBJECT64 is jlong (64 bit)
123
PrintDebugString("\r\nAccessBridgeWindowsEntryPoints::isSameObject(%016I64X %016I64X)", obj1, obj2);
124
#endif
125
if (theWindowsAccessBridge != 0) {
126
return theWindowsAccessBridge->isSameObject(vmID, obj1, obj2);
127
}
128
return FALSE;
129
}
130
131
/**
132
* Sets a text field to the specified string. Returns whether successful
133
*/
134
BOOL setTextContents (const long vmID, const AccessibleContext accessibleContext,const wchar_t *text) {
135
136
if (theWindowsAccessBridge != 0) {
137
return theWindowsAccessBridge->setTextContents(vmID, accessibleContext, text);
138
}
139
return FALSE;
140
}
141
142
/**
143
* Returns the Accessible Context of an object of the specified role that is the
144
* ancestor of a given object. If the object is of the specified role
145
* or an ancestor object of the specified role was found, returns the object's
146
* AccessibleContext.
147
* If there is no ancestor object of the specified role,
148
* returns (AccessibleContext)0.
149
*/
150
AccessibleContext getParentWithRole (const long vmID, const AccessibleContext accessibleContext, const wchar_t *role) {
151
152
if (theWindowsAccessBridge != 0) {
153
return theWindowsAccessBridge->getParentWithRole(vmID, accessibleContext, role);
154
}
155
return (AccessibleContext)0;
156
}
157
158
159
/**
160
* Returns the Accessible Context for the top level object in
161
* a Java Window. This is same Accessible Context that is obtained
162
* from GetAccessibleContextFromHWND for that window. Returns
163
* (AccessibleContext)0 on error.
164
*/
165
AccessibleContext getTopLevelObject (const long vmID, const AccessibleContext accessibleContext) {
166
167
if (theWindowsAccessBridge != 0) {
168
return theWindowsAccessBridge->getTopLevelObject(vmID, accessibleContext);
169
}
170
return (AccessibleContext)0;
171
}
172
173
/**
174
* If there is an Ancestor object of the specified role,
175
* returns the Accessible Context of the found object.
176
* Otherwise, returns the top level object for that
177
* Java Window. Returns (AccessibleContext)0 on error.
178
*/
179
AccessibleContext getParentWithRoleElseRoot (const long vmID, const AccessibleContext accessibleContext, const wchar_t *role) {
180
181
if (theWindowsAccessBridge != 0) {
182
return theWindowsAccessBridge->getParentWithRoleElseRoot(vmID, accessibleContext, role);
183
}
184
return (AccessibleContext)0;
185
}
186
187
/**
188
* Returns how deep in the object hierarchy a given object is.
189
* The top most object in the object hierarchy has an object depth of 0.
190
* Returns -1 on error.
191
*/
192
int getObjectDepth (const long vmID, const AccessibleContext accessibleContext) {
193
194
if (theWindowsAccessBridge != 0) {
195
return theWindowsAccessBridge->getObjectDepth(vmID, accessibleContext);
196
}
197
return -1;
198
}
199
200
/**
201
* Returns the Accessible Context of the currently ActiveDescendent of an object.
202
* Returns (AccessibleContext)0 on error.
203
*/
204
AccessibleContext getActiveDescendent (const long vmID, const AccessibleContext accessibleContext) {
205
206
if (theWindowsAccessBridge != 0) {
207
return theWindowsAccessBridge->getActiveDescendent(vmID, accessibleContext);
208
}
209
return (AccessibleContext)0;
210
}
211
212
// -------- Accessible Context methods -------------
213
214
BOOL getAccessibleContextFromHWND(HWND window, long *vmID, JOBJECT64 *AccessibleContext) {
215
if (theWindowsAccessBridge != 0) {
216
return theWindowsAccessBridge->getAccessibleContextFromHWND(window, vmID, AccessibleContext);
217
}
218
return FALSE;
219
}
220
221
HWND getHWNDFromAccessibleContext(long vmID, JOBJECT64 accessibleContext) {
222
if (theWindowsAccessBridge != 0) {
223
return theWindowsAccessBridge->getHWNDFromAccessibleContext(vmID, accessibleContext);
224
}
225
return (HWND)0;
226
}
227
228
BOOL getAccessibleContextAt(long vmID, JOBJECT64 AccessibleContextParent,
229
jint x, jint y, JOBJECT64 *AccessibleContext) {
230
if (theWindowsAccessBridge != 0) {
231
return theWindowsAccessBridge->getAccessibleContextAt(vmID, AccessibleContextParent,
232
x, y, AccessibleContext);
233
}
234
return FALSE;
235
}
236
237
BOOL getAccessibleContextWithFocus(HWND window, long *vmID, JOBJECT64 *AccessibleContext) {
238
if (theWindowsAccessBridge != 0) {
239
return theWindowsAccessBridge->getAccessibleContextWithFocus(window, vmID, AccessibleContext);
240
}
241
return FALSE;
242
}
243
244
BOOL getAccessibleContextInfo(long vmID,
245
JOBJECT64 AccessibleContext,
246
AccessibleContextInfo *info) {
247
if (theWindowsAccessBridge != 0) {
248
return theWindowsAccessBridge->getAccessibleContextInfo(
249
vmID,
250
AccessibleContext,
251
info);
252
}
253
return FALSE;
254
}
255
256
JOBJECT64 getAccessibleChildFromContext(long vmID,
257
JOBJECT64 AccessibleContext,
258
jint childIndex) {
259
if (theWindowsAccessBridge != 0) {
260
return theWindowsAccessBridge->getAccessibleChildFromContext(
261
vmID,
262
AccessibleContext,
263
childIndex);
264
}
265
return (JOBJECT64) 0;
266
}
267
268
JOBJECT64 getAccessibleParentFromContext(long vmID,
269
JOBJECT64 AccessibleContext) {
270
if (theWindowsAccessBridge != 0) {
271
return theWindowsAccessBridge->getAccessibleParentFromContext(
272
vmID,
273
AccessibleContext);
274
}
275
return (JOBJECT64) 0;
276
}
277
278
// -------- begin AccessibleTable routines -------------
279
280
BOOL getAccessibleTableInfo(long vmID, JOBJECT64 ac,
281
AccessibleTableInfo *tableInfo) {
282
if (theWindowsAccessBridge != 0) {
283
return theWindowsAccessBridge->getAccessibleTableInfo(
284
vmID,
285
ac,
286
tableInfo);
287
}
288
return FALSE;
289
}
290
291
BOOL getAccessibleTableCellInfo(long vmID, JOBJECT64 accessibleTable,
292
jint row, jint column, AccessibleTableCellInfo *tableCellInfo) {
293
294
if (theWindowsAccessBridge != 0) {
295
return theWindowsAccessBridge->getAccessibleTableCellInfo(
296
vmID,
297
accessibleTable,
298
row, column, tableCellInfo);
299
}
300
return FALSE;
301
}
302
303
BOOL getAccessibleTableRowHeader(long vmID, JOBJECT64 acParent, AccessibleTableInfo *tableInfo) {
304
305
if (theWindowsAccessBridge != 0) {
306
return theWindowsAccessBridge->getAccessibleTableRowHeader(
307
vmID,
308
acParent,
309
tableInfo);
310
}
311
return FALSE;
312
}
313
314
BOOL getAccessibleTableColumnHeader(long vmID, JOBJECT64 acParent, AccessibleTableInfo *tableInfo) {
315
316
if (theWindowsAccessBridge != 0) {
317
return theWindowsAccessBridge->getAccessibleTableColumnHeader(
318
vmID,
319
acParent,
320
tableInfo);
321
}
322
return FALSE;
323
}
324
325
JOBJECT64 getAccessibleTableRowDescription(long vmID, JOBJECT64 acParent, jint row) {
326
327
if (theWindowsAccessBridge != 0) {
328
return (JOBJECT64)theWindowsAccessBridge->getAccessibleTableRowDescription(
329
vmID,
330
acParent,
331
row);
332
}
333
return (JOBJECT64)0;
334
}
335
336
JOBJECT64 getAccessibleTableColumnDescription(long vmID, JOBJECT64 acParent, jint column) {
337
338
if (theWindowsAccessBridge != 0) {
339
return (JOBJECT64)theWindowsAccessBridge->getAccessibleTableColumnDescription(
340
vmID,
341
acParent,
342
column);
343
}
344
return (JOBJECT64)0;
345
}
346
347
jint getAccessibleTableRowSelectionCount(long vmID, JOBJECT64 accessibleTable) {
348
if (theWindowsAccessBridge != 0) {
349
return theWindowsAccessBridge->getAccessibleTableRowSelectionCount(vmID, accessibleTable);
350
}
351
return -1;
352
}
353
354
BOOL isAccessibleTableRowSelected(long vmID, JOBJECT64 accessibleTable, jint row) {
355
if (theWindowsAccessBridge != 0 ) {
356
return theWindowsAccessBridge->isAccessibleTableRowSelected(vmID, accessibleTable, row);
357
}
358
return FALSE;
359
}
360
361
BOOL getAccessibleTableRowSelections(long vmID, JOBJECT64 accessibleTable, jint count, jint *selections) {
362
if (theWindowsAccessBridge != 0 ) {
363
return theWindowsAccessBridge->getAccessibleTableRowSelections(vmID, accessibleTable, count,
364
selections);
365
}
366
return FALSE;
367
}
368
369
370
jint getAccessibleTableColumnSelectionCount(long vmID, JOBJECT64 accessibleTable) {
371
if (theWindowsAccessBridge != 0 ) {
372
return theWindowsAccessBridge->getAccessibleTableColumnSelectionCount(vmID, accessibleTable);
373
}
374
return -1;
375
}
376
377
BOOL isAccessibleTableColumnSelected(long vmID, JOBJECT64 accessibleTable, jint column) {
378
if (theWindowsAccessBridge != 0 ) {
379
return theWindowsAccessBridge->isAccessibleTableColumnSelected(vmID, accessibleTable, column);
380
}
381
return FALSE;
382
}
383
384
BOOL getAccessibleTableColumnSelections(long vmID, JOBJECT64 accessibleTable, jint count, jint *selections) {
385
if (theWindowsAccessBridge != 0 ) {
386
return theWindowsAccessBridge->getAccessibleTableColumnSelections(vmID, accessibleTable, count,
387
selections);
388
}
389
return FALSE;
390
}
391
392
jint getAccessibleTableRow(long vmID, JOBJECT64 accessibleTable, jint index) {
393
if (theWindowsAccessBridge != 0 ) {
394
return theWindowsAccessBridge->getAccessibleTableRow(vmID, accessibleTable, index);
395
}
396
return -1;
397
}
398
399
jint getAccessibleTableColumn(long vmID, JOBJECT64 accessibleTable, jint index) {
400
if (theWindowsAccessBridge != 0 ) {
401
return theWindowsAccessBridge->getAccessibleTableColumn(vmID, accessibleTable, index);
402
}
403
return -1;
404
}
405
406
jint getAccessibleTableIndex(long vmID, JOBJECT64 accessibleTable, jint row, jint column) {
407
if (theWindowsAccessBridge != 0 ) {
408
return theWindowsAccessBridge->getAccessibleTableIndex(vmID, accessibleTable, row, column);
409
}
410
return -1;
411
}
412
413
/* --------- end AccessibleTable routines ------- */
414
415
// --------- AccessibleRelationSet methods
416
417
BOOL getAccessibleRelationSet(long vmID, JOBJECT64 accessibleContext,
418
AccessibleRelationSetInfo *relationSetInfo) {
419
if (theWindowsAccessBridge != 0) {
420
return theWindowsAccessBridge->getAccessibleRelationSet(vmID, accessibleContext, relationSetInfo);
421
}
422
return FALSE;
423
}
424
425
// --------- AccessibleHypertext methods
426
427
BOOL getAccessibleHypertext(long vmID, JOBJECT64 accessibleContext,
428
AccessibleHypertextInfo *accessibleHypertextInfo) {
429
if (theWindowsAccessBridge != 0) {
430
return theWindowsAccessBridge->getAccessibleHypertext(vmID, accessibleContext,
431
accessibleHypertextInfo);
432
}
433
return FALSE;
434
}
435
436
BOOL activateAccessibleHyperlink(long vmID, JOBJECT64 accessibleContext, JOBJECT64 accessibleHyperlink) {
437
if (theWindowsAccessBridge != 0) {
438
return theWindowsAccessBridge->activateAccessibleHyperlink(vmID, accessibleContext,
439
accessibleHyperlink);
440
}
441
return FALSE;
442
}
443
444
jint getAccessibleHyperlinkCount(const long vmID,
445
const AccessibleContext accessibleContext) {
446
447
if (theWindowsAccessBridge != 0) {
448
return theWindowsAccessBridge->getAccessibleHyperlinkCount(vmID, accessibleContext);
449
}
450
return -1;
451
}
452
453
454
BOOL getAccessibleHypertextExt(const long vmID,
455
const AccessibleContext accessibleContext,
456
const jint nStartIndex,
457
/* OUT */ AccessibleHypertextInfo *hypertextInfo) {
458
459
if (theWindowsAccessBridge != 0) {
460
return theWindowsAccessBridge->getAccessibleHypertextExt(vmID,
461
accessibleContext,
462
nStartIndex,
463
hypertextInfo);
464
}
465
return FALSE;
466
}
467
468
469
jint getAccessibleHypertextLinkIndex(const long vmID,
470
const AccessibleHypertext hypertext,
471
const jint nIndex) {
472
473
if (theWindowsAccessBridge != 0) {
474
return theWindowsAccessBridge->getAccessibleHypertextLinkIndex(vmID,
475
hypertext,
476
nIndex);
477
}
478
return -1;
479
}
480
481
482
BOOL getAccessibleHyperlink(const long vmID,
483
const AccessibleHypertext hypertext,
484
const jint nIndex,
485
/* OUT */ AccessibleHyperlinkInfo *hyperlinkInfo) {
486
487
if (theWindowsAccessBridge != 0) {
488
return theWindowsAccessBridge->getAccessibleHyperlink(vmID,
489
hypertext,
490
nIndex,
491
hyperlinkInfo);
492
}
493
return FALSE;
494
}
495
496
497
/* Accessible KeyBindings, Icons and Actions */
498
BOOL getAccessibleKeyBindings(long vmID, JOBJECT64 accessibleContext, AccessibleKeyBindings *keyBindings) {
499
500
if (theWindowsAccessBridge != 0) {
501
return theWindowsAccessBridge->getAccessibleKeyBindings(vmID, accessibleContext, keyBindings);
502
}
503
return FALSE;
504
}
505
506
BOOL getAccessibleIcons(long vmID, JOBJECT64 accessibleContext, AccessibleIcons *icons) {
507
508
if (theWindowsAccessBridge != 0) {
509
return theWindowsAccessBridge->getAccessibleIcons(vmID, accessibleContext, icons);
510
}
511
return FALSE;
512
}
513
514
BOOL getAccessibleActions(long vmID, JOBJECT64 accessibleContext, AccessibleActions *actions) {
515
516
if (theWindowsAccessBridge != 0) {
517
return theWindowsAccessBridge->getAccessibleActions(vmID, accessibleContext, actions);
518
}
519
return FALSE;
520
}
521
522
BOOL doAccessibleActions(long vmID, JOBJECT64 accessibleContext, AccessibleActionsToDo *actionsToDo,
523
jint *failure) {
524
525
if (theWindowsAccessBridge != 0) {
526
return theWindowsAccessBridge->doAccessibleActions(vmID, accessibleContext, actionsToDo,
527
failure);
528
}
529
return FALSE;
530
}
531
532
/**
533
* Additional methods for Teton
534
*/
535
536
/**
537
* Gets the AccessibleName for a component based upon the JAWS algorithm. Returns
538
* whether successful.
539
*
540
* Bug ID 4916682 - Implement JAWS AccessibleName policy
541
*/
542
BOOL getVirtualAccessibleName(long vmID, AccessibleContext accessibleContext, wchar_t *name, int len) {
543
if (theWindowsAccessBridge != 0) {
544
return theWindowsAccessBridge->getVirtualAccessibleName(vmID, accessibleContext, name, len);
545
}
546
return FALSE;
547
}
548
549
/**
550
* Request focus for a component. Returns whether successful;
551
*
552
* Bug ID 4944757 - requestFocus method needed
553
*/
554
BOOL requestFocus(long vmID, AccessibleContext accessibleContext) {
555
if (theWindowsAccessBridge != 0) {
556
return theWindowsAccessBridge->requestFocus(vmID, accessibleContext);
557
}
558
return FALSE;
559
}
560
561
/**
562
* Selects text between two indices. Selection includes the text at the start index
563
* and the text at the end index. Returns whether successful;
564
*
565
* Bug ID 4944758 - selectTextRange method needed
566
*/
567
BOOL selectTextRange(long vmID, AccessibleContext accessibleContext, int startIndex, int endIndex) {
568
if (theWindowsAccessBridge != 0) {
569
return theWindowsAccessBridge->selectTextRange(vmID, accessibleContext, startIndex, endIndex);
570
}
571
return FALSE;
572
}
573
574
/**
575
* Get text attributes between two indices. The attribute list includes the text at the
576
* start index and the text at the end index. Returns whether successful;
577
*
578
* Bug ID 4944761 - getTextAttributes between two indices method needed
579
*/
580
BOOL getTextAttributesInRange(long vmID, AccessibleContext accessibleContext, int startIndex, int endIndex,
581
AccessibleTextAttributesInfo *attributes, short *len) {
582
if (theWindowsAccessBridge != 0) {
583
return theWindowsAccessBridge->getTextAttributesInRange(vmID, accessibleContext,
584
startIndex, endIndex, attributes, len);
585
}
586
return FALSE;
587
}
588
589
/**
590
* Gets the number of visible children of a component. Returns -1 on error.
591
*
592
* Bug ID 4944762- getVisibleChildren for list-like components needed
593
*/
594
int getVisibleChildrenCount(long vmID, AccessibleContext accessibleContext) {
595
if (theWindowsAccessBridge != 0) {
596
return theWindowsAccessBridge->getVisibleChildrenCount(vmID, accessibleContext);
597
}
598
return FALSE;
599
}
600
601
/**
602
* Gets the visible children of an AccessibleContext. Returns whether successful;
603
*
604
* Bug ID 4944762- getVisibleChildren for list-like components needed
605
*/
606
BOOL getVisibleChildren(long vmID, AccessibleContext accessibleContext, int startIndex,
607
VisibleChildrenInfo *visibleChildrenInfo) {
608
if (theWindowsAccessBridge != 0) {
609
return theWindowsAccessBridge->getVisibleChildren(vmID, accessibleContext, startIndex,
610
visibleChildrenInfo);
611
}
612
return FALSE;
613
}
614
615
/**
616
* Set the caret to a text position. Returns whether successful;
617
*
618
* Bug ID 4944770 - setCaretPosition method needed
619
*/
620
BOOL setCaretPosition(const long vmID, const AccessibleContext accessibleContext,
621
const int position) {
622
if (theWindowsAccessBridge != 0) {
623
return theWindowsAccessBridge->setCaretPosition(vmID, accessibleContext, position);
624
}
625
return FALSE;
626
}
627
628
// -------- Accessible Text methods -------------
629
630
BOOL getAccessibleTextInfo(long vmID, JOBJECT64 AccessibleContext,
631
AccessibleTextInfo *textInfo, jint x, jint y) {
632
if (theWindowsAccessBridge != 0) {
633
return theWindowsAccessBridge->getAccessibleTextInfo(
634
vmID,
635
AccessibleContext,
636
textInfo, x, y);
637
}
638
return FALSE;
639
}
640
641
BOOL getAccessibleTextItems(long vmID, JOBJECT64 AccessibleContext,
642
AccessibleTextItemsInfo *textItems, jint index) {
643
if (theWindowsAccessBridge != 0) {
644
return theWindowsAccessBridge->getAccessibleTextItems(
645
vmID,
646
AccessibleContext,
647
textItems, index);
648
}
649
return FALSE;
650
}
651
652
BOOL getAccessibleTextSelectionInfo(long vmID, JOBJECT64 AccessibleContext,
653
AccessibleTextSelectionInfo *selectionInfo) {
654
if (theWindowsAccessBridge != 0) {
655
return theWindowsAccessBridge->getAccessibleTextSelectionInfo(
656
vmID,
657
AccessibleContext,
658
selectionInfo);
659
}
660
return FALSE;
661
}
662
663
BOOL getAccessibleTextAttributes(long vmID, JOBJECT64 AccessibleContext,
664
jint index, AccessibleTextAttributesInfo *attributes) {
665
if (theWindowsAccessBridge != 0) {
666
return theWindowsAccessBridge->getAccessibleTextAttributes(
667
vmID,
668
AccessibleContext,
669
index, attributes);
670
}
671
return FALSE;
672
}
673
674
BOOL getAccessibleTextRect(long vmID, JOBJECT64 AccessibleContext,
675
AccessibleTextRectInfo *rectInfo, jint index) {
676
if (theWindowsAccessBridge != 0) {
677
return theWindowsAccessBridge->getAccessibleTextRect(
678
vmID,
679
AccessibleContext,
680
rectInfo, index);
681
}
682
return FALSE;
683
}
684
685
BOOL getCaretLocation(long vmID, JOBJECT64 AccessibleContext,
686
AccessibleTextRectInfo *rectInfo, jint index) {
687
if (theWindowsAccessBridge != 0) {
688
return theWindowsAccessBridge->getCaretLocation(vmID,
689
AccessibleContext,
690
rectInfo, index);
691
}
692
return FALSE;
693
}
694
695
int getEventsWaiting() {
696
if (theWindowsAccessBridge != 0) {
697
return theWindowsAccessBridge->getEventsWaiting();
698
}
699
return FALSE;
700
}
701
702
BOOL getAccessibleTextLineBounds(long vmID, JOBJECT64 AccessibleContext,
703
jint index, jint *startIndex, jint *endIndex) {
704
if (theWindowsAccessBridge != 0) {
705
return theWindowsAccessBridge->getAccessibleTextLineBounds(
706
vmID,
707
AccessibleContext,
708
index, startIndex, endIndex);
709
}
710
return FALSE;
711
}
712
713
BOOL getAccessibleTextRange(long vmID, JOBJECT64 AccessibleContext,
714
jint start, jint end, wchar_t *text, short len) {
715
if (theWindowsAccessBridge != 0) {
716
return theWindowsAccessBridge->getAccessibleTextRange(
717
vmID,
718
AccessibleContext,
719
start, end, text, len);
720
}
721
return FALSE;
722
}
723
724
725
// -------- Accessible Value methods -------------
726
727
BOOL getCurrentAccessibleValueFromContext(long vmID, JOBJECT64 AccessibleContext,
728
wchar_t *value, short len) {
729
if (theWindowsAccessBridge != 0) {
730
return theWindowsAccessBridge->getCurrentAccessibleValueFromContext(
731
vmID, AccessibleContext, value, len);
732
}
733
return FALSE;
734
}
735
736
BOOL getMaximumAccessibleValueFromContext(long vmID, JOBJECT64 AccessibleContext,
737
wchar_t *value, short len) {
738
if (theWindowsAccessBridge != 0) {
739
return theWindowsAccessBridge->getMaximumAccessibleValueFromContext(
740
vmID, AccessibleContext, value, len);
741
}
742
return FALSE;
743
}
744
745
BOOL getMinimumAccessibleValueFromContext(long vmID, JOBJECT64 AccessibleContext,
746
wchar_t *value, short len) {
747
if (theWindowsAccessBridge != 0) {
748
return theWindowsAccessBridge->getMinimumAccessibleValueFromContext(
749
vmID, AccessibleContext, value, len);
750
}
751
return FALSE;
752
}
753
754
// -------- Accessible Selection methods -------------
755
756
void addAccessibleSelectionFromContext(long vmID, JOBJECT64 AccessibleContext, int i) {
757
if (theWindowsAccessBridge != 0) {
758
theWindowsAccessBridge->addAccessibleSelectionFromContext(
759
vmID, AccessibleContext, i);
760
}
761
}
762
763
void clearAccessibleSelectionFromContext(long vmID, JOBJECT64 AccessibleContext) {
764
if (theWindowsAccessBridge != 0) {
765
theWindowsAccessBridge->clearAccessibleSelectionFromContext(
766
vmID, AccessibleContext);
767
}
768
}
769
770
JOBJECT64 getAccessibleSelectionFromContext(long vmID, JOBJECT64 AccessibleContext, int i) {
771
if (theWindowsAccessBridge != 0) {
772
return theWindowsAccessBridge->getAccessibleSelectionFromContext(
773
vmID, AccessibleContext, i);
774
}
775
return (JOBJECT64) 0;
776
}
777
778
int getAccessibleSelectionCountFromContext(long vmID, JOBJECT64 AccessibleContext) {
779
if (theWindowsAccessBridge != 0) {
780
return theWindowsAccessBridge->getAccessibleSelectionCountFromContext(
781
vmID, AccessibleContext);
782
}
783
return -1;
784
}
785
786
BOOL isAccessibleChildSelectedFromContext(long vmID, JOBJECT64 AccessibleContext, int i) {
787
if (theWindowsAccessBridge != 0) {
788
return theWindowsAccessBridge->isAccessibleChildSelectedFromContext(
789
vmID, AccessibleContext, i);
790
}
791
return FALSE;
792
}
793
794
void removeAccessibleSelectionFromContext(long vmID, JOBJECT64 AccessibleContext, int i) {
795
if (theWindowsAccessBridge != 0) {
796
theWindowsAccessBridge->removeAccessibleSelectionFromContext(
797
vmID, AccessibleContext, i);
798
}
799
}
800
801
void selectAllAccessibleSelectionFromContext(long vmID, JOBJECT64 AccessibleContext) {
802
if (theWindowsAccessBridge != 0) {
803
theWindowsAccessBridge->selectAllAccessibleSelectionFromContext(
804
vmID, AccessibleContext);
805
}
806
}
807
808
809
// -------- Event Handler methods -------------
810
811
#define SET_EVENT_FP(function, callbackFP) \
812
void function(callbackFP fp) { \
813
if (theWindowsAccessBridge != 0) { \
814
theWindowsAccessBridge->function(fp); \
815
} \
816
}
817
818
void setJavaShutdownFP(AccessBridge_JavaShutdownFP fp) {
819
if (theWindowsAccessBridge != 0) {
820
theWindowsAccessBridge->setJavaShutdownFP(fp);
821
}
822
}
823
824
SET_EVENT_FP(setPropertyChangeFP, AccessBridge_PropertyChangeFP)
825
SET_EVENT_FP(setFocusGainedFP, AccessBridge_FocusGainedFP)
826
SET_EVENT_FP(setFocusLostFP, AccessBridge_FocusLostFP)
827
SET_EVENT_FP(setCaretUpdateFP, AccessBridge_CaretUpdateFP)
828
SET_EVENT_FP(setMouseClickedFP, AccessBridge_MouseClickedFP)
829
SET_EVENT_FP(setMouseEnteredFP, AccessBridge_MouseEnteredFP)
830
SET_EVENT_FP(setMouseExitedFP, AccessBridge_MouseExitedFP)
831
SET_EVENT_FP(setMousePressedFP, AccessBridge_MousePressedFP)
832
SET_EVENT_FP(setMouseReleasedFP, AccessBridge_MouseReleasedFP)
833
SET_EVENT_FP(setMenuCanceledFP, AccessBridge_MenuCanceledFP)
834
SET_EVENT_FP(setMenuDeselectedFP, AccessBridge_MenuDeselectedFP)
835
SET_EVENT_FP(setMenuSelectedFP, AccessBridge_MenuSelectedFP)
836
SET_EVENT_FP(setPopupMenuCanceledFP, AccessBridge_PopupMenuCanceledFP)
837
SET_EVENT_FP(setPopupMenuWillBecomeInvisibleFP, AccessBridge_PopupMenuWillBecomeInvisibleFP)
838
SET_EVENT_FP(setPopupMenuWillBecomeVisibleFP, AccessBridge_PopupMenuWillBecomeVisibleFP)
839
840
SET_EVENT_FP(setPropertyNameChangeFP, AccessBridge_PropertyNameChangeFP)
841
SET_EVENT_FP(setPropertyDescriptionChangeFP, AccessBridge_PropertyDescriptionChangeFP)
842
SET_EVENT_FP(setPropertyStateChangeFP, AccessBridge_PropertyStateChangeFP)
843
SET_EVENT_FP(setPropertyValueChangeFP, AccessBridge_PropertyValueChangeFP)
844
SET_EVENT_FP(setPropertySelectionChangeFP, AccessBridge_PropertySelectionChangeFP)
845
SET_EVENT_FP(setPropertyTextChangeFP, AccessBridge_PropertyTextChangeFP)
846
SET_EVENT_FP(setPropertyCaretChangeFP, AccessBridge_PropertyCaretChangeFP)
847
SET_EVENT_FP(setPropertyVisibleDataChangeFP, AccessBridge_PropertyVisibleDataChangeFP)
848
SET_EVENT_FP(setPropertyChildChangeFP, AccessBridge_PropertyChildChangeFP)
849
SET_EVENT_FP(setPropertyActiveDescendentChangeFP, AccessBridge_PropertyActiveDescendentChangeFP)
850
851
SET_EVENT_FP(setPropertyTableModelChangeFP, AccessBridge_PropertyTableModelChangeFP)
852
853
#ifdef __cplusplus
854
}
855
#endif
856
857