jdk/test/java/awt/Window/ShapedAndTranslucentWindows/FocusAWTTest.java
author yan
Mon, 26 May 2014 15:50:10 +0400
changeset 25108 cbf21a81a738
child 25559 a101ec6ccfd3
permissions -rw-r--r--
8041915: Move 8 awt tests to OpenJDK regression tests tree Reviewed-by: pchelko, alexsch Contributed-by: Dmitriy Ermashov <dmitriy.ermashov@oracle.com>
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
25108
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
     1
/*
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
     2
 * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
     4
 *
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
     7
 * published by the Free Software Foundation.
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
     8
 *
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    13
 * accompanied this code).
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    14
 *
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    18
 *
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    21
 * questions.
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    22
 */
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    23
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    24
import java.awt.*;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    25
import java.awt.event.WindowAdapter;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    26
import java.awt.event.WindowEvent;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    27
import java.awt.event.WindowFocusListener;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    28
import java.awt.geom.Area;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    29
import java.awt.geom.GeneralPath;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    30
import java.awt.geom.Rectangle2D;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    31
import java.util.HashMap;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    32
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    33
/*
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    34
 * @test
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    35
 * @bug 8013450
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    36
 * @summary Check if the window events (Focus and Activation) are triggered correctly
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    37
 *          when clicked on visible and clipped areas.
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    38
 * @author Dmitriy Ermashov (dmitriy.ermashov@oracle.com)
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    39
 * @library ../../../../lib/testlibrary
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    40
 * @build Common ExtendedRobot
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    41
 * @run main FocusAWTTest
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    42
 */
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    43
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    44
public class FocusAWTTest extends Common {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    45
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    46
    ExtendedRobot robot;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    47
    int dx;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    48
    int dy;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    49
    static final int x = 20;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    50
    static final int y = 400;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    51
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    52
    static volatile HashMap<String, Boolean> flags = new HashMap<String, Boolean>();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    53
    static {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    54
        flags.put("backgroundWindowActivated", false);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    55
        flags.put("backgroundWindowDeactivated", false);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    56
        flags.put("backgroundWindowGotFocus", false);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    57
        flags.put("backgroundWindowLostFocus", false);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    58
        flags.put("foregroundWindowGotFocus", false);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    59
        flags.put("foregroundWindowLostFocus", false);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    60
        flags.put("foregroundWindowActivated", false);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    61
        flags.put("foregroundWindowDeactivated", false);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    62
    }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    63
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    64
    public static void main(String[] ignored) throws Exception{
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    65
        if (checkTranslucencyMode(GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT))
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    66
            for (Class<Window> windowClass: WINDOWS_TO_TEST) {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    67
                new FocusAWTTest(windowClass).doTest();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    68
            }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    69
    }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    70
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    71
    public FocusAWTTest(Class windowClass) throws Exception {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    72
        super(windowClass);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    73
        this.robot = new ExtendedRobot();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    74
        robot.waitForIdle();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    75
        EventQueue.invokeAndWait(() -> {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    76
            dx = background.getX() - x;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    77
            dy = background.getY() - y;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    78
        });
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    79
        robot.waitForIdle();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    80
    }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    81
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    82
    @Override
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    83
    public void initBackgroundFrame() {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    84
        background = new Frame();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    85
        background.setSize(300, 300);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    86
        background.setLocation(x, y);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    87
        background.setFocusable(true);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    88
        background.setFocusableWindowState(true);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    89
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    90
        background.addWindowFocusListener(new WindowFocusListener() {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    91
            public void windowGainedFocus(WindowEvent e) { flags.put("backgroundWindowGotFocus", true); }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    92
            public void windowLostFocus(WindowEvent e) { flags.put("backgroundWindowLostFocus", true); }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    93
        });
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    94
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    95
        background.addWindowListener(new WindowAdapter() {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    96
            public void windowActivated(WindowEvent e) { flags.put("backgroundWindowActivated", true); }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    97
            public void windowDeactivated(WindowEvent e) { flags.put("backgroundWindowDeactivated", true); }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    98
        });
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
    99
        background.add(new TextArea());
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   100
        background.setVisible(true);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   101
    }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   102
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   103
    @Override
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   104
    public void initGUI() {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   105
        if (windowClass.equals(Frame.class)) {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   106
            window = new Frame() {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   107
                public void paint(Graphics g) {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   108
                    g.setColor(Color.BLUE);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   109
                    g.fillRect(0, 0, 200, 200);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   110
                }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   111
            };
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   112
            ((Frame) window).setUndecorated(true);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   113
        } else if (windowClass.equals(Dialog.class)) {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   114
            window = new Dialog(background) {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   115
                public void paint(Graphics g) {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   116
                    g.setColor(Color.BLUE);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   117
                    g.fillRect(0, 0, 200, 200);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   118
                }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   119
            };
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   120
            ((Dialog) window).setUndecorated(true);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   121
        } else {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   122
            window = new Window(background) {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   123
                public void paint(Graphics g) {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   124
                    g.setColor(Color.BLUE);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   125
                    g.fillRect(0, 0, 200, 200);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   126
                }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   127
            };
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   128
            window.setFocusable(true);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   129
            window.setFocusableWindowState(true);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   130
        }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   131
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   132
        window.setPreferredSize(new Dimension(200, 200));
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   133
        window.setLocation(70 + dx, 450 + dy);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   134
        window.setLayout(new BorderLayout());
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   135
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   136
        window.addWindowFocusListener(new WindowFocusListener() {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   137
            public void windowGainedFocus(WindowEvent e) { flags.put("foregroundWindowGotFocus", true); }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   138
            public void windowLostFocus(WindowEvent e) { flags.put("foregroundWindowLostFocus", true); }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   139
        });
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   140
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   141
        window.addWindowListener(new WindowAdapter() {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   142
            public void windowActivated(WindowEvent e) { flags.put("foregroundWindowActivated", true); }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   143
            public void windowDeactivated(WindowEvent e) { flags.put("foregroundWindowDeactivated", true); }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   144
        });
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   145
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   146
        applyShape();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   147
        window.pack();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   148
        window.setAlwaysOnTop(true);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   149
        window.setVisible(true);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   150
    }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   151
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   152
    public void doTest() throws Exception {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   153
        super.doTest();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   154
        final Point wls = new Point();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   155
        final Dimension size = new Dimension();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   156
        EventQueue.invokeAndWait(() -> {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   157
            window.requestFocus();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   158
            wls.setLocation(window.getLocationOnScreen());
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   159
            window.getSize(size);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   160
        });
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   161
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   162
        robot.waitForIdle();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   163
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   164
        check(wls.x + size.width - 5, wls.y + 5, wls.x + size.width / 3, wls.y + size.height / 3);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   165
        check(wls.x + size.width / 2, wls.y + size.height / 2, wls.x + size.width * 2 / 3, wls.y + size.height * 2 / 3);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   166
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   167
        EventQueue.invokeAndWait(() -> {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   168
            background.dispose();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   169
            window.dispose();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   170
        });
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   171
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   172
        robot.waitForIdle();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   173
    }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   174
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   175
    @Override
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   176
    public void applyShape() {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   177
        Shape shape;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   178
        Area a = new Area(new Rectangle2D.Float(0, 0, 200, 200));
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   179
        GeneralPath gp;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   180
        gp = new GeneralPath();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   181
        gp.moveTo(190, 0);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   182
        gp.lineTo(200, 0);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   183
        gp.lineTo(200, 10);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   184
        gp.lineTo(10, 200);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   185
        gp.lineTo(0, 200);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   186
        gp.lineTo(0, 190);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   187
        gp.closePath();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   188
        a.subtract(new Area(gp));
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   189
        shape = a;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   190
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   191
        window.setShape(shape);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   192
    }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   193
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   194
    private void check(int xb, int yb, int xw, int yw) throws Exception {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   195
        checkClick(xb, yb, "backgroundWindowGotFocus");
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   196
        checkClick(xw, yw, "foregroundWindowGotFocus");
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   197
        checkClick(xb, yb, "foregroundWindowLostFocus");
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   198
        checkClick(xw, yw, "backgroundWindowLostFocus");
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   199
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   200
        if (window instanceof Dialog || window instanceof Frame) {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   201
            checkClick(xb, yb, "backgroundWindowActivated");
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   202
            checkClick(xw, yw, "foregroundWindowActivated");
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   203
            checkClick(xb, yb, "foregroundWindowDeactivated");
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   204
            checkClick(xw, yw, "backgroundWindowDeactivated");
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   205
        }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   206
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   207
    }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   208
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   209
    private void checkClick(int x, int y, String flag) throws Exception {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   210
        System.out.println("Trying to click point " + x + ", " + y + ", looking for " + flag + " to trigger.");
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   211
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   212
        flags.put(flag, false);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   213
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   214
        robot.mouseMove(x, y);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   215
        robot.click();
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   216
        int i = 0;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   217
        while (i < 5000 && !flags.get(flag)) {
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   218
            robot.waitForIdle(50);
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   219
            i += 50;
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   220
        }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   221
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   222
        if (!flags.get(flag))
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   223
            throw new RuntimeException(flag + " is not triggered for click on point " + x + ", " + y + " for " + windowClass + "!");
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   224
    }
cbf21a81a738 8041915: Move 8 awt tests to OpenJDK regression tests tree
yan
parents:
diff changeset
   225
}