Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/java/awt/Modal/ToFront/FrameToFrontModalBlockedTest.java
41153 views
1
/*
2
* Copyright (c) 2007, 2014, 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
import java.awt.*;
25
26
27
public class FrameToFrontModalBlockedTest {
28
29
private volatile CustomDialog dialog;
30
private volatile TestFrame leftFrame, rightFrame;
31
private volatile Dialog hiddenDialog;
32
private volatile Frame hiddenFrame;
33
34
private static final int delay = 500;
35
private final ExtendedRobot robot;
36
37
public enum DialogOwner {HIDDEN_DIALOG, NULL_DIALOG, HIDDEN_FRAME, NULL_FRAME, FRAME};
38
39
private DialogOwner owner;
40
boolean setModal;
41
42
Dialog.ModalityType modalityType;
43
44
private FrameToFrontModalBlockedTest(Dialog.ModalityType modType,
45
boolean modal,
46
DialogOwner o) throws Exception {
47
modalityType = modType;
48
setModal = modal;
49
owner = o;
50
51
robot = new ExtendedRobot();
52
EventQueue.invokeLater(this::createGUI);
53
}
54
55
public FrameToFrontModalBlockedTest(Dialog.ModalityType modalityType,
56
DialogOwner o) throws Exception {
57
this(modalityType, false, o);
58
}
59
60
public FrameToFrontModalBlockedTest(DialogOwner o) throws Exception {
61
this(null, true, o);
62
}
63
64
private void createGUI() {
65
66
leftFrame = new TestFrame();
67
leftFrame.setSize(200, 100);
68
leftFrame.setLocation(50, 50);
69
leftFrame.setVisible(true);
70
71
switch (owner) {
72
case HIDDEN_DIALOG:
73
hiddenDialog = new Dialog((Frame) null);
74
dialog = new CustomDialog(hiddenDialog);
75
break;
76
case NULL_DIALOG:
77
dialog = new CustomDialog((Dialog) null);
78
break;
79
case HIDDEN_FRAME:
80
hiddenFrame = new Frame();
81
dialog = new CustomDialog(hiddenFrame);
82
break;
83
case NULL_FRAME:
84
dialog = new CustomDialog((Frame) null);
85
break;
86
case FRAME:
87
dialog = new CustomDialog(leftFrame);
88
break;
89
}
90
91
if (setModal) {
92
dialog.setModal(true);
93
modalityType = dialog.getModalityType();
94
} else if (modalityType != null) {
95
dialog.setModalityType(modalityType);
96
}
97
98
dialog.setSize(200, 100);
99
dialog.setLocation(230, 50);
100
101
rightFrame = new TestFrame();
102
rightFrame.setSize(200, 100);
103
rightFrame.setLocation(280, 50);
104
105
if (setModal ||
106
(modalityType == Dialog.ModalityType.APPLICATION_MODAL)) {
107
rightFrame.setModalExclusionType(
108
Dialog.ModalExclusionType.APPLICATION_EXCLUDE);
109
}
110
111
if (modalityType == Dialog.ModalityType.TOOLKIT_MODAL) {
112
rightFrame.setModalExclusionType(
113
Dialog.ModalExclusionType.TOOLKIT_EXCLUDE);
114
}
115
116
dialog.setVisible(true);
117
}
118
119
private void blockingTest() throws Exception {
120
121
dialog.clickOpenButton(robot);
122
robot.waitForIdle(delay);
123
124
rightFrame.clickCloseButton(robot);
125
robot.waitForIdle(delay);
126
127
EventQueue.invokeAndWait(() -> { leftFrame.toFront(); });
128
robot.waitForIdle(delay);
129
130
rightFrame.clickDummyButton(robot);
131
robot.waitForIdle(delay);
132
133
EventQueue.invokeAndWait(() -> { leftFrame.toFront(); });
134
robot.waitForIdle(delay);
135
136
leftFrame.clickDummyButton(robot, 7, false,
137
"Calling toFront for Frame blocked by " + dialog.getModalityType() +
138
" dialog brought it to the top of the modal dialog.");
139
robot.waitForIdle(delay);
140
}
141
142
private void docModalTest() throws Exception {
143
144
if (owner == DialogOwner.FRAME) { blockingTest(); }
145
else {
146
EventQueue.invokeAndWait(() -> { leftFrame.toFront(); });
147
robot.waitForIdle(delay);
148
149
leftFrame.clickDummyButton(robot);
150
robot.waitForIdle(delay);
151
152
EventQueue.invokeAndWait(() -> { dialog.toFront(); });
153
robot.waitForIdle(delay);
154
155
dialog.clickDummyButton(robot);
156
robot.waitForIdle(delay);
157
}
158
159
}
160
161
162
public void doTest() throws Exception {
163
164
try {
165
166
robot.waitForIdle(delay);
167
168
switch (modalityType) {
169
case APPLICATION_MODAL:
170
case TOOLKIT_MODAL:
171
blockingTest();
172
break;
173
case DOCUMENT_MODAL:
174
docModalTest();
175
break;
176
default:
177
throw new RuntimeException(
178
"improper modality type, please do not use it for this test");
179
}
180
181
} finally {
182
EventQueue.invokeAndWait(this::closeAll);
183
}
184
}
185
186
private void closeAll() {
187
if (dialog != null) { dialog.dispose(); }
188
if (leftFrame != null) { leftFrame.dispose(); }
189
if (rightFrame != null) { rightFrame.dispose(); }
190
if (hiddenDialog != null) { hiddenDialog.dispose(); }
191
if (hiddenFrame != null) { hiddenFrame.dispose(); }
192
}
193
194
195
class CustomDialog extends TestDialog {
196
197
public CustomDialog(Dialog d) { super(d); }
198
public CustomDialog(Frame f) { super(f); }
199
200
@Override
201
public void doOpenAction() {
202
if (rightFrame != null) {
203
rightFrame.setVisible(true);
204
}
205
}
206
}
207
}
208
209