Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/src/jdk.accessibility/windows/native/libjavaaccessbridge/JavaAccessBridge.h
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
* A DLL which is loaded by Java applications to handle communication
28
* between Java VMs purposes of Accessbility.
29
*/
30
31
#include <windows.h>
32
#include <jni.h>
33
34
#include "AccessBridgePackages.h"
35
#include "AccessBridgeATInstance.h"
36
#include "AccessBridgeJavaEntryPoints.h"
37
38
#ifndef __JavaAccessBridge_H__
39
#define __JavaAccessBridge_H__
40
41
42
extern "C" {
43
BOOL WINAPI DllMain(HINSTANCE hinstDll, DWORD fdwReason,
44
LPVOID lpvReserved);
45
void AppendToCallOutput(char *s);
46
BOOL APIENTRY AccessBridgeDialogProc(HWND hDlg, UINT message,
47
WPARAM wParam, LPARAM lParam);
48
}
49
50
/**
51
* The JavaAccessBridge class. The core of the Windows AT AccessBridge dll
52
*/
53
class JavaAccessBridge {
54
// for debugging
55
public:
56
// for debugging
57
HINSTANCE windowsInstance;
58
HWND dialogWindow;
59
AccessBridgeATInstance *ATs;
60
JavaVM *javaVM;
61
JNIEnv *windowsThreadJNIEnv; // for calls initiated from Windows
62
AccessBridgeJavaEntryPoints *javaThreadEntryPoints;
63
AccessBridgeJavaEntryPoints *windowsThreadEntryPoints;
64
jobject javaThreadABObject; // for calls initiated from Java
65
jobject windowsThreadABObject; // for calls initiated from Windows
66
67
public:
68
JavaAccessBridge(HINSTANCE hInstance);
69
~JavaAccessBridge();
70
void javaRun(JNIEnv *env, jobject obj);
71
BOOL initWindow();
72
73
// IPC with the Java AccessBridge DLL
74
void postHelloToWindowsDLLMsg(HWND destHwnd);
75
LRESULT MemoryMappedFileCreated(HWND srcHwnd, char *filename);
76
77
void sendPackage(char *buffer, int bufsize, HWND destHwnd);
78
void sendJavaEventPackage(char *buffer, int bufsize, long type);
79
void sendAccessibilityEventPackage(char *buffer, int bufsize, long type);
80
BOOL sendMemoryPackage(char *buffer, long bufsize, HWND destWindow);
81
LRESULT processPackage(char *buffer, int bufsize);
82
BOOL receiveMemoryPackage(HWND srcWindow, long bufsize);
83
void WindowsATDestroyed(HWND ATBridgeDLLWindow);
84
85
// Java VM object memory management
86
void releaseJavaObject(jobject object);
87
88
// Event handling methods
89
void addJavaEventNotification(jlong type, HWND DLLwindow);
90
void removeJavaEventNotification(jlong type, HWND DLLwindow);
91
void addAccessibilityEventNotification(jlong type, HWND DLLwindow);
92
void removeAccessibilityEventNotification(jlong type, HWND DLLwindow);
93
94
// Event firing methods
95
/*
96
void firePropertyChange(JNIEnv *env, jobject callingObj,
97
jobject propertyChangeEvent,
98
jobject source, jstring propertyName,
99
jstring oldValue, jstring newValue);
100
*/
101
102
void javaShutdown(JNIEnv *env, jobject callingObj);
103
104
void fireFocusGained(JNIEnv *env, jobject callingObj,
105
jobject focusEvent, jobject source);
106
void fireFocusLost(JNIEnv *env, jobject callingObj,
107
jobject focusEvent,jobject source);
108
void fireCaretUpdate(JNIEnv *env, jobject callingObj,
109
jobject caretEvent, jobject source);
110
void fireMouseClicked(JNIEnv *env, jobject callingObj,
111
jobject mouseEvent, jobject source);
112
void fireMouseEntered(JNIEnv *env, jobject callingObj,
113
jobject mouseEvent, jobject source);
114
void fireMouseExited(JNIEnv *env, jobject callingObj,
115
jobject mouseEvent, jobject source);
116
void fireMousePressed(JNIEnv *env, jobject callingObj,
117
jobject mouseEvent, jobject source);
118
void fireMouseReleased(JNIEnv *env, jobject callingObj,
119
jobject mouseEvent, jobject source);
120
void fireMenuCanceled(JNIEnv *env, jobject callingObj,
121
jobject menuEvent, jobject source);
122
void fireMenuDeselected(JNIEnv *env, jobject callingObj,
123
jobject menuEvent, jobject source);
124
void fireMenuSelected(JNIEnv *env, jobject callingObj,
125
jobject menuEvent, jobject source);
126
void firePopupMenuCanceled(JNIEnv *env, jobject callingObj,
127
jobject popupMenuEvent, jobject source);
128
void firePopupMenuWillBecomeInvisible(JNIEnv *env, jobject callingObj,
129
jobject popupMenuEvent, jobject source);
130
void firePopupMenuWillBecomeVisible(JNIEnv *env, jobject callingObj,
131
jobject popupMenuEvent, jobject source);
132
133
void firePropertyCaretChange(JNIEnv *env, jobject callingObj,
134
jobject event, jobject source,
135
jint oldValue, jint newValue);
136
void firePropertyDescriptionChange(JNIEnv *env, jobject callingObj,
137
jobject event, jobject source,
138
jstring oldValue, jstring newValue);
139
void firePropertyNameChange(JNIEnv *env, jobject callingObj,
140
jobject event, jobject source,
141
jstring oldValue, jstring newValue);
142
void firePropertySelectionChange(JNIEnv *env, jobject callingObj,
143
jobject event, jobject source);
144
void firePropertyStateChange(JNIEnv *env, jobject callingObj,
145
jobject event, jobject source,
146
jstring oldValue, jstring newValue);
147
void firePropertyTextChange(JNIEnv *env, jobject callingObj,
148
jobject event, jobject source);
149
void firePropertyValueChange(JNIEnv *env, jobject callingObj,
150
jobject event, jobject source,
151
jstring oldValue, jstring newValue);
152
void firePropertyVisibleDataChange(JNIEnv *env, jobject callingObj,
153
jobject event, jobject source);
154
void firePropertyChildChange(JNIEnv *env, jobject callingObj,
155
jobject event, jobject source,
156
jobject oldValue, jobject newValue);
157
void firePropertyActiveDescendentChange(JNIEnv *env, jobject callingObj,
158
jobject event, jobject source,
159
jobject oldValue, jobject newValue);
160
161
void firePropertyTableModelChange(JNIEnv *env, jobject callingObj,
162
jobject event, jobject source,
163
jstring oldValue, jstring newValue);
164
};
165
166
167
#endif
168
169