< prev index next >
test/java/awt/Mouse/MaximizedFrameTest/MaximizedFrameTest.java
Print this page
@@ -20,93 +20,151 @@
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
- test
- @bug 6176814
+ @test
+ @bug 6176814 8132766
@summary Metalworks frame maximizes after the move
- @author Andrei.Dmitriev area=Event
- @run applet MaximizedFrameTest.html
-*/
-
-import java.applet.Applet;
-import javax.swing.*;
-import java.awt.event.*;
-import java.awt.*;
-
-public class MaximizedFrameTest extends Applet
-{
- final int ITERATIONS_COUNT = 20;
- Robot robot;
- Point framePosition;
- Point newFrameLocation;
- JFrame frame;
- Rectangle gcBounds;
- public static Object LOCK = new Object();
-
- public void init()
- {
- String[] instructions =
- {
- "This is an AUTOMATIC test",
- "simply wait until it is done"
- };
+ @run main MaximizedFrameTest
+ */
+
+import java.awt.AWTException;
+import java.awt.Component;
+import java.awt.Point;
+import java.awt.Robot;
+import java.awt.event.InputEvent;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.swing.JFrame;
+import javax.swing.JLayeredPane;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+
+public class MaximizedFrameTest {
+
+ final static int ITERATIONS_COUNT = 5;
+ private static JFrame frame;
+ private static Point tempMousePosition;
+ private static Component titleComponent;
+
+ public void init() {
JFrame.setDefaultLookAndFeelDecorated(true);
+
+ try {
+ UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
+ } catch (ClassNotFoundException | InstantiationException |
+ IllegalAccessException | UnsupportedLookAndFeelException ex) {
+ throw new RuntimeException("Test Failed. MetalLookAndFeel not set "
+ + "for frame");
+ }
+
frame = new JFrame("JFrame Maximization Test");
frame.pack();
frame.setSize(450, 260);
- }//End init()
-
- public void start ()
- {
frame.setVisible(true);
- validate();
+ }
+
+ public void getTitleComponent() throws Exception {
+
+ SwingUtilities.invokeAndWait(new Runnable() {
+
+ @Override
+ public void run() {
JLayeredPane lPane = frame.getLayeredPane();
- // System.out.println("JFrame's LayeredPane " + lPane );
- Component titleComponent = null;
boolean titleFound = false;
- for (int j=0; j < lPane.getComponentsInLayer(JLayeredPane.FRAME_CONTENT_LAYER.intValue()).length; j++){
- titleComponent = lPane.getComponentsInLayer(JLayeredPane.FRAME_CONTENT_LAYER.intValue())[j];
- if (titleComponent.getClass().getName().equals("javax.swing.plaf.metal.MetalTitlePane")){
+
+ for (int j = 0; j < lPane.getComponentsInLayer(
+ JLayeredPane.FRAME_CONTENT_LAYER.intValue()).length; j++) {
+
+ titleComponent = lPane.getComponentsInLayer(
+ JLayeredPane.FRAME_CONTENT_LAYER.intValue())[j];
+
+ if (titleComponent.getClass().getName().equals(
+ "javax.swing.plaf.metal.MetalTitlePane")) {
+
titleFound = true;
break;
}
}
- if ( !titleFound ){
- throw new RuntimeException("Test Failed. Unable to determine title's size.");
+
+ if (!titleFound) {
+ try {
+ dispose();
+ } catch (Exception ex) {
+ Logger.getLogger(MaximizedFrameTest.class.getName())
+ .log(Level.SEVERE, null, ex);
+ }
+ throw new RuntimeException("Test Failed. Unable to "
+ + "determine title component");
+ }
+ }
+ });
+ }
+
+ public void doMaximizeFrameTest() throws Exception {
+
+ SwingUtilities.invokeAndWait(new Runnable() {
+ @Override
+ public void run() {
+ Point framePosition = frame.getLocationOnScreen();
+
+ tempMousePosition = new Point(framePosition.x
+ + frame.getWidth() / 2, framePosition.y
+ + titleComponent.getHeight() / 2);
}
- //--------------------------------
- // it is sufficient to get maximized Frame only once.
- Point tempMousePosition;
- framePosition = frame.getLocationOnScreen();
+ });
+
try {
- robot = new Robot();
- tempMousePosition = new Point(framePosition.x +
- frame.getWidth()/2,
- framePosition.y +
- titleComponent.getHeight()/2);
+ Robot robot = new Robot();
robot.mouseMove(tempMousePosition.x, tempMousePosition.y);
- for (int iteration=0; iteration < ITERATIONS_COUNT; iteration++){
+ robot.waitForIdle();
+
+ for (int iteration = 0; iteration < ITERATIONS_COUNT; iteration++) {
robot.mousePress(InputEvent.BUTTON1_MASK);
- gcBounds =
- GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()[0].getConfigurations()[0].getBounds();
- //Moving a mouse pointer less than a few pixels
- //leads to rising a double click event.
- //We have to use exceeded the AWT_MULTICLICK_SMUDGE
- //const value (which is 4 by default on GNOME) to test that.
+ robot.waitForIdle();
+
+ // Moving a mouse pointer less than a few pixels
+ // leads to rising a double click event.
+ // We have to use exceeded the AWT_MULTICLICK_SMUDGE
+ // const value (which is 4 by default on GNOME) to test that.
tempMousePosition.x += 5;
robot.mouseMove(tempMousePosition.x, tempMousePosition.y);
- robot.delay(70);
+ robot.waitForIdle();
robot.mouseRelease(InputEvent.BUTTON1_MASK);
- if ( frame.getExtendedState() != 0 ){
- throw new RuntimeException ("Test failed. JFrame was maximized. ExtendedState is : "+frame.getExtendedState());
- }
- robot.delay(500);
- } //for iteration
+ robot.waitForIdle();
- }catch(AWTException e) {
+ if (frame.getExtendedState() != 0) {
+ dispose();
+ throw new RuntimeException("Test failed. JFrame was "
+ + "maximized. ExtendedState is : "
+ + frame.getExtendedState());
+ }
+ }
+ } catch (AWTException e) {
+ dispose();
throw new RuntimeException("Test Failed. AWTException thrown.");
}
System.out.println("Test passed.");
- }// start()
-}// class
+ }
+
+ private void dispose() throws Exception {
+ SwingUtilities.invokeAndWait(new Runnable() {
+ @Override
+ public void run() {
+ if (null != frame) {
+ frame.dispose();
+ }
+ }
+ });
+ }
+
+ public static void main(String[] args) throws Exception {
+
+ MaximizedFrameTest maximizedFrameTest = new MaximizedFrameTest();
+ maximizedFrameTest.init();
+ maximizedFrameTest.getTitleComponent();
+ maximizedFrameTest.doMaximizeFrameTest();
+ maximizedFrameTest.dispose();
+ }
+}
< prev index next >