8068228: Test closed/java/awt/Mouse/MaximizedFrameTest/MaximizedFrameTest fails with GTKLookAndFeel
Reviewed-by: ssadetsky, arapte
--- a/jdk/test/java/awt/Mouse/MaximizedFrameTest/MaximizedFrameTest.html Tue Dec 01 19:02:50 2015 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2008, 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 6176814
- @summary Metalworks frame maximizes after the move
- @author Andrei.Dmitriev.Com area=Event
- @run applet MaximizedFrameTest.html
- -->
-<head>
-<title> </title>
-</head>
-<body>
-
-<h1>bug 6176814<br>Bug ID: 6176814 </h1>
-
-<p> This is an AUTOMATIC test, simply wait for completion </p>
-
-<APPLET CODE="MaximizedFrameTest.class" WIDTH=200 HEIGHT=200></APPLET>
-</body>
-</html>
--- a/jdk/test/java/awt/Mouse/MaximizedFrameTest/MaximizedFrameTest.java Tue Dec 01 19:02:50 2015 +0300
+++ b/jdk/test/java/awt/Mouse/MaximizedFrameTest/MaximizedFrameTest.java Tue Dec 01 19:07:45 2015 +0300
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2015 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
@@ -22,91 +22,149 @@
*/
/*
- test
- @bug 6176814
- @summary Metalworks frame maximizes after the move
- @author Andrei.Dmitriev area=Event
- @run applet MaximizedFrameTest.html
-*/
+ @test
+ @bug 6176814 8132766
+ @summary Metalworks frame maximizes after the move
+ @run main MaximizedFrameTest
+ */
-import java.applet.Applet;
-import javax.swing.*;
-import java.awt.event.*;
-import java.awt.*;
+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 extends Applet
-{
- final int ITERATIONS_COUNT = 20;
- Robot robot;
- Point framePosition;
- Point newFrameLocation;
- JFrame frame;
- Rectangle gcBounds;
- public static Object LOCK = new Object();
+public class MaximizedFrameTest {
+
+ final static int ITERATIONS_COUNT = 5;
+ private static JFrame frame;
+ private static Point tempMousePosition;
+ private static Component titleComponent;
- public void init()
- {
- String[] instructions =
- {
- "This is an AUTOMATIC test",
- "simply wait until it is done"
- };
+ 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()
+ frame.setVisible(true);
+ }
+
+ public void getTitleComponent() throws Exception {
+
+ SwingUtilities.invokeAndWait(new Runnable() {
+
+ @Override
+ public void run() {
+ JLayeredPane lPane = frame.getLayeredPane();
+ 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];
- public void start ()
- {
- frame.setVisible(true);
- validate();
- 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")){
- titleFound = true;
- break;
+ if (titleComponent.getClass().getName().equals(
+ "javax.swing.plaf.metal.MetalTitlePane")) {
+
+ titleFound = true;
+ break;
+ }
+ }
+
+ 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");
+ }
}
- }
- if ( !titleFound ){
- throw new RuntimeException("Test Failed. Unable to determine title's size.");
- }
- //--------------------------------
- // it is sufficient to get maximized Frame only once.
- Point tempMousePosition;
- framePosition = frame.getLocationOnScreen();
+ });
+ }
+
+ 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);
+ }
+ });
+
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.waitForIdle();
+
+ if (frame.getExtendedState() != 0) {
+ dispose();
+ throw new RuntimeException("Test failed. JFrame was "
+ + "maximized. ExtendedState is : "
+ + frame.getExtendedState());
}
- robot.delay(500);
- } //for iteration
+ }
+ } catch (AWTException e) {
+ dispose();
+ throw new RuntimeException("Test Failed. AWTException thrown.");
+ }
+ System.out.println("Test passed.");
+ }
- }catch(AWTException e) {
- throw new RuntimeException("Test Failed. AWTException thrown.");
+ private void dispose() throws Exception {
+ SwingUtilities.invokeAndWait(new Runnable() {
+ @Override
+ public void run() {
+ if (null != frame) {
+ frame.dispose();
+ }
}
- System.out.println("Test passed.");
- }// start()
-}// class
+ });
+ }
+
+ public static void main(String[] args) throws Exception {
+
+ MaximizedFrameTest maximizedFrameTest = new MaximizedFrameTest();
+ maximizedFrameTest.init();
+ maximizedFrameTest.getTitleComponent();
+ maximizedFrameTest.doMaximizeFrameTest();
+ maximizedFrameTest.dispose();
+ }
+}