--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Mouse/MaximizedFrameTest/MaximizedFrameTest.java Wed Oct 08 12:50:17 2008 +0400
@@ -0,0 +1,112 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ test
+ @bug 6176814
+ @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"
+ };
+ JFrame.setDefaultLookAndFeelDecorated(true);
+ frame = new JFrame("JFrame Maximization Test");
+ frame.pack();
+ frame.setSize(450, 260);
+ }//End init()
+
+ 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 ( !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();
+ try {
+ robot = new Robot();
+ tempMousePosition = new Point(framePosition.x +
+ frame.getWidth()/2,
+ framePosition.y +
+ titleComponent.getHeight()/2);
+ robot.mouseMove(tempMousePosition.x, tempMousePosition.y);
+ 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.
+ tempMousePosition.x += 5;
+ robot.mouseMove(tempMousePosition.x, tempMousePosition.y);
+ robot.delay(70);
+ 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
+
+ }catch(AWTException e) {
+ throw new RuntimeException("Test Failed. AWTException thrown.");
+ }
+ System.out.println("Test passed.");
+ }// start()
+}// class