blob: 5ec2821bfaf22623307ddf5cdfcb74edf602e58f [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/*
2 * Copyright (c) 2007 Sun Microsystems, Inc. All Rights Reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
20 * CA 95054 USA or visit www.sun.com if you need additional information or
21 * have any questions.
22 */
23
24/*
25 @test
26 @bug 6566434
27 @library ../../regtesthelpers
28 @build Util Sysout AbstractTest
29 @summary Choice in unfocusable window responds to keyboard
30 @author Andrei Dmitriev: area=awt-choice
31 @run main UnfocusableToplevel
32*/
33
34/**
35 * UnfocusableToplevel.java
36 *
37 * summary:
38 */
39
40import java.awt.*;
41import java.awt.event.*;
42import test.java.awt.regtesthelpers.AbstractTest;
43import test.java.awt.regtesthelpers.Sysout;
44import test.java.awt.regtesthelpers.Util;
45
46public class UnfocusableToplevel {
47
48 final static Robot robot = Util.createRobot();
49 final static int REASONABLE_PATH_TIME = 5000;
50
51 public static void main(String []s)
52 {
53 Frame f = new Frame();
54 Window w = new Window(f);
55 final Choice ch = new Choice();
56
57 ch.add("item 1");
58 ch.add("item 2");
59 ch.add("item 3");
60 ch.add("item 4");
61 ch.add("item 5");
62 w.add(ch);
63 w.setLayout(new FlowLayout());
64 w.setSize(200, 200);
65
66 ch.addKeyListener(new KeyAdapter(){
67 public void keyTyped(KeyEvent e){
68 traceEvent("keytyped", e);
69 }
70 public void keyPressed(KeyEvent e){
71 traceEvent("keypress", e);
72 }
73 public void keyReleased(KeyEvent e){
74 traceEvent("keyrelease", e);
75 }
76 });
77
78 ch.addItemListener(new ItemListener(){
79 public void itemStateChanged(ItemEvent ie){
80 traceEvent("stateChanged", ie);
81 }
82 });
83
84 w.setVisible(true);
85
86 Util.waitForIdle(robot);
87
88 Util.clickOnComp(ch, robot);
89 Util.waitForIdle(robot);
90
91 // will not test if the dropdown become opened as there is no reliable
92 // technique to accomplish that rather then checking color of dropdown
93 // Will suppose that the dropdown appears
94
95 testKeys();
96 Util.waitForIdle(robot);
97 }
98
99 private static void testKeys(){
100 typeKey(KeyEvent.VK_UP);
101 typeKey(KeyEvent.VK_DOWN);
102 typeKey(KeyEvent.VK_K);
103 typeKey(KeyEvent.VK_PAGE_UP);
104 typeKey(KeyEvent.VK_PAGE_DOWN);
105 }
106
107 private static void typeKey(int keyChar){
108 try {
109 robot.keyPress(keyChar);
110 robot.delay(5);
111 } finally {
112 robot.keyRelease(keyChar);
113 }
114 robot.delay(100);
115 }
116
117 private static void traceEvent(String message, AWTEvent e){
118 AbstractTest.fail(message + " " + e.toString());
119 }
120}