Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/java/awt/Modal/helpers/TestDialog.java
41152 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 java.awt.event.*;
27
28
import static jdk.test.lib.Asserts.*;
29
30
31
32
public class TestDialog extends Dialog implements ActionListener,
33
FocusListener, WindowFocusListener, WindowListener {
34
35
public Button closeButton, openButton, dummyButton;
36
37
public Flag closeClicked, openClicked, dummyClicked;
38
public Flag closeGained, openGained, dummyGained;
39
public Flag closeLost, openLost, dummyLost;
40
public Flag focusGained, focusLost;
41
public Flag activated;
42
43
public Panel topPanel;
44
45
public static int delay = 500;
46
public static int keyDelay = 100;
47
48
public TestDialog(Frame frame) {
49
super(frame);
50
initializeGUI();
51
}
52
53
public TestDialog(Dialog dialog) {
54
super(dialog);
55
initializeGUI();
56
}
57
58
public void resetStatus() {
59
activated.reset();
60
focusGained.reset();
61
closeGained.reset();
62
openGained.reset();
63
closeClicked.reset();
64
openClicked.reset();
65
}
66
67
private void initFlags() {
68
closeClicked = new Flag();
69
openClicked = new Flag();
70
dummyClicked = new Flag();
71
closeGained = new Flag();
72
openGained = new Flag();
73
dummyGained = new Flag();
74
closeLost = new Flag();
75
openLost = new Flag();
76
dummyLost = new Flag();
77
focusGained = new Flag();
78
focusLost = new Flag();
79
activated = new Flag();
80
}
81
82
private void initializeGUI() {
83
84
initFlags();
85
this.setTitle("Dialog");
86
87
this.addWindowFocusListener(this);
88
this.addWindowListener(this);
89
90
this.setLayout(new GridLayout(3, 1));
91
92
topPanel = new Panel();
93
topPanel.setFocusable(false);
94
this.add(topPanel);
95
96
Panel p = new Panel();
97
p.setLayout(new GridLayout(1, 3));
98
99
closeButton = new Button("Close");
100
closeButton.addActionListener(this);
101
closeButton.addFocusListener(this);
102
103
openButton = new Button("Open");
104
openButton.addActionListener(this);
105
openButton.addFocusListener(this);
106
107
dummyButton = new Button("Dummy");
108
dummyButton.addActionListener(this);
109
dummyButton.addFocusListener(this);
110
111
p.add(closeButton);
112
p.add(openButton);
113
p.add(dummyButton);
114
115
this.add(p);
116
117
Panel bottomPanel = new Panel();
118
bottomPanel.setFocusable(false);
119
this.add(bottomPanel);
120
121
setSize(150, 150);
122
}
123
124
public void doOpenAction() {}
125
public void doCloseAction() {}
126
public void doDummyAction() {}
127
128
@Override
129
public void actionPerformed(ActionEvent event) {
130
if (closeButton.equals(event.getSource())) {
131
closeClicked.flagTriggered();
132
doCloseAction();
133
} else if (openButton.equals(event.getSource())) {
134
openClicked.flagTriggered();
135
doOpenAction();
136
} else if (dummyButton.equals(event.getSource())) {
137
dummyClicked.flagTriggered();
138
doDummyAction();
139
}
140
}
141
142
@Override
143
public void focusGained(FocusEvent event) {
144
if (closeButton.equals(event.getSource())) {
145
closeGained.flagTriggered();
146
} else if (openButton.equals(event.getSource())) {
147
openGained.flagTriggered();
148
} else if (dummyButton.equals(event.getSource())) {
149
dummyGained.flagTriggered();
150
}
151
}
152
153
@Override
154
public void focusLost(FocusEvent event) {
155
if (closeButton.equals(event.getSource())) {
156
closeLost.flagTriggered();
157
} else if (openButton.equals(event.getSource())) {
158
openLost.flagTriggered();
159
} else if (dummyButton.equals(event.getSource())) {
160
dummyLost.flagTriggered();
161
}
162
}
163
164
@Override
165
public void windowGainedFocus(WindowEvent event) {
166
focusGained.flagTriggered();
167
}
168
169
@Override
170
public void windowLostFocus(WindowEvent event) {
171
focusLost.flagTriggered();
172
}
173
174
@Override
175
public void windowActivated(WindowEvent e) {
176
activated.flagTriggered();
177
}
178
179
@Override
180
public void windowClosed(WindowEvent e) {
181
}
182
183
@Override
184
public void windowClosing(WindowEvent e) {
185
assertTrue(false, "user closed window");
186
}
187
188
@Override
189
public void windowDeactivated(WindowEvent e) {}
190
@Override
191
public void windowDeiconified(WindowEvent e) {}
192
@Override
193
public void windowIconified(WindowEvent e) {}
194
@Override
195
public void windowOpened(WindowEvent e) {}
196
197
public void clickButton(Button b, ExtendedRobot robot) {
198
199
try {
200
Flag.waitTillShown(b);
201
} catch (InterruptedException e) {}
202
203
if ((closeButton.equals(b) || openButton.equals(b) ||
204
dummyButton.equals(b)) && robot != null) {
205
robot.mouseMove((int) b.getLocationOnScreen().x + b.getSize().width / 2,
206
(int) b.getLocationOnScreen().y + b.getSize().height / 2);
207
robot.delay(delay);
208
robot.click();
209
robot.delay(delay);
210
}
211
}
212
213
public void clickOpenButton(ExtendedRobot robot) throws Exception {
214
clickOpenButton(robot, true, "");
215
}
216
217
public void clickOpenButton(ExtendedRobot robot,
218
boolean refState,
219
String message) throws Exception {
220
openClicked.reset();
221
clickButton(openButton, robot);
222
openClicked.waitForFlagTriggered();
223
224
String msg = "Clicking the dialog Open button " + (refState ?
225
"did not trigger an action." :
226
"triggered an action when it should not.");
227
assertEQ(openClicked.flag(), refState, msg + " " + message);
228
}
229
230
public void clickCloseButton(ExtendedRobot robot) throws Exception {
231
clickCloseButton(robot, true, "");
232
}
233
234
public void clickCloseButton(ExtendedRobot robot,
235
boolean refState,
236
String message) throws Exception {
237
closeClicked.reset();
238
clickButton(closeButton, robot);
239
closeClicked.waitForFlagTriggered();
240
241
String msg = "Clicking the dialog Close button " + (refState ?
242
"did not trigger an action." :
243
"triggered an action when it should not.");
244
assertEQ(closeClicked.flag(), refState, msg + " " + message);
245
}
246
247
public void clickDummyButton(ExtendedRobot robot) throws Exception {
248
clickDummyButton(robot, Flag.ATTEMPTS);
249
}
250
251
public void clickDummyButton(ExtendedRobot robot,
252
int attempts) throws Exception {
253
clickDummyButton(robot, attempts, true, "");
254
}
255
256
public void clickDummyButton(ExtendedRobot robot,
257
int attempts,
258
boolean refState,
259
String message) throws Exception {
260
dummyClicked.reset();
261
clickButton(dummyButton, robot);
262
dummyClicked.waitForFlagTriggered(attempts);
263
264
String msg = "Clicking the dialog Dummy button " + (refState ?
265
"did not trigger an action." :
266
"triggered an action when it should not.");
267
assertEQ(dummyClicked.flag(), refState, msg + " " + message);
268
}
269
270
271
private void clickInside(ExtendedRobot robot) throws Exception {
272
273
try {
274
Flag.waitTillShown(topPanel);
275
} catch (InterruptedException e) {}
276
277
if (robot != null) {
278
robot.mouseMove((int) topPanel.getLocationOnScreen().x + topPanel.getSize().width / 2,
279
(int) topPanel.getLocationOnScreen().y + topPanel.getSize().height / 2);
280
robot.delay(delay);
281
robot.click();
282
robot.delay(delay);
283
}
284
}
285
286
public void transferFocusToDialog(ExtendedRobot robot,
287
String message,
288
Button b) throws Exception {
289
focusGained.reset();
290
clickInside(robot);
291
focusGained.waitForFlagTriggered();
292
assertTrue(focusGained.flag(),
293
"clicking inside the Dialog did not make it focused. " + message);
294
295
robot.waitForIdle(delay);
296
if (b != null) {
297
assertTrue(b.hasFocus(), "button " + b.getLabel() +
298
" did not gain focus when Dialog brought to top");
299
}
300
}
301
302
public void transferFocusToBlockedDialog(ExtendedRobot robot,
303
String message,
304
Button b) throws Exception {
305
focusGained.reset();
306
clickInside(robot);
307
robot.waitForIdle(delay);
308
309
assertFalse(focusGained.flag(),
310
"clicking inside a blocked Dialog made it focused. " + message);
311
312
robot.waitForIdle(delay);
313
if (b != null) {
314
assertFalse(b.hasFocus(),
315
"button " + b.getLabel() + " present in a blocked dialog gained focus");
316
}
317
}
318
319
public void checkBlockedDialog(ExtendedRobot robot,
320
String message) throws Exception {
321
dummyGained.reset();
322
dummyClicked.reset();
323
focusGained.reset();
324
325
clickButton(dummyButton, robot);
326
327
robot.waitForIdle(delay);
328
329
assertFalse(dummyClicked.flag(),
330
"DummyButton on blocked Dialog triggered action when clicked. " + message);
331
332
assertFalse(dummyGained.flag(),
333
"DummyButton on blocked Dialog gained focus when clicked. " + message);
334
335
assertFalse(focusGained.flag(),
336
"A blocked Dialog gained focus when component clicked. " + message);
337
}
338
339
public void checkUnblockedDialog(ExtendedRobot robot,
340
String message) throws Exception {
341
dummyGained.reset();
342
dummyClicked.reset();
343
clickButton(dummyButton, robot);
344
345
dummyGained.waitForFlagTriggered();
346
assertTrue(dummyGained.flag(),
347
"DummyButton on Dialog did not gain focus when clicked. " + message);
348
349
dummyClicked.waitForFlagTriggered();
350
assertTrue(dummyClicked.flag(),
351
"DummyButton on Dialog did not trigger action when clicked. " + message);
352
353
closeGained.reset();
354
robot.type(KeyEvent.VK_TAB);
355
356
closeGained.waitForFlagTriggered();
357
assertTrue(closeGained.flag(),
358
"Tab navigation on Dialog did not happen properly. First " +
359
"button did not gain focus. " + message);
360
}
361
362
public void checkCloseButtonFocusGained(boolean refState) {
363
checkCloseButtonFocusGained(refState, Flag.ATTEMPTS);
364
}
365
366
public void checkCloseButtonFocusGained(boolean refState, int attempts) {
367
try {
368
closeGained.waitForFlagTriggered(attempts);
369
} catch (InterruptedException e) {}
370
371
String msg = "dialog Close button ";
372
msg += (refState ? "did not gain focus" :
373
"gained focus when it should not");
374
375
assertTrue(closeGained.flag() == refState, msg);
376
}
377
378
public void checkOpenButtonFocusGained(boolean refState) {
379
try {
380
openGained.waitForFlagTriggered();
381
} catch (InterruptedException e) {}
382
383
String msg = "dialog Open button ";
384
msg += (refState ? "did not gain focus" :
385
"gained focus when it should not");
386
387
assertTrue(openGained.flag() == refState, msg);
388
}
389
390
public void checkOpenButtonFocusLost(boolean refState) {
391
checkOpenButtonFocusLost(refState, Flag.ATTEMPTS);
392
}
393
394
public void checkOpenButtonFocusLost(boolean refState, int attempts) {
395
try {
396
openLost.waitForFlagTriggered(attempts);
397
} catch (InterruptedException e) {}
398
399
String msg = "dialog Open button ";
400
msg += (refState ? "did not lose focus" :
401
"lost focus when it should not");
402
403
assertTrue(openLost.flag() == refState, msg);
404
}
405
}
406
407