< prev index next >

test/java/awt/Mouse/GetMousePositionTest/GetMousePositionWithPopup.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2013, 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. --- 1,7 ---- /* ! * Copyright (c) 2013, 2016 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.
*** 21,111 **** * questions. */ import test.java.awt.regtesthelpers.Util; ! import javax.swing.*; ! import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionAdapter; ! /** * @test ! * @bug 8012026 ! * @summary Component.getMousePosition() does not work in an applet on MacOS ! * @author Petr Pchelko * @library ../../regtesthelpers * @build Util * @compile GetMousePositionWithPopup.java * @run main/othervm GetMousePositionWithPopup */ public class GetMousePositionWithPopup { private static Frame frame1; private static Frame frame2; public static void main(String[] args) throws Exception { try { ! Robot r = Util.createRobot(); ! r.mouseMove(0, 0); ! Util.waitForIdle(null); ! SwingUtilities.invokeAndWait(new Runnable() { @Override ! public void run() { ! constructTestUI(); } }); ! Util.waitForIdle(null); ! r.mouseMove(149, 149); ! Util.waitForIdle(null); ! r.mouseMove(150, 150); ! Util.waitForIdle(null); ! ! } finally { ! SwingUtilities.invokeLater(new Runnable() { @Override ! public void run() { ! frame1.dispose(); ! frame2.dispose(); } }); } } - - private static void constructTestUI() { - frame1 = new Frame(); - frame1.setBounds(100, 100, 100, 100); - frame1.addMouseMotionListener(new MouseMotionAdapter() { - - private boolean shown = false; - - @Override - public void mouseMoved(MouseEvent e) { - if (shown) { - return; } ! shown = true; ! ! frame2 = new Frame(); ! frame2.setBounds(120, 120, 120, 120); ! frame2.setVisible(true); ! ! Point positionInFrame2 = frame2.getMousePosition(); ! if (positionInFrame2.x != 30 || positionInFrame2.y != 30) { ! throw new RuntimeException("Wrong position reported. Should be [30, 30] but was [" + ! positionInFrame2.x + ", " + positionInFrame2.y + "]"); } Point positionInFrame1 = frame1.getMousePosition(); if (positionInFrame1 != null) { ! throw new RuntimeException("Wrong position reported. Should be null"); } - } ! }); ! frame1.setVisible(true); } } --- 21,120 ---- * questions. */ import test.java.awt.regtesthelpers.Util; ! import java.awt.Frame; ! import java.awt.Point; ! import java.awt.Robot; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionAdapter; + import java.awt.event.MouseAdapter; ! /* * @test ! * @bug 8012026 8027154 ! * @summary Component.getMousePosition() does not work in an applet on MacOS. * @library ../../regtesthelpers * @build Util * @compile GetMousePositionWithPopup.java * @run main/othervm GetMousePositionWithPopup */ public class GetMousePositionWithPopup { private static Frame frame1; private static Frame frame2; + private static Robot robot = null; + private static volatile boolean verified = false; public static void main(String[] args) throws Exception { try { ! frame1 = new Frame("frame1"); ! frame1.setBounds(100, 100, 100, 100); ! frame2 = new Frame("frame2"); ! frame2.setBounds(120, 120, 120, 120); ! frame1.setVisible(true); ! frame2.setVisible(true); ! robot = Util.createRobot(); ! robot.mouseMove(0, 0); ! Util.waitForIdle(robot); ! frame2.addMouseMotionListener(new MouseMotionAdapter() { @Override ! public void mouseMoved(MouseEvent e) { ! if (!verified) { ! verifyMousePosition(); ! } } }); ! frame2.addMouseListener(new MouseAdapter() { @Override ! public void mouseEntered(MouseEvent e) { ! if (!verified) { ! verifyMousePosition(); ! } } }); + + Util.waitForIdle(robot); + Point loc = frame2.getLocationOnScreen(); + robot.mouseMove(loc.x + 30, loc.y + 30); + Util.waitForIdle(robot); + robot.delay(200); + if (!verified) { + throw new RuntimeException( + "No mouse events generated for frame"); } + } finally { + frame2.dispose(); + frame1.dispose(); + frame1 = null; + frame2 = null; } } ! public static void verifyMousePosition() { ! verified = true; ! Point posInFrm2 = frame2.getMousePosition(); ! if (!(isValueInRange(posInFrm2.x) && isValueInRange(posInFrm2.y))) { ! throw new RuntimeException("Wrong position reported. Should be in" ! + " range from [25, 25] to [35, 35] but was [" ! + posInFrm2.x + ", " + posInFrm2.y + "]"); } Point positionInFrame1 = frame1.getMousePosition(); if (positionInFrame1 != null) { ! throw new RuntimeException( ! "Wrong position reported. Should be null"); } } ! ! public static boolean isValueInRange(int value) { ! /* ! * Since all operating systems do not return exact value, hence range ! * is used. ! */ ! return value >= 25 && value <= 35; } }
< prev index next >