< prev index next >

test/jdk/java/awt/Dialog/SiblingChildOrder/SiblingChildOrderTest.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 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. --- 1,7 ---- /* ! * Copyright (c) 2017, 2018, 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,41 **** * questions. */ /** * @test ! * @bug 8190230 * @summary [macosx] Order of overlapping of modal dialogs is wrong * @key headful * @run main SiblingChildOrderTest */ ! import javax.swing.*; ! import java.awt.*; public class SiblingChildOrderTest - { static Color[] colors = new Color[]{Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW}; static int[] x = new int[]{200, 150, 100, 50}; static int[] y = new int[]{200, 150, 100, 50}; static JDialog[] dlgs = new JDialog[4]; --- 21,43 ---- * questions. */ /** * @test ! * @bug 8190230 8196360 * @summary [macosx] Order of overlapping of modal dialogs is wrong * @key headful * @run main SiblingChildOrderTest */ ! import java.awt.Color; ! import java.awt.Robot; ! import javax.swing.JDialog; ! import javax.swing.JFrame; ! import javax.swing.SwingUtilities; public class SiblingChildOrderTest { static Color[] colors = new Color[]{Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW}; static int[] x = new int[]{200, 150, 100, 50}; static int[] y = new int[]{200, 150, 100, 50}; static JDialog[] dlgs = new JDialog[4];
*** 43,81 **** public static void main(String args[]) throws Exception { SwingUtilities.invokeAndWait(() -> { frame = new JFrame("FRAME"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ! frame.setBounds(50, 50, 400, 400); frame.setVisible(true); }); for (int i = 0; i < colors.length; i++) { int finalI = i; SwingUtilities.invokeLater(() -> { dlgs[finalI] = new JDialog(frame, "DLG " + finalI, true); dlgs[finalI].getContentPane().setBackground(colors[finalI]); dlgs[finalI].setBounds(x[finalI], y[finalI], 200, 200); dlgs[finalI].setVisible(true); - }); } Robot robot = new Robot(); robot.waitForIdle(); ! robot.delay(200); for (int i = 0; i < colors.length; i++) { Color c = robot.getPixelColor(x[i] + 190, y[i] + 190); ! if (!c.equals(colors[i])) { throw new RuntimeException("Expected " + colors[i] + " got " + c); } } for (int i = 0; i < colors.length; i++) { SwingUtilities.invokeLater(dlgs[i]::dispose); } - SwingUtilities.invokeLater(frame::dispose); } } --- 45,92 ---- public static void main(String args[]) throws Exception { SwingUtilities.invokeAndWait(() -> { frame = new JFrame("FRAME"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ! frame.setUndecorated(true); ! frame.setBounds(50,50, 400, 400); frame.setVisible(true); }); for (int i = 0; i < colors.length; i++) { int finalI = i; SwingUtilities.invokeLater(() -> { dlgs[finalI] = new JDialog(frame, "DLG " + finalI, true); dlgs[finalI].getContentPane().setBackground(colors[finalI]); dlgs[finalI].setBounds(x[finalI], y[finalI], 200, 200); + dlgs[finalI].setUndecorated(true); dlgs[finalI].setVisible(true); }); } Robot robot = new Robot(); robot.waitForIdle(); ! robot.delay(1000); for (int i = 0; i < colors.length; i++) { Color c = robot.getPixelColor(x[i] + 190, y[i] + 190); ! if (!compareColor(colors[i], c, 5)) { throw new RuntimeException("Expected " + colors[i] + " got " + c); } } for (int i = 0; i < colors.length; i++) { SwingUtilities.invokeLater(dlgs[i]::dispose); } SwingUtilities.invokeLater(frame::dispose); + } + private static boolean compareColor(Color c1, Color c2, int threshold) { + if (c1.equals(c2)) { + return true; + } else { + return ((Math.abs(c1.getRed() - c2.getRed()) < threshold ) && + (Math.abs(c1.getGreen() - c2.getGreen()) < threshold ) && + (Math.abs(c1.getBlue() - c2.getBlue()) < threshold )); + } } }
< prev index next >