SetShapeTest.java revision 15511:acb15b493fd3
16495Sspeer/*
26495Sspeer * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
36495Sspeer * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
46495Sspeer *
56495Sspeer * This code is free software; you can redistribute it and/or modify it
66495Sspeer * under the terms of the GNU General Public License version 2 only, as
76495Sspeer * published by the Free Software Foundation.
86495Sspeer *
96495Sspeer * This code is distributed in the hope that it will be useful, but WITHOUT
106495Sspeer * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
116495Sspeer * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
126495Sspeer * version 2 for more details (a copy is included in the LICENSE file that
136495Sspeer * accompanied this code).
146495Sspeer *
156495Sspeer * You should have received a copy of the GNU General Public License version
166495Sspeer * 2 along with this work; if not, write to the Free Software Foundation,
176495Sspeer * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
186495Sspeer *
196495Sspeer * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
206495Sspeer * or visit www.oracle.com if you need additional information or have any
216495Sspeer * questions.
226495Sspeer */
2311878SVenu.Iyer@Sun.COM
246495Sspeer/**
256495Sspeer * @test
266495Sspeer * @key headful
276495Sspeer * @bug 8159168 8161913
286495Sspeer * @summary [hidpi] Window.setShape() works incorrectly on HiDPI
296495Sspeer * @run main/othervm -Dsun.java2d.uiScale=2 SetShapeTest
306495Sspeer */
316495Sspeerimport java.awt.BorderLayout;
326495Sspeerimport java.awt.Color;
336495Sspeerimport java.awt.Frame;
346495Sspeerimport java.awt.Panel;
356495Sspeerimport java.awt.Rectangle;
366495Sspeerimport java.awt.Window;
378275SEric Chengimport java.awt.geom.Area;
386495Sspeerimport java.awt.geom.Rectangle2D;
396495Sspeerimport java.awt.Robot;
406495Sspeerimport javax.swing.SwingUtilities;
416495Sspeer
426495Sspeerpublic class SetShapeTest {
436495Sspeer
446495Sspeer    private static Window window;
456495Sspeer    private static Frame background;
4610309SSriharsha.Basavapatna@Sun.COM
4710309SSriharsha.Basavapatna@Sun.COM    public static void main(String[] args) throws Exception {
4810309SSriharsha.Basavapatna@Sun.COM        createUI();
496495Sspeer        Robot robot = new Robot();
506495Sspeer        robot.waitForIdle();
516495Sspeer        Rectangle rect = window.getBounds();
526495Sspeer        rect.x += rect.width - 10;
536495Sspeer        rect.y += rect.height - 10;
546495Sspeer        robot.delay(1000);
556495Sspeer        Color c = robot.getPixelColor(rect.x, rect.y);
566495Sspeer        try {
576495Sspeer            if (!c.equals(Color.RED)) {
586495Sspeer                throw new RuntimeException("Test Failed");
596495Sspeer            }
606495Sspeer        } finally {
6111304SJanie.Lu@Sun.COM            SwingUtilities.invokeAndWait(new Runnable() {
6211304SJanie.Lu@Sun.COM                @Override
6311304SJanie.Lu@Sun.COM                public void run() {
6411304SJanie.Lu@Sun.COM                    background.dispose();
6511304SJanie.Lu@Sun.COM                    window.dispose();
6611304SJanie.Lu@Sun.COM                }
6711304SJanie.Lu@Sun.COM            });
686495Sspeer        }
696495Sspeer    }
7011304SJanie.Lu@Sun.COM
7111304SJanie.Lu@Sun.COM    private static void createUI() throws Exception {
726495Sspeer        SwingUtilities.invokeAndWait(new Runnable() {
736495Sspeer            @Override
746495Sspeer            public void run() {
756495Sspeer                background = new Frame();
766495Sspeer                background.setUndecorated(true);
776495Sspeer                background.setBackground(Color.blue);
786495Sspeer                background.setSize(300, 300);
796495Sspeer                background.setLocation(100, 100);
806495Sspeer                background.setVisible(true);
816495Sspeer                window = new Window(background);
826495Sspeer                window.setBackground(Color.red);
836495Sspeer                window.add(new Panel(), BorderLayout.CENTER);
846495Sspeer                window.setLocation(200, 200);
856495Sspeer                window.setSize(100, 100);
866495Sspeer                Area a = new Area();
876495Sspeer                a.add(new Area(new Rectangle2D.Double(0, 0, 100, 100)));
886495Sspeer                window.setShape(a);
896495Sspeer                window.setVisible(true);
906495Sspeer                window.toFront();
916495Sspeer            }
9211304SJanie.Lu@Sun.COM        });
9311304SJanie.Lu@Sun.COM    }
9411304SJanie.Lu@Sun.COM}
9511304SJanie.Lu@Sun.COM