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 class to manage firing Accessibility events to Windows AT
28  */
29 
30 #ifndef __AccessBridgeEventHandler_H__
31 #define __AccessBridgeEventHandler_H__
32 
33 #include "AccessBridgeCallbacks.h"
34 #include "AccessBridgePackages.h"
35 
36 class WinAccessBridge;
37 
38 class AccessBridgeEventHandler {
39         long javaEventMask;
40         long accessibilityEventMask;
41 
42         AccessBridge_PropertyChangeFP propertyChangeFP;
43         AccessBridge_JavaShutdownFP javaShutdownFP;
44         AccessBridge_FocusGainedFP focusGainedFP;
45         AccessBridge_FocusLostFP focusLostFP;
46         AccessBridge_CaretUpdateFP caretUpdateFP;
47         AccessBridge_MouseClickedFP mouseClickedFP;
48         AccessBridge_MouseEnteredFP mouseEnteredFP;
49         AccessBridge_MouseExitedFP mouseExitedFP;
50         AccessBridge_MousePressedFP mousePressedFP;
51         AccessBridge_MouseReleasedFP mouseReleasedFP;
52         AccessBridge_MenuCanceledFP menuCanceledFP;
53         AccessBridge_MenuDeselectedFP menuDeselectedFP;
54         AccessBridge_MenuSelectedFP menuSelectedFP;
55         AccessBridge_PopupMenuCanceledFP popupMenuCanceledFP;
56         AccessBridge_PopupMenuWillBecomeInvisibleFP popupMenuWillBecomeInvisibleFP;
57         AccessBridge_PopupMenuWillBecomeVisibleFP popupMenuWillBecomeVisibleFP;
58 
59     AccessBridge_PropertyNameChangeFP propertyNameChangeFP;
60     AccessBridge_PropertyDescriptionChangeFP propertyDescriptionChangeFP;
61     AccessBridge_PropertyStateChangeFP propertyStateChangeFP;
62     AccessBridge_PropertyValueChangeFP propertyValueChangeFP;
63     AccessBridge_PropertySelectionChangeFP propertySelectionChangeFP;
64     AccessBridge_PropertyTextChangeFP propertyTextChangeFP;
65     AccessBridge_PropertyCaretChangeFP propertyCaretChangeFP;
66     AccessBridge_PropertyVisibleDataChangeFP propertyVisibleDataChangeFP;
67     AccessBridge_PropertyChildChangeFP propertyChildChangeFP;
68     AccessBridge_PropertyActiveDescendentChangeFP propertyActiveDescendentChangeFP;
69 
70         AccessBridge_PropertyTableModelChangeFP propertyTableModelChangeFP;
71 
72 
73 
74 public:
75         AccessBridgeEventHandler();
76         ~AccessBridgeEventHandler();
getJavaEventMask()77         long getJavaEventMask() {return javaEventMask;};
getAccessibilityEventMask()78         long getAccessibilityEventMask() {return accessibilityEventMask;};
79 
80         // ------- Registry methods
81         void setPropertyChangeFP(AccessBridge_PropertyChangeFP fp, WinAccessBridge *wab);
82         void setJavaShutdownFP(AccessBridge_JavaShutdownFP fp, WinAccessBridge *wab);
83         void setFocusGainedFP(AccessBridge_FocusGainedFP fp, WinAccessBridge *wab);
84         void setFocusLostFP(AccessBridge_FocusLostFP fp, WinAccessBridge *wab);
85         void setCaretUpdateFP(AccessBridge_CaretUpdateFP fp, WinAccessBridge *wab);
86         void setMouseClickedFP(AccessBridge_MouseClickedFP fp, WinAccessBridge *wab);
87         void setMouseEnteredFP(AccessBridge_MouseEnteredFP fp, WinAccessBridge *wab);
88         void setMouseExitedFP(AccessBridge_MouseExitedFP fp, WinAccessBridge *wab);
89         void setMousePressedFP(AccessBridge_MousePressedFP fp, WinAccessBridge *wab);
90         void setMouseReleasedFP(AccessBridge_MouseReleasedFP fp, WinAccessBridge *wab);
91         void setMenuCanceledFP(AccessBridge_MenuCanceledFP fp, WinAccessBridge *wab);
92         void setMenuDeselectedFP(AccessBridge_MenuDeselectedFP fp, WinAccessBridge *wab);
93         void setMenuSelectedFP(AccessBridge_MenuSelectedFP fp, WinAccessBridge *wab);
94         void setPopupMenuCanceledFP(AccessBridge_PopupMenuCanceledFP fp, WinAccessBridge *wab);
95         void setPopupMenuWillBecomeInvisibleFP(AccessBridge_PopupMenuWillBecomeInvisibleFP fp,
96                                                WinAccessBridge *wab);
97         void setPopupMenuWillBecomeVisibleFP(AccessBridge_PopupMenuWillBecomeVisibleFP fp,
98                                              WinAccessBridge *wab);
99 
100         void setPropertyNameChangeFP(AccessBridge_PropertyNameChangeFP fp, WinAccessBridge *wab);
101         void setPropertyDescriptionChangeFP(AccessBridge_PropertyDescriptionChangeFP fp,
102                                             WinAccessBridge *wab);
103         void setPropertyStateChangeFP(AccessBridge_PropertyStateChangeFP fp, WinAccessBridge *wab);
104         void setPropertyValueChangeFP(AccessBridge_PropertyValueChangeFP fp, WinAccessBridge *wab);
105         void setPropertySelectionChangeFP(AccessBridge_PropertySelectionChangeFP fp,
106                                           WinAccessBridge *wab);
107         void setPropertyTextChangeFP(AccessBridge_PropertyTextChangeFP fp, WinAccessBridge *wab);
108         void setPropertyCaretChangeFP(AccessBridge_PropertyCaretChangeFP fp, WinAccessBridge *wab);
109         void setPropertyVisibleDataChangeFP(AccessBridge_PropertyVisibleDataChangeFP fp,
110                                             WinAccessBridge *wab);
111         void setPropertyChildChangeFP(AccessBridge_PropertyChildChangeFP fp, WinAccessBridge *wab);
112         void setPropertyActiveDescendentChangeFP(AccessBridge_PropertyActiveDescendentChangeFP fp,
113                                                  WinAccessBridge *wab);
114 
115         void setPropertyTableModelChangeFP(AccessBridge_PropertyTableModelChangeFP fp,
116                                            WinAccessBridge *wab);
117 
118         // ------- Event notification methods
119         void firePropertyChange(long vmID, JOBJECT64 event, JOBJECT64 source,
120                                 wchar_t *property, wchar_t *oldName, wchar_t *newName);
121         void fireJavaShutdown(long vmID);
122         void fireFocusGained(long vmID, JOBJECT64 event, JOBJECT64 source);
123         void fireFocusLost(long vmID, JOBJECT64 event, JOBJECT64 source);
124         void fireCaretUpdate(long vmID, JOBJECT64 event, JOBJECT64 source);
125         void fireMouseClicked(long vmID, JOBJECT64 event, JOBJECT64 source);
126         void fireMouseEntered(long vmID, JOBJECT64 event, JOBJECT64 source);
127         void fireMouseExited(long vmID, JOBJECT64 event, JOBJECT64 source);
128         void fireMousePressed(long vmID, JOBJECT64 event, JOBJECT64 source);
129         void fireMouseReleased(long vmID, JOBJECT64 event, JOBJECT64 source);
130         void fireMenuCanceled(long vmID, JOBJECT64 event, JOBJECT64 source);
131         void fireMenuDeselected(long vmID, JOBJECT64 event, JOBJECT64 source);
132         void fireMenuSelected(long vmID, JOBJECT64 event, JOBJECT64 source);
133         void firePopupMenuCanceled(long vmID, JOBJECT64 event, JOBJECT64 source);
134         void firePopupMenuWillBecomeInvisible(long vmID, JOBJECT64 event, JOBJECT64 source);
135         void firePopupMenuWillBecomeVisible(long vmID, JOBJECT64 event, JOBJECT64 source);
136 
137         void firePropertyNameChange(long vmID, JOBJECT64 event, JOBJECT64 source,
138                                                         wchar_t *oldName, wchar_t *newName);
139         void firePropertyDescriptionChange(long vmID, JOBJECT64 event, JOBJECT64 source,
140                                                                wchar_t *oldDescription, wchar_t *newDescription);
141         void firePropertyStateChange(long vmID, JOBJECT64 event, JOBJECT64 source,
142                                                          wchar_t *oldState, wchar_t *newState);
143         void firePropertyValueChange(long vmID, JOBJECT64 event, JOBJECT64 source,
144                                                          wchar_t *oldValue, wchar_t *newValue);
145         void firePropertySelectionChange(long vmID, JOBJECT64 event, JOBJECT64 source);
146         void firePropertyTextChange(long vmID, JOBJECT64 event, JOBJECT64 source);
147         void firePropertyCaretChange(long vmID, JOBJECT64 event, JOBJECT64 source,
148                                                          int oldPosition, int newPosition);
149         void firePropertyVisibleDataChange(long vmID, JOBJECT64 event, JOBJECT64 source);
150         void firePropertyChildChange(long vmID, JOBJECT64 event, JOBJECT64 source,
151                                                          JOBJECT64 oldChild, JOBJECT64 newChild);
152         void firePropertyActiveDescendentChange(long vmID, JOBJECT64 event, JOBJECT64 source,
153                                                                     JOBJECT64 oldActiveDescendent, JOBJECT64 newActiveDescendent);
154 
155         void firePropertyTableModelChange(long vmID, JOBJECT64 event, JOBJECT64 source,
156                                                               wchar_t *oldValue, wchar_t *newValue);
157 
158 };
159 
160 
161 #endif
162