Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/java/awt/Modal/ModalFocusTransferTests/FocusTransferWDFTest.java
41153 views
1
/*
2
* Copyright (c) 2007, 2018, 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.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
24
25
import java.awt.*;
26
import static jdk.test.lib.Asserts.*;
27
28
// WDF: Window -> Dialog -> Frame
29
public class FocusTransferWDFTest {
30
31
class CustomDialog extends TestDialog {
32
33
public CustomDialog(Frame f) {
34
super(f);
35
}
36
37
public CustomDialog(Dialog d) {
38
super(d);
39
}
40
41
@Override
42
public void doOpenAction() {
43
if (frame != null) {
44
frame.setVisible(true);
45
}
46
}
47
48
@Override
49
public void doCloseAction() {
50
this.dispose();
51
}
52
}
53
54
class CustomFrame extends TestFrame {
55
56
@Override
57
public void doCloseAction() {
58
this.dispose();
59
}
60
}
61
62
class CustomWindow extends TestWindow {
63
64
public CustomWindow(Frame f) {
65
super(f);
66
}
67
68
@Override
69
public void doOpenAction() {
70
if (dialog != null) {
71
dialog.setVisible(true);
72
}
73
}
74
}
75
76
77
private TestDialog dialog;
78
private TestFrame frame;
79
private TestWindow window;
80
81
private Frame parentFrame;
82
83
private static final int delay = 1000;
84
85
private final ExtendedRobot robot;
86
87
private Dialog.ModalityType modalityType;
88
89
public enum DialogParent {FRAME, NULL_DIALOG};
90
private DialogParent dialogParent;
91
92
public enum WindowParent {FRAME, NEW_FRAME};
93
private WindowParent windowParent;
94
95
96
FocusTransferWDFTest(Dialog.ModalityType modType,
97
DialogParent dlgParent,
98
WindowParent winParent) throws Exception {
99
100
modalityType = modType;
101
dialogParent = dlgParent;
102
windowParent = winParent;
103
104
robot = new ExtendedRobot();
105
EventQueue.invokeLater( this::createGUI );
106
}
107
108
private void createGUI() {
109
110
frame = new CustomFrame();
111
frame.setLocation(50, 50);
112
113
switch (dialogParent) {
114
case FRAME:
115
dialog = new CustomDialog(frame);
116
break;
117
case NULL_DIALOG:
118
dialog = new CustomDialog((Dialog) null);
119
break;
120
}
121
assertTrue(dialog != null, "error: null dialog");
122
123
if (modalityType == null) {
124
modalityType = Dialog.ModalityType.MODELESS;
125
} else {
126
dialog.setModalityType(modalityType);
127
}
128
129
dialog.setLocation(250, 50);
130
131
switch (windowParent) {
132
case FRAME:
133
window = new CustomWindow(frame);
134
break;
135
case NEW_FRAME:
136
parentFrame = new Frame();
137
window = new CustomWindow(parentFrame);
138
break;
139
}
140
assertTrue(window != null, "error: null window");
141
142
window.setLocation(450, 50);
143
window.setVisible(true);
144
}
145
146
private void closeAll() {
147
if (dialog != null) { dialog.dispose(); }
148
if ( frame != null) { frame.dispose(); }
149
if (window != null) { window.dispose(); }
150
151
if (parentFrame != null) { parentFrame.dispose(); }
152
}
153
154
private void ModalTest() throws Exception {
155
frame.checkCloseButtonFocusGained(false, 10);
156
dialog.checkOpenButtonFocusLost(false, 10);
157
158
dialog.clickCloseButton(robot);
159
robot.waitForIdle(delay);
160
161
frame.checkCloseButtonFocusGained(true);
162
163
window.openGained.reset();
164
165
frame.clickCloseButton(robot);
166
robot.waitForIdle(delay);
167
}
168
169
public void doTest() throws Exception {
170
171
try {
172
173
robot.waitForIdle(delay);
174
175
window.checkCloseButtonFocusGained(false, 10);
176
177
window.clickOpenButton(robot);
178
robot.waitForIdle(delay);
179
180
dialog.checkCloseButtonFocusGained(true);
181
window.checkOpenButtonFocusLost(false, 10);
182
183
dialog.clickOpenButton(robot);
184
robot.waitForIdle(delay);
185
186
switch (modalityType) {
187
case APPLICATION_MODAL:
188
ModalTest();
189
if (windowParent == WindowParent.FRAME) {
190
assertFalse(window.isVisible(),
191
"window shouldn't be visible");
192
} else { // WindowParent.NEW_FRAME
193
window.checkOpenButtonFocusGained(false, 10);
194
}
195
196
break;
197
198
case DOCUMENT_MODAL:
199
if (dialogParent == DialogParent.FRAME) {
200
ModalTest();
201
if (windowParent == WindowParent.FRAME) { // 10
202
assertFalse(window.isVisible(),
203
"window shouldn't be visible");
204
} else { // WindowParent.NEW_FRAME
205
window.checkOpenButtonFocusGained(false, 10);
206
}
207
} else { // DialogParent.NULL_DIALOG
208
frame.checkCloseButtonFocusGained(true);
209
dialog.checkOpenButtonFocusLost(true);
210
211
dialog.openGained.reset();
212
213
frame.clickCloseButton(robot);
214
robot.waitForIdle(delay);
215
216
dialog.checkOpenButtonFocusGained(true);
217
218
window.openGained.reset();
219
220
dialog.clickCloseButton(robot);
221
robot.waitForIdle(delay);
222
223
window.checkOpenButtonFocusGained(false, 10);
224
}
225
break;
226
227
case MODELESS:
228
229
frame.checkCloseButtonFocusGained(true);
230
dialog.checkOpenButtonFocusLost(true);
231
232
dialog.openGained.reset();
233
234
frame.clickCloseButton(robot);
235
robot.waitForIdle(delay);
236
237
if (dialogParent == DialogParent.NULL_DIALOG) {
238
dialog.checkOpenButtonFocusGained(true);
239
240
window.openGained.reset();
241
242
dialog.clickCloseButton(robot);
243
robot.waitForIdle(delay);
244
245
window.checkOpenButtonFocusGained(false, 10);
246
} else {
247
assertFalse(dialog.isVisible(),
248
"dialog shouldn't be visible");
249
250
if (windowParent == WindowParent.FRAME) {
251
assertFalse(window.isVisible(),
252
"window shouldn't be visible");
253
}
254
}
255
256
break;
257
}
258
259
} catch (Exception e) {
260
261
// make screenshot before exit
262
Rectangle rect = new Rectangle(0, 0, 650, 250);
263
java.awt.image.BufferedImage img = robot.createScreenCapture(rect);
264
javax.imageio.ImageIO.write(img, "jpg", new java.io.File("NOK.jpg"));
265
266
throw e;
267
}
268
269
robot.waitForIdle(delay);
270
EventQueue.invokeAndWait(this::closeAll);
271
}
272
}
273
274