Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/test/java/awt/Focus/ActualFocusedWindowTest/ActualFocusedWindowRetaining.java
48070 views
1
/*
2
* Copyright (c) 2008, 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
@test
26
@bug 4823903
27
@summary Tests actual focused window retaining.
28
@author Anton.Tarasov: area=awt.focus
29
@library ../../regtesthelpers
30
@build Util
31
@run main ActualFocusedWindowRetaining
32
*/
33
34
import java.awt.*;
35
import java.awt.event.*;
36
import java.lang.reflect.*;
37
import java.applet.*;
38
import test.java.awt.regtesthelpers.Util;
39
40
public class ActualFocusedWindowRetaining extends Applet {
41
public static Frame frame = new Frame("Other Frame");
42
public static Frame owner = new Frame("Test Frame");
43
public static Button otherButton1 = new Button("Other Button 1");
44
public static Button otherButton2 = new Button("Other Button 2");
45
public static Button otherButton3 = new Button("Other Button 3");
46
public static Button testButton1 = new Button("Test Button 1");
47
public static Button testButton2 = new Button("Test Button 2");
48
public static Button testButton3 = new Button("Test Button 3");
49
public static Window window1 = new TestWindow(owner, otherButton2, testButton2, 800, 200);
50
public static Window window2 = new TestWindow(owner, otherButton3, testButton3, 800, 300);
51
public static int step;
52
public static Robot robot = Util.createRobot();
53
54
public static void main(String[] args) {
55
ActualFocusedWindowRetaining a = new ActualFocusedWindowRetaining();
56
a.init();
57
a.start();
58
}
59
60
public void start () {
61
Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {
62
public void eventDispatched(AWTEvent e) {
63
Object src = e.getSource();
64
Class cls = src.getClass();
65
66
if (cls == TestWindow.class) {
67
System.out.println(e.paramString() + " on <" + (src == window1 ? "Window 1" : "Window 2") + ">");
68
} else if (cls == Frame.class) {
69
System.out.println(e.paramString() + " on <" + ((Frame)src).getTitle() + ">");
70
} else if (cls == Button.class) {
71
System.out.println(e.paramString() + " on <" + ((Button)src).getLabel() + ">");
72
} else {
73
System.out.println(e.paramString() + " on <Non-testing component>");
74
}
75
}
76
}, AWTEvent.WINDOW_EVENT_MASK | AWTEvent.WINDOW_FOCUS_EVENT_MASK | AWTEvent.FOCUS_EVENT_MASK);
77
78
setSize (500, 200);
79
setVisible(true);
80
validate();
81
82
frame.setSize(new Dimension(400, 100));
83
frame.setLocation(800, 400);
84
frame.setVisible(true);
85
frame.toFront();
86
87
owner.setLayout(new FlowLayout());
88
owner.add(testButton1);
89
owner.add(otherButton1);
90
owner.pack();
91
owner.setLocation(800, 100);
92
owner.setSize(new Dimension(400, 100));
93
owner.setVisible(true);
94
owner.toFront();
95
Util.waitTillShown(owner);
96
97
window1.setVisible(true);
98
window2.setVisible(true);
99
window1.toFront();
100
window2.toFront();
101
// Wait longer...
102
Util.waitTillShown(window1);
103
Util.waitTillShown(window2);
104
105
test();
106
107
frame.dispose();
108
owner.dispose();
109
}
110
111
public void test() {
112
Button[] butArr = new Button[] {testButton3, testButton2, testButton1};
113
Window[] winArr = new Window[] {window2, window1, owner};
114
115
step = 1;
116
for (int i = 0; i < 3; i++) {
117
clickInSeriesCheckFocus(null, butArr[i], frame);
118
clickOwnerCheckFocus(winArr[i], butArr[i]);
119
step++;
120
}
121
122
step = 4;
123
clickInSeriesCheckFocus(testButton3, testButton1, frame);
124
clickOwnerCheckFocus(owner, testButton1);
125
126
step = 5;
127
clickInSeriesCheckFocus(testButton3, testButton2, frame);
128
clickOwnerCheckFocus(window1, testButton2);
129
130
step = 6;
131
clickInSeriesCheckFocus(testButton1, testButton2, frame);
132
clickOwnerCheckFocus(window1, testButton2);
133
134
step = 7;
135
clickInSeriesCheckFocus(testButton1, testButton2, frame);
136
window1.setVisible(false);
137
Util.waitForIdle(robot);
138
clickOwnerCheckFocus(owner, testButton1);
139
140
step = 8;
141
window1.setVisible(true);
142
Util.waitTillShown(window1);
143
clickInSeriesCheckFocus(null, testButton2, frame);
144
clickOwnerCheckFocus(window1, testButton2);
145
}
146
147
boolean checkFocusOwner(Component comp) {
148
return (comp == KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner());
149
}
150
151
boolean checkFocusedWindow(Window win) {
152
return (win == KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusedWindow());
153
}
154
155
void clickOwnerCheckFocus(Window focusedWindow, Component focusedComp) {
156
Util.clickOnTitle(owner, robot);
157
robot.delay(500);
158
159
if (!checkFocusedWindow(focusedWindow)) {
160
stopTest("Test failed: actual focused window didn't get a focus");
161
}
162
if (!checkFocusOwner(focusedComp)) {
163
stopTest("Test failed: actual focus owner didn't get a focus");
164
}
165
}
166
167
void clickInSeriesCheckFocus(Component comp1, Component comp2, Frame frame) {
168
if (comp1 != null) {
169
clickOnCheckFocusOwner(comp1);
170
}
171
if (comp2 != null) {
172
clickOnCheckFocusOwner(comp2);
173
}
174
clickOnCheckFocusedWindow(frame);
175
}
176
177
void clickOnCheckFocusOwner(Component c) {
178
Util.clickOnComp(c, robot);
179
robot.delay(500);
180
181
if (!checkFocusOwner(c)) {
182
stopTest("Error: can't bring a focus on Component by clicking on it");
183
}
184
}
185
186
void clickOnCheckFocusedWindow(Frame f) {
187
Util.clickOnTitle(f, robot);
188
robot.delay(500);
189
190
if (!checkFocusedWindow(f)) {
191
stopTest("Error: can't bring a focus on Frame by clicking on it");
192
}
193
}
194
195
void stopTest(String msg) {
196
throw new RuntimeException(new String("Step " + step + ": " + msg));
197
}
198
}
199
200
class TestWindow extends Window {
201
TestWindow(Frame owner, Button otherButton, Button testButton, int x, int y) {
202
super(owner);
203
204
setLayout(new FlowLayout());
205
setLocation(x, y);
206
add(testButton);
207
add(otherButton);
208
pack();
209
setBackground(Color.green);
210
}
211
}
212
213