Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/javax/swing/JSpinner/4973721/bug4973721.java
41153 views
1
/*
2
* Copyright (c) 2013, 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
@key headful
27
@bug 4973721
28
@summary Up and Down Arrow key buttons are not working for the JSpinner in
29
@ Synth LAF
30
@library ../../regtesthelpers
31
@build Util
32
@author Oleg Mokhovikov
33
@run main bug4973721
34
*/
35
36
import java.awt.Robot;
37
import javax.swing.event.ChangeListener;
38
import javax.swing.event.ChangeEvent;
39
import java.awt.event.KeyEvent;
40
import java.awt.event.FocusListener;
41
import java.awt.event.FocusEvent;
42
import javax.swing.*;
43
44
public class bug4973721 implements ChangeListener, FocusListener {
45
static volatile boolean bStateChanged = false;
46
static volatile boolean bFocusGained = false;
47
static JSpinner spinner;
48
static final Object listener = new bug4973721();
49
static JFrame frame;
50
51
public void focusLost(FocusEvent e) {}
52
53
public synchronized void focusGained(FocusEvent e) {
54
System.out.println("focusGained");
55
bFocusGained = true;
56
notifyAll();
57
}
58
59
public synchronized void stateChanged(ChangeEvent e) {
60
System.out.println("stateChanged");
61
bStateChanged = true;
62
notifyAll();
63
}
64
65
public static void main(String[] args) throws Exception {
66
UIManager.setLookAndFeel("javax.swing.plaf.synth.SynthLookAndFeel");
67
68
try {
69
SwingUtilities.invokeAndWait(new Runnable() {
70
public void run() {
71
frame = new JFrame();
72
spinner = new JSpinner();
73
frame.getContentPane().add(spinner);
74
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
75
76
frame.pack();
77
frame.setVisible(true);
78
spinner.addChangeListener((ChangeListener)listener);
79
spinner.addFocusListener((FocusListener)listener);
80
spinner.requestFocus();
81
82
}
83
});
84
85
synchronized(listener) {
86
if (!bFocusGained) {
87
System.out.println("waiting focusGained...");
88
try {
89
listener.wait(5000);
90
}
91
catch (InterruptedException e) {}
92
}
93
}
94
95
boolean hasFocus = Util.invokeOnEDT(
96
new java.util.concurrent.Callable<Boolean>() {
97
@Override
98
public Boolean call() throws Exception {
99
return spinner.hasFocus();
100
}
101
});
102
103
if (!bFocusGained && !hasFocus) {
104
throw new RuntimeException("Couldn't request focus for" +
105
" spinner");
106
}
107
Robot robot = new Robot();
108
robot.setAutoDelay(50);
109
110
Util.hitKeys(robot, KeyEvent.VK_UP);
111
robot.waitForIdle();
112
Thread.sleep(1000);
113
114
if (!bStateChanged) {
115
throw new RuntimeException("Up arrow key button doesn't work" +
116
" for a spinner in Synth L&F");
117
}
118
119
bStateChanged = false;
120
121
Util.hitKeys(robot, KeyEvent.VK_DOWN);
122
robot.waitForIdle();
123
Thread.sleep(1000);
124
125
if (!bStateChanged) {
126
throw new RuntimeException("Down arrow key button doesn't" +
127
" work for a spinner in Synth L&F");
128
}
129
} finally {
130
if (frame != null) {
131
SwingUtilities.invokeAndWait(() -> frame.dispose());
132
}
133
}
134
}
135
}
136
137