Index: modules/swing/src/test/api/java/common/javax/swing/ProgressMonitorTest.java =================================================================== --- modules/swing/src/test/api/java/common/javax/swing/ProgressMonitorTest.java (revision 441015) +++ modules/swing/src/test/api/java/common/javax/swing/ProgressMonitorTest.java (working copy) @@ -19,6 +19,7 @@ */ package javax.swing; +import java.awt.Window; import java.awt.event.WindowEvent; public class ProgressMonitorTest extends BasicSwingTestCase { @@ -27,34 +28,41 @@ public void setUp() throws Exception { super.setUp(); - window = new JFrame(); + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + window = new JFrame(); + progressMonitor = createProgressMonitor(0, 100); + } + }); } public void tearDown() throws Exception { + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + window.dispose(); + closeProgressMonitor(); + } + }); progressMonitor = null; window = null; super.tearDown(); } - public void testProgressMonitor() { - progressMonitor = new ProgressMonitor(window, "message test", "note test", 0, 100); + public void testProgressMonitor() throws Exception { assertEquals(progressMonitor.getMillisToDecideToPopup(), 500); assertEquals(progressMonitor.getMillisToPopup(), 2000); } public void testSetProgress() throws Exception { - progressMonitor = new ProgressMonitor(window, "message test", "note test", 0, 100); - - assertEquals(0, window.getOwnedWindows().length); - progressMonitor.setProgress(1); + assertEquals(0, getOwnedWindowsCount()); + setProgress(1); Thread.sleep(500 + 100); - progressMonitor.setProgress(2); - assertEquals(1, window.getOwnedWindows().length); + setProgress(2); + assertEquals(1, getOwnedWindowsCount()); - JProgressBar pb = getProgressBar(); - assertEquals(2, pb.getValue()); - progressMonitor.close(); + assertEquals(2, getProgressBar().getValue()); + /* progressMonitor = new ProgressMonitor(window, "message test", "note test", -100, 100); assertEquals(1, window.getOwnedWindows().length); progressMonitor.setProgress(1); @@ -68,17 +76,18 @@ Thread.sleep(500 + 100); progressMonitor.setProgress(2); assertEquals(1, window.getOwnedWindows().length); + */ } public void testGetSetMaximum() throws Exception { - progressMonitor = new ProgressMonitor(window, "message test", "note test", 0, 300); + progressMonitor = createProgressMonitorOnEDT(0, 300);; - progressMonitor.setProgress(1); + setProgress(1); Thread.sleep(500 + 100); - progressMonitor.setProgress(20); + setProgress(20); assertEquals(300, getProgressBar().getMaximum()); - progressMonitor.setMaximum(500); + setMaximum(500); if (isHarmony()) { assertEquals(500, getProgressBar().getMaximum()); } @@ -86,71 +95,150 @@ } public void testGetSetMinimum() throws Exception { - progressMonitor = new ProgressMonitor(window, "message test", "note test", 0, 300); + progressMonitor = createProgressMonitorOnEDT(0, 300);; - progressMonitor.setProgress(1); + setProgress(1); Thread.sleep(500 + 100); - progressMonitor.setProgress(20); + setProgress(20); assertEquals(0, getProgressBar().getMinimum()); - progressMonitor.setMinimum(-100); + setMinimum(-100); if (isHarmony()) { assertEquals(-100, getProgressBar().getMinimum()); } assertEquals(-100, progressMonitor.getMinimum()); } - public void testIsCancelled() throws Exception { - progressMonitor = new ProgressMonitor(window, "message test", "note test", 0, 100); - - progressMonitor.setProgress(1); + public void testIsCancelled01() throws Exception { + setProgress(1); Thread.sleep(500 + 100); - progressMonitor.setProgress(20); + setProgress(20); - JDialog dialog = (JDialog)window.getOwnedWindows()[0]; - JOptionPane comp = (JOptionPane)dialog.getContentPane().getComponent(0); - JPanel bottomPanel = (JPanel)comp.getComponent(1); - JButton cancelButton = (JButton)bottomPanel.getComponent(0); - cancelButton.doClick(); + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + JDialog dialog = (JDialog)window.getOwnedWindows()[0]; + JOptionPane comp = (JOptionPane)dialog.getContentPane().getComponent(0); + JPanel bottomPanel = (JPanel)comp.getComponent(1); + JButton cancelButton = (JButton)bottomPanel.getComponent(0); + cancelButton.doClick(); + } + }); assertTrue(progressMonitor.isCanceled()); - - progressMonitor = new ProgressMonitor(window, "message test", "note test", 0, 100); - - progressMonitor.setProgress(1); + } + + public void testIsCancelled02() throws Exception { + setProgress(1); Thread.sleep(500 + 100); - progressMonitor.setProgress(20); + setProgress(20); - dialog = (JDialog)window.getOwnedWindows()[1]; - dialog.dispatchEvent(new WindowEvent(window, WindowEvent.WINDOW_CLOSING)); + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + JDialog dialog = (JDialog)window.getOwnedWindows()[0]; + dialog.dispatchEvent(new WindowEvent(window, WindowEvent.WINDOW_CLOSING)); + } + }); assertTrue(progressMonitor.isCanceled()); - progressMonitor.setProgress(98); - assertEquals(2, window.getOwnedWindows().length); + setProgress(98); + assertEquals(1, getOwnedWindowsCount()); } public void testClose() throws Exception { - progressMonitor = new ProgressMonitor(window, "message test", "note test", 0, 100); - - progressMonitor.setProgress(1); + setProgress(1); Thread.sleep(500 + 100); - progressMonitor.setProgress(20); + setProgress(20); - progressMonitor.close(); - assertEquals(1, window.getOwnedWindows().length); - assertFalse(window.getOwnedWindows()[0].isVisible()); - assertFalse(window.getOwnedWindows()[0].isDisplayable()); + closeProgressMonitorOnEDT(); + assertEquals(1, getOwnedWindowsCount()); + assertFalse(getOwnedWindows()[0].isVisible()); + assertFalse(getOwnedWindows()[0].isDisplayable()); - progressMonitor.setProgress(25); - assertEquals(2, window.getOwnedWindows().length); - assertTrue(window.getOwnedWindows()[1].isVisible()); + setProgress(25); + assertEquals(2, getOwnedWindowsCount()); + assertTrue(getOwnedWindows()[1].isVisible()); } - private JProgressBar getProgressBar() { - JDialog dialog = (JDialog)window.getOwnedWindows()[0]; - JOptionPane comp = (JOptionPane)dialog.getContentPane().getComponent(0); - JPanel topPanel = (JPanel)comp.getComponent(0); - JPanel panel = (JPanel)topPanel.getComponent(0); - JPanel panel2 = (JPanel)panel.getComponent(1); - JProgressBar pb = (JProgressBar)panel2.getComponent(2); - return pb; + private JProgressBar getProgressBar() throws Exception { + final JProgressBar[] result = new JProgressBar[1]; + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + JDialog dialog = (JDialog)window.getOwnedWindows()[0]; + JOptionPane comp = (JOptionPane)dialog.getContentPane().getComponent(0); + JPanel topPanel = (JPanel)comp.getComponent(0); + JPanel panel = (JPanel)topPanel.getComponent(0); + JPanel panel2 = (JPanel)panel.getComponent(1); + result[0] = (JProgressBar)panel2.getComponent(2); + } + }); + return result[0]; } + + private Window[] getOwnedWindows() throws Exception { + final Window[][] ownedWindows = new Window[1][]; + + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + ownedWindows[0] = window.getOwnedWindows(); + } + }); + return ownedWindows[0]; + } + + private int getOwnedWindowsCount() throws Exception { + return getOwnedWindows().length; + } + + private void setProgress(final int progress) throws Exception { + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + progressMonitor.setProgress(progress); + } + }); + } + + private void setMinimum(final int min) throws Exception { + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + progressMonitor.setMinimum(min); + } + }); + } + + private void setMaximum(final int max) throws Exception { + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + progressMonitor.setMaximum(max); + } + }); + } + + private ProgressMonitor createProgressMonitor(final int min, + final int max) { + return new ProgressMonitor(window, "message test", "note test", + min, max); + } + + private ProgressMonitor createProgressMonitorOnEDT(final int min, + final int max) + throws Exception { + + final ProgressMonitor[] result = new ProgressMonitor[1]; + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + result[0] = createProgressMonitor(min, max); + } + }); + return result[0]; + } + + private void closeProgressMonitor() { + progressMonitor.close(); + } + + private void closeProgressMonitorOnEDT() throws Exception { + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + closeProgressMonitor(); + } + }); + } }