aboutsummaryrefslogtreecommitdiff
path: root/test/javax/swing/ToolTipManager/7123767/bug7123767.java
diff options
context:
space:
mode:
Diffstat (limited to 'test/javax/swing/ToolTipManager/7123767/bug7123767.java')
-rw-r--r--test/javax/swing/ToolTipManager/7123767/bug7123767.java186
1 files changed, 123 insertions, 63 deletions
diff --git a/test/javax/swing/ToolTipManager/7123767/bug7123767.java b/test/javax/swing/ToolTipManager/7123767/bug7123767.java
index 4c7402d390..3477cabc6a 100644
--- a/test/javax/swing/ToolTipManager/7123767/bug7123767.java
+++ b/test/javax/swing/ToolTipManager/7123767/bug7123767.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
@@ -21,14 +21,28 @@
* questions.
*/
-/* @test
- @bug 7123767
- @summary Wrong tooltip location in Multi-Monitor configurations
- @author Vladislav Karnaukhov
- @run main bug7123767
-*/
-
-import sun.awt.SunToolkit;
+/*
+ * @test
+ * @bug 7123767
+ *
+ * @summary Check if a tooltip location in Multi-Monitor
+ * configurations is correct.
+ * If the configurations number per device exceeds 5,
+ * then some 5 random configurations will be checked.
+ * Please Use -Dseed=X to set the random generator seed
+ * (if necessary).
+ *
+ * @author Vladislav Karnaukhov
+ *
+ * @key headful
+ * @key randomness
+ *
+ * @modules java.desktop/sun.awt
+ * @library /lib/testlibrary/
+ * @build jdk.testlibrary.*
+ *
+ * @run main/timeout=300 bug7123767
+ */
import javax.swing.*;
import javax.swing.plaf.metal.MetalLookAndFeel;
@@ -36,8 +50,50 @@ import java.awt.*;
import java.awt.event.MouseEvent;
import java.lang.reflect.InvocationTargetException;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Random;
+
+import jdk.testlibrary.RandomFactory;
+
+
public class bug7123767 extends JFrame {
+ // maximum number of GraphicsConfigurations checked per GraphicsDevice
+ private static final int MAX_N_CONFIGS = 5;
+ private static final List<GraphicsConfiguration> CONFIGS = getConfigs();
+
+ private static List<GraphicsConfiguration> getConfigs() {
+
+ Random rnd = RandomFactory.getRandom();
+
+ List<GraphicsConfiguration> configs = new ArrayList<>();
+
+ GraphicsEnvironment ge =
+ GraphicsEnvironment.getLocalGraphicsEnvironment();
+ GraphicsDevice[] devices = ge.getScreenDevices();
+
+ for (GraphicsDevice device : devices) {
+ GraphicsConfiguration[] allConfigs = device.getConfigurations();
+ int nConfigs = allConfigs.length;
+ if (nConfigs <= MAX_N_CONFIGS) {
+ Collections.addAll(configs, allConfigs);
+ } else { // see JDK-8159454
+ System.out.println("check only " + MAX_N_CONFIGS +
+ " configurations for device " + device);
+ configs.add(device.getDefaultConfiguration()); // check default
+ for (int j = 0; j < MAX_N_CONFIGS - 1; j++) {
+ int k = rnd.nextInt(nConfigs);
+ configs.add(allConfigs[k]);
+ }
+ }
+ }
+
+ return configs;
+ }
+
+
private static class TestFactory extends PopupFactory {
private static TestFactory newFactory = new TestFactory();
@@ -61,15 +117,21 @@ public class bug7123767 extends JFrame {
}
// Actual test happens here
+ @Override
public Popup getPopup(Component owner, Component contents, int x, int y) {
- GraphicsConfiguration mouseGC = testGC(MouseInfo.getPointerInfo().getLocation());
+
+ GraphicsConfiguration mouseGC =
+ testGC(MouseInfo.getPointerInfo().getLocation());
+
if (mouseGC == null) {
- throw new RuntimeException("Can't find GraphicsConfiguration that mouse pointer belongs to");
+ throw new RuntimeException("Can't find GraphicsConfiguration "
+ + "that mouse pointer belongs to");
}
GraphicsConfiguration tipGC = testGC(new Point(x, y));
if (tipGC == null) {
- throw new RuntimeException("Can't find GraphicsConfiguration that tip belongs to");
+ throw new RuntimeException(
+ "Can't find GraphicsConfiguration that tip belongs to");
}
if (!mouseGC.equals(tipGC)) {
@@ -80,17 +142,14 @@ public class bug7123767 extends JFrame {
}
private static GraphicsConfiguration testGC(Point pt) {
- GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment();
- GraphicsDevice[] devices = environment.getScreenDevices();
- for (GraphicsDevice device : devices) {
- GraphicsConfiguration[] configs = device.getConfigurations();
- for (GraphicsConfiguration config : configs) {
- Rectangle rect = config.getBounds();
- Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(config);
- adjustInsets(rect, insets);
- if (rect.contains(pt))
- return config;
- }
+
+ for (GraphicsConfiguration config: CONFIGS) {
+
+ Rectangle rect = config.getBounds();
+ Insets insets =
+ Toolkit.getDefaultToolkit().getScreenInsets(config);
+ adjustInsets(rect, insets);
+ if (rect.contains(pt)) { return config; }
}
return null;
@@ -102,15 +161,18 @@ public class bug7123767 extends JFrame {
private static Robot robot;
public static void main(String[] args) throws Exception {
+
UIManager.setLookAndFeel(new MetalLookAndFeel());
setUp();
testToolTip();
TestFactory.uninstall();
+ if (frame != null) { frame.dispose(); }
}
// Creates a window that is stretched across all available monitors
// and adds itself as ContainerListener to track tooltips drawing
private bug7123767() {
+
super();
ToolTipManager.sharedInstance().setInitialDelay(0);
@@ -134,17 +196,16 @@ public class bug7123767 extends JFrame {
pack();
Rectangle rect = new Rectangle();
- GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment();
- GraphicsDevice[] devices = environment.getScreenDevices();
- for (GraphicsDevice device : devices) {
- GraphicsConfiguration[] configs = device.getConfigurations();
- for (GraphicsConfiguration config : configs) {
- Insets localInsets = Toolkit.getDefaultToolkit().getScreenInsets(config);
- Rectangle localRect = config.getBounds();
- adjustInsets(localRect, localInsets);
- rect.add(localRect);
- }
+
+ for (GraphicsConfiguration config: CONFIGS) {
+
+ Insets localInsets =
+ Toolkit.getDefaultToolkit().getScreenInsets(config);
+ Rectangle localRect = config.getBounds();
+ adjustInsets(localRect, localInsets);
+ rect.add(localRect);
}
+
setBounds(rect);
}
@@ -160,38 +221,37 @@ public class bug7123767 extends JFrame {
// Moves mouse pointer to the corners of every GraphicsConfiguration
private static void testToolTip() throws AWTException {
- SunToolkit toolkit = (SunToolkit) Toolkit.getDefaultToolkit();
- toolkit.realSync();
- GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment();
- GraphicsDevice[] devices = environment.getScreenDevices();
- for (GraphicsDevice device : devices) {
- GraphicsConfiguration[] configs = device.getConfigurations();
- for (GraphicsConfiguration config : configs) {
- Rectangle rect = config.getBounds();
- Insets insets = toolkit.getScreenInsets(config);
- adjustInsets(rect, insets);
+ robot = new Robot();
+ robot.setAutoDelay(20);
+ robot.waitForIdle();
- // Upper left
- glide(rect.x + rect.width / 2, rect.y + rect.height / 2,
- rect.x + MARGIN, rect.y + MARGIN);
- toolkit.realSync();
-
- // Lower left
- glide(rect.x + rect.width / 2, rect.y + rect.height / 2,
- rect.x + MARGIN, rect.y + rect.height - MARGIN);
- toolkit.realSync();
-
- // Upper right
- glide(rect.x + rect.width / 2, rect.y + rect.height / 2,
- rect.x + rect.width - MARGIN, rect.y + MARGIN);
- toolkit.realSync();
-
- // Lower right
- glide(rect.x + rect.width / 2, rect.y + rect.height / 2,
- rect.x + rect.width - MARGIN, rect.y + rect.height - MARGIN);
- toolkit.realSync();
- }
+ for (GraphicsConfiguration config: CONFIGS) {
+
+ Rectangle rect = config.getBounds();
+ Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(config);
+ adjustInsets(rect, insets);
+
+ // Upper left
+ glide(rect.x + rect.width / 2, rect.y + rect.height / 2,
+ rect.x + MARGIN, rect.y + MARGIN);
+ robot.waitForIdle();
+
+ // Lower left
+ glide(rect.x + rect.width / 2, rect.y + rect.height / 2,
+ rect.x + MARGIN, rect.y + rect.height - MARGIN);
+ robot.waitForIdle();
+
+ // Upper right
+ glide(rect.x + rect.width / 2, rect.y + rect.height / 2,
+ rect.x + rect.width - MARGIN, rect.y + MARGIN);
+ robot.waitForIdle();
+
+ // Lower right
+ glide(rect.x + rect.width / 2, rect.y + rect.height / 2,
+ rect.x + rect.width - MARGIN, rect.y + rect.height - MARGIN);
+
+ robot.waitForIdle();
}
}