jdk/test/javax/swing/plaf/windows/6921687/bug6921687.java
author ssadetsky
Mon, 06 Apr 2015 19:03:09 +0400
changeset 29897 cbc3729f4bf3
child 30446 1229ff365d57
permissions -rw-r--r--
6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics Reviewed-by: ant, alexsch
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29897
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
     1
/*
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
     2
 * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
     4
 *
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
     7
 * published by the Free Software Foundation.
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
     8
 *
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    13
 * accompanied this code).
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    14
 *
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    18
 *
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    21
 * questions.
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    22
 */
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    23
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    24
/* @test
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    25
   @bug 6921687
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    26
   @summary Mnemonic disappears after repeated attempts to open menu items using
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    27
   mnemonics
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    28
   @author Semyon Sadetsky
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    29
   @library /lib/testlibrary
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    30
   @build jdk.testlibrary.OSInfo
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    31
  */
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    32
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    33
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    34
import jdk.testlibrary.OSInfo;
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    35
import javax.swing.*;
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    36
import java.awt.*;
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    37
import java.awt.event.KeyEvent;
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    38
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    39
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    40
public class bug6921687 {
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    41
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    42
    private static Class lafClass;
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    43
    private static JFrame frame;
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    44
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    45
    public static void main(String[] args) throws Exception {
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    46
        if (OSInfo.getOSType() != OSInfo.OSType.WINDOWS) {
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    47
            System.out.println("Only Windows platform test. Test is skipped.");
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    48
            System.out.println("ok");
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    49
            return;
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    50
        }
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    51
        lafClass = Class.forName(UIManager.getSystemLookAndFeelClassName());
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    52
        UIManager.setLookAndFeel((LookAndFeel) lafClass.newInstance());
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    53
        try {
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    54
            SwingUtilities.invokeAndWait(new Runnable() {
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    55
                public void run() {
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    56
                    frame = new JFrame();
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    57
                    frame.setUndecorated(true);
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    58
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    59
                    setup(frame);
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    60
                }
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    61
            });
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    62
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    63
            final Robot robot = new Robot();
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    64
            robot.setAutoDelay(20);
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    65
            robot.keyPress(KeyEvent.VK_ALT);
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    66
            robot.keyPress(KeyEvent.VK_F);
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    67
            robot.keyRelease(KeyEvent.VK_F);
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    68
            robot.keyRelease(KeyEvent.VK_ALT);
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    69
            robot.waitForIdle();
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    70
            checkMnemonics();
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    71
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    72
            robot.keyPress(KeyEvent.VK_ALT);
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    73
            robot.keyPress(KeyEvent.VK_S);
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    74
            robot.keyRelease(KeyEvent.VK_S);
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    75
            robot.keyRelease(KeyEvent.VK_ALT);
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    76
            robot.waitForIdle();
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    77
            checkMnemonics();
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    78
            System.out.println("ok");
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    79
        } finally {
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    80
            frame.dispose();
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    81
        }
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    82
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    83
    }
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    84
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    85
    private static void checkMnemonics() throws Exception {
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    86
        if ((Boolean) lafClass.getMethod("isMnemonicHidden").invoke(lafClass)) {
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    87
            throw new RuntimeException("Mnemonics are hidden");
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    88
        }
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    89
    }
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    90
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    91
    private static void setup(JFrame frame) {
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    92
        JMenuBar menuBar = new JMenuBar();
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    93
        frame.setJMenuBar(menuBar);
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    94
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    95
        // First Menu, F - Mnemonic
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    96
        JMenu firstMenu = new JMenu("First Menu");
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    97
        firstMenu.setMnemonic(KeyEvent.VK_F);
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    98
        firstMenu.add(new JMenuItem("One", KeyEvent.VK_O));
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
    99
        firstMenu.add(new JMenuItem("Two", KeyEvent.VK_T));
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
   100
        menuBar.add(firstMenu);
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
   101
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
   102
        // Second Menu, S - Mnemonic
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
   103
        JMenu secondMenu = new JMenu("Second Menu");
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
   104
        secondMenu.setMnemonic(KeyEvent.VK_S);
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
   105
        secondMenu.add(new JMenuItem("A Menu Item", KeyEvent.VK_A));
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
   106
        menuBar.add(secondMenu);
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
   107
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
   108
        frame.setSize(350, 250);
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
   109
        frame.setVisible(true);
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
   110
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
   111
    }
cbc3729f4bf3 6921687: Mnemonic disappears after repeated attempts to open menu items using mnemonics
ssadetsky
parents:
diff changeset
   112
}