< prev index next >

test/java/awt/Mouse/EnterExitEvents/DragWindowOutOfFrameTest.java

Print this page

        

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2017, 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.

@@ -22,25 +22,36 @@
  */
 
 /*
  * @test
  * @key headful
- * @bug 7154048
+ * @bug 7154048 8177326
  * @summary Window created under a mouse does not receive mouse enter event.
  *     Mouse Entered/Exited events should be generated during dragging the window
  *     out of the frame and to the frame.
  * @library ../../regtesthelpers
  * @build Util
  * @author alexandr.scherbatiy area=awt.event
  * @run main DragWindowOutOfFrameTest
  */
-import java.awt.*;
-import java.awt.event.*;
-import javax.swing.*;
-
-import java.util.concurrent.*;
-
+import java.awt.Robot;
+import java.awt.Point;
+import java.awt.Component;
+import java.awt.Rectangle;
+import java.awt.Window;
+import java.awt.BorderLayout;
+import java.awt.Panel;
+import java.awt.event.InputEvent;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseAdapter;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.SwingUtilities;
+import java.util.concurrent.Callable;
+import java.util.Random;
 import test.java.awt.regtesthelpers.Util;
 
 public class DragWindowOutOfFrameTest {
 
     private static volatile int dragWindowMouseEnteredCount = 0;

@@ -52,10 +63,11 @@
     private static volatile int labelMouseExitedCount = 0;
     private static volatile int labelMouseReleasedCount = 0;
     private static MyDragWindow dragWindow;
     private static JLabel label;
     private static JButton button;
+    private static JFrame frame;
 
     public static void main(String[] args) throws Exception {
 
         Robot robot = new Robot();
         robot.setAutoDelay(50);

@@ -76,13 +88,19 @@
             public Point call() throws Exception {
                 return getCenterPoint(label);
             }
         });
 
+        /* The mouse is moved at the beginning of the test to make sure the initial mouse move 
+           on the label always happens.
+        */
+        robot.mouseMove(pointToClick.x, pointToClick.y + 10);
+        robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
+        robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
 
         robot.mouseMove(pointToClick.x, pointToClick.y);
-        robot.mousePress(InputEvent.BUTTON1_MASK);
+        robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
         robot.waitForIdle();
 
         if (dragWindowMouseEnteredCount != 1 && dragWindowMouseExitedCount != 0) {
             throw new RuntimeException(
                     "Wrong number mouse Entered/Exited events on Drag Window!");

@@ -125,27 +143,29 @@
         if (buttonMouseEnteredCount != 1 && buttonMouseExitedCount != 0) {
             throw new RuntimeException(
                     "Wrong number Mouse Entered/Exited events on button!");
         }
 
-        robot.mouseRelease(InputEvent.BUTTON1_MASK);
+        robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
         robot.waitForIdle();
 
         if (labelMouseReleasedCount != 1) {
             throw new RuntimeException("No MouseReleased event on label!");
         }
+
+        frame.dispose();
     }
 
     private static Point getCenterPoint(Component comp) {
         Point p = comp.getLocationOnScreen();
         Rectangle rect = comp.getBounds();
         return new Point(p.x + rect.width / 2, p.y + rect.height / 2);
     }
 
     private static void createAndShowGUI() {
 
-        JFrame frame = new JFrame("Main Frame");
+        frame = new JFrame("Main Frame");
         frame.setLocation(100, 100);
         frame.setSize(300, 200);
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
         label = new JLabel("Label");
< prev index next >