mirror of
https://github.com/openjdk/jdk.git
synced 2026-03-05 13:40:18 +00:00
8065861: Pressing Esc does not set 'canceled' property of ProgressMonitor
Reviewed-by: alexsch, prr
This commit is contained in:
parent
ec03057889
commit
035a4b7b98
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -369,16 +369,24 @@ public class ProgressMonitor implements Accessible
|
||||
|
||||
|
||||
/**
|
||||
* Returns true if the user hits the Cancel button in the progress dialog.
|
||||
* Returns true if the user hits the Cancel button or closes
|
||||
* the progress dialog.
|
||||
*
|
||||
* @return true if the user hits the Cancel button in the progress dialog
|
||||
* @return true if the user hits the Cancel button or closes
|
||||
* the progress dialog
|
||||
*/
|
||||
public boolean isCanceled() {
|
||||
if (pane == null) return false;
|
||||
if (pane == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Object v = pane.getValue();
|
||||
return ((v != null) &&
|
||||
(cancelOption.length == 1) &&
|
||||
(v.equals(cancelOption[0])));
|
||||
if (v == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return (((cancelOption.length == 1) && v.equals(cancelOption[0])) ||
|
||||
v.equals(Integer.valueOf(JOptionPane.CLOSED_OPTION)));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,124 @@
|
||||
/*
|
||||
* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/* @test
|
||||
* @bug 8065861
|
||||
* @summary Test to check pressing Escape key sets 'canceled' property of ProgressMonitor
|
||||
* @run main ProgressMonitorEscapeKeyPress
|
||||
*/
|
||||
|
||||
import java.awt.AWTException;
|
||||
import java.awt.EventQueue;
|
||||
import java.awt.Robot;
|
||||
import java.awt.event.KeyEvent;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.ProgressMonitor;
|
||||
import javax.swing.SwingUtilities;
|
||||
|
||||
public class ProgressMonitorEscapeKeyPress {
|
||||
|
||||
static ProgressMonitor monitor;
|
||||
static int counter = 0;
|
||||
static TestThread robotThread;
|
||||
static JFrame frame;
|
||||
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
|
||||
createTestUI();
|
||||
|
||||
monitor = new ProgressMonitor(frame, "Progress", null, 0, 100);
|
||||
|
||||
robotThread = new TestThread();
|
||||
robotThread.start();
|
||||
|
||||
for (counter = 0; counter <= 100; counter += 10) {
|
||||
Thread.sleep(1000);
|
||||
|
||||
EventQueue.invokeAndWait(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (!monitor.isCanceled()) {
|
||||
monitor.setProgress(counter);
|
||||
System.out.println("Progress bar is in progress");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (monitor.isCanceled()) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
disposeTestUI();
|
||||
|
||||
if (counter >= monitor.getMaximum()) {
|
||||
throw new RuntimeException("Escape key did not cancel the ProgressMonitor");
|
||||
}
|
||||
}
|
||||
|
||||
private static void createTestUI() throws Exception {
|
||||
SwingUtilities.invokeAndWait(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
frame = new JFrame("Test");
|
||||
frame.setSize(300, 300);
|
||||
frame.setLocationByPlatform(true);
|
||||
frame.setVisible(true);
|
||||
}});
|
||||
}
|
||||
|
||||
|
||||
private static void disposeTestUI() throws Exception {
|
||||
SwingUtilities.invokeAndWait(() -> {
|
||||
frame.dispose();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class TestThread extends Thread {
|
||||
|
||||
Robot testRobot;
|
||||
|
||||
TestThread() throws AWTException {
|
||||
super();
|
||||
testRobot = new Robot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
// Sleep for 5 seconds - so that the ProgressMonitor starts
|
||||
Thread.sleep(5000);
|
||||
|
||||
// Press and release Escape key
|
||||
testRobot.keyPress(KeyEvent.VK_ESCAPE);
|
||||
testRobot.delay(20);
|
||||
testRobot.keyRelease(KeyEvent.VK_ESCAPE);
|
||||
} catch (InterruptedException ex) {
|
||||
throw new RuntimeException("Exception in TestThread");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user