8340719: Open source AWT List tests
Reviewed-by: prr
This commit is contained in:
parent
a32c3b43aa
commit
b11066b56b
@ -797,3 +797,4 @@ java/awt/Frame/SizeMinimizedTest.java 8305915 linux-x64
|
||||
java/awt/PopupMenu/PopupHangTest.java 8340022 windows-all
|
||||
java/awt/Focus/MinimizeNonfocusableWindowTest.java 8024487 windows-all
|
||||
java/awt/Focus/InactiveFocusRace.java 8023263 linux-all
|
||||
java/awt/List/HandlingKeyEventIfMousePressedTest.java 6848358 macosx-all,windows-all
|
||||
|
167
test/jdk/java/awt/List/HandlingKeyEventIfMousePressedTest.java
Normal file
167
test/jdk/java/awt/List/HandlingKeyEventIfMousePressedTest.java
Normal file
@ -0,0 +1,167 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2024, 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.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 6293432
|
||||
* @summary Key events ('SPACE', 'UP', 'DOWN') aren't blocked
|
||||
* if mouse is kept in 'PRESSED' state for List
|
||||
* @key headful
|
||||
* @run main HandlingKeyEventIfMousePressedTest
|
||||
*/
|
||||
|
||||
import java.awt.EventQueue;
|
||||
import java.awt.FlowLayout;
|
||||
import java.awt.Frame;
|
||||
import java.awt.List;
|
||||
import java.awt.Point;
|
||||
import java.awt.Robot;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.FocusAdapter;
|
||||
import java.awt.event.FocusEvent;
|
||||
import java.awt.event.InputEvent;
|
||||
import java.awt.event.ItemEvent;
|
||||
import java.awt.event.ItemListener;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.MouseMotionAdapter;
|
||||
|
||||
public class HandlingKeyEventIfMousePressedTest {
|
||||
|
||||
static Frame frame;
|
||||
static List list;
|
||||
static volatile Point loc;
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
Robot robot = new Robot();
|
||||
robot.setAutoDelay(100);
|
||||
try {
|
||||
EventQueue.invokeAndWait(() -> createUI());
|
||||
robot.waitForIdle();
|
||||
robot.delay(1000);
|
||||
EventQueue.invokeAndWait(() -> {
|
||||
loc = list.getLocationOnScreen();
|
||||
});
|
||||
robot.mouseMove(loc.x + 10, loc.y + 10);
|
||||
robot.waitForIdle();
|
||||
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
|
||||
|
||||
// key pressing when the mouse is kept in the 'pressed' state
|
||||
robot.keyPress(KeyEvent.VK_DOWN);
|
||||
robot.keyRelease(KeyEvent.VK_DOWN);
|
||||
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
|
||||
robot.waitForIdle();
|
||||
|
||||
int selectedIndex = list.getSelectedIndex();
|
||||
if (selectedIndex != 0) {
|
||||
throw new RuntimeException("Test failed: list.getCurrentItem = " + selectedIndex);
|
||||
}
|
||||
} finally {
|
||||
EventQueue.invokeAndWait(() -> {
|
||||
if (frame != null) {
|
||||
frame.dispose();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private static void createUI() {
|
||||
frame = new Frame("HandlingKeyEventIfMousePressedTest");
|
||||
list = new List(10, false);
|
||||
|
||||
list.add("111");
|
||||
list.add("222");
|
||||
list.add("333");
|
||||
list.add("444");
|
||||
frame.add(list);
|
||||
|
||||
addListeners();
|
||||
|
||||
frame.setLayout(new FlowLayout());
|
||||
frame.pack();
|
||||
frame.setLocationRelativeTo(null);
|
||||
frame.setVisible(true);
|
||||
}
|
||||
|
||||
// added in order to have more information in failed case
|
||||
private static void addListeners() {
|
||||
|
||||
list.addMouseMotionListener(
|
||||
new MouseMotionAdapter() {
|
||||
@Override
|
||||
public void mouseDragged(MouseEvent me) {
|
||||
System.out.println(me);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseMoved(MouseEvent me) {
|
||||
System.out.println(me);
|
||||
}
|
||||
});
|
||||
|
||||
list.addMouseListener(
|
||||
new MouseAdapter(){
|
||||
public void mousePressed(MouseEvent me) {
|
||||
System.out.println(me);
|
||||
}
|
||||
public void mouseClicked(MouseEvent me) {
|
||||
System.out.println(me);
|
||||
}
|
||||
public void mouseEntered(MouseEvent me) {
|
||||
System.out.println(me);
|
||||
}
|
||||
public void mouseExited(MouseEvent me) {
|
||||
System.out.println(me);
|
||||
}
|
||||
public void mouseReleased(MouseEvent me) {
|
||||
System.out.println(me);
|
||||
}
|
||||
});
|
||||
|
||||
list.addActionListener(
|
||||
new ActionListener() {
|
||||
public void actionPerformed(ActionEvent ae) {
|
||||
System.out.println(ae);
|
||||
}
|
||||
});
|
||||
|
||||
list.addItemListener(
|
||||
new ItemListener() {
|
||||
public void itemStateChanged(ItemEvent ie) {
|
||||
System.out.println(ie);
|
||||
}
|
||||
});
|
||||
|
||||
list.addFocusListener(
|
||||
new FocusAdapter() {
|
||||
public void focusGained(FocusEvent fe) {
|
||||
System.out.println(fe);
|
||||
}
|
||||
public void focusLost(FocusEvent fe) {
|
||||
System.out.println(fe);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
93
test/jdk/java/awt/List/ListActionEventTest.java
Normal file
93
test/jdk/java/awt/List/ListActionEventTest.java
Normal file
@ -0,0 +1,93 @@
|
||||
/*
|
||||
* Copyright (c) 2002, 2024, 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.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 4089604
|
||||
* @summary Enter key doesn't fire List actionPerformed as specified
|
||||
* @library /java/awt/regtesthelpers
|
||||
* @build PassFailJFrame
|
||||
* @run main/manual ListActionEventTest
|
||||
*/
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Frame;
|
||||
import java.awt.List;
|
||||
import java.awt.Panel;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.ItemEvent;
|
||||
import java.awt.event.ItemListener;
|
||||
|
||||
public class ListActionEventTest {
|
||||
|
||||
private static final String INSTRUCTIONS = """
|
||||
A frame will be shown.
|
||||
1. Click any item in the list (say item 1) in the frame
|
||||
2. A message 'ItemSelected' is displayed on the message window.
|
||||
3. Press the return key on the selected item.
|
||||
4. If the text 'ActionPerformed' is displayed on the message window,
|
||||
then press PASS else press FAIL.""";
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
PassFailJFrame.builder()
|
||||
.title("ListActionEventTest Instructions")
|
||||
.instructions(INSTRUCTIONS)
|
||||
.rows((int) INSTRUCTIONS.lines().count() + 2)
|
||||
.columns(35)
|
||||
.testUI(ListActionEventTest::createTestUI)
|
||||
.logArea()
|
||||
.build()
|
||||
.awaitAndCheck();
|
||||
}
|
||||
|
||||
private static Frame createTestUI() {
|
||||
Frame frame = new Frame("ListActionEventTest frame");
|
||||
|
||||
Panel pnl1 = new Panel();
|
||||
frame.add(pnl1);
|
||||
pnl1.setLayout(new BorderLayout());
|
||||
|
||||
List list = new List();
|
||||
for (int i = 0; i < 5; i++) {
|
||||
list.addItem("Item " + i);
|
||||
}
|
||||
pnl1.add(list);
|
||||
|
||||
list.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent ev) {
|
||||
PassFailJFrame.log("ActionPerformed");
|
||||
}
|
||||
});
|
||||
|
||||
list.addItemListener(new ItemListener() {
|
||||
@Override
|
||||
public void itemStateChanged(ItemEvent ev) {
|
||||
PassFailJFrame.log("ItemSelected");
|
||||
}
|
||||
});
|
||||
frame.pack();
|
||||
return frame;
|
||||
}
|
||||
}
|
80
test/jdk/java/awt/List/MultiSelectionListHorizScrollbar.java
Normal file
80
test/jdk/java/awt/List/MultiSelectionListHorizScrollbar.java
Normal file
@ -0,0 +1,80 @@
|
||||
/*
|
||||
* Copyright (c) 1999, 2024, 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.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 4102881
|
||||
* @summary Ensure multiple selection Lists have horizontal scrollbars when necessary
|
||||
* @library /java/awt/regtesthelpers
|
||||
* @build PassFailJFrame
|
||||
* @run main/manual MultiSelectionListHorizScrollbar
|
||||
*/
|
||||
|
||||
import java.awt.Frame;
|
||||
import java.awt.GridLayout;
|
||||
import java.awt.List;
|
||||
|
||||
public class MultiSelectionListHorizScrollbar {
|
||||
|
||||
private static final String INSTRUCTIONS = """
|
||||
Resize the frame so that the lists are not wide enough
|
||||
to fully display the lines of text they contain.
|
||||
Once the lists are in this state, press pass
|
||||
if both lists display an horizontal scrollbar. Otherwise press fail.""";
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
PassFailJFrame.builder()
|
||||
.title("MultiSelectionListHorizScrollbar Instructions")
|
||||
.instructions(INSTRUCTIONS)
|
||||
.rows((int) INSTRUCTIONS.lines().count() + 2)
|
||||
.columns(35)
|
||||
.testUI(MultiSelectionListHorizScrollbar::createTestUI)
|
||||
.build()
|
||||
.awaitAndCheck();
|
||||
}
|
||||
|
||||
private static Frame createTestUI() {
|
||||
Frame frame = new Frame("MultiSelectionListHorizScrollbar Frame");
|
||||
List singleList = new List(3);
|
||||
List multiList = new List(3, true);
|
||||
|
||||
frame.setLayout(new GridLayout(1, 2));
|
||||
frame.add(singleList);
|
||||
frame.add(multiList);
|
||||
|
||||
singleList.addItem("This is the 1st item in the list! Does it scroll horizontally??");
|
||||
singleList.addItem("This is the 2nd item in the list! Does it scroll horizontally??");
|
||||
singleList.addItem("This is the 4th item in the list! Does it scroll horizontally??");
|
||||
singleList.addItem("This is the 5th item in the list! Does it scroll horizontally??");
|
||||
singleList.addItem("This is the 6th item in the list! Does it scroll horizontally??");
|
||||
|
||||
multiList.addItem("This is the 1st item in the list! Does it scroll horizontally??");
|
||||
multiList.addItem("This is the 2nd item in the list! Does it scroll horizontally??");
|
||||
multiList.addItem("This is the 4th item in the list! Does it scroll horizontally??");
|
||||
multiList.addItem("This is the 5th item in the list! Does it scroll horizontally??");
|
||||
multiList.addItem("This is the 6th item in the list! Does it scroll horizontally??");
|
||||
|
||||
frame.pack();
|
||||
return frame;
|
||||
}
|
||||
}
|
73
test/jdk/java/awt/List/RepaintAfterResize.java
Normal file
73
test/jdk/java/awt/List/RepaintAfterResize.java
Normal file
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2024, 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.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 6308295
|
||||
* @summary XAWTduplicate list item is displayed
|
||||
* @library /java/awt/regtesthelpers
|
||||
* @build PassFailJFrame
|
||||
* @run main/manual RepaintAfterResize
|
||||
*/
|
||||
|
||||
import java.awt.FlowLayout;
|
||||
import java.awt.Frame;
|
||||
import java.awt.List;
|
||||
|
||||
public class RepaintAfterResize {
|
||||
|
||||
private static final String INSTRUCTIONS = """
|
||||
1) A Frame appears with a list
|
||||
2) Resize somehow the frame using mouse
|
||||
3) Move down the vertical scrollbar of the list
|
||||
4) If you see that two selected items are displayed then the test failed.
|
||||
Otherwise, the test passed.""";
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
PassFailJFrame.builder()
|
||||
.title("RepaintAfterResize Instructions")
|
||||
.instructions(INSTRUCTIONS)
|
||||
.rows((int) INSTRUCTIONS.lines().count() + 2)
|
||||
.columns(35)
|
||||
.testUI(RepaintAfterResize::createTestUI)
|
||||
.build()
|
||||
.awaitAndCheck();
|
||||
}
|
||||
|
||||
private static Frame createTestUI() {
|
||||
Frame frame = new Frame("RepaintAfterResize Frame");
|
||||
List list = new List(4, false);
|
||||
|
||||
frame.setLayout (new FlowLayout ());
|
||||
list.setBounds(100, 100, 100, 100);
|
||||
for (int i = 0 ; i < 7 ; i++) {
|
||||
list.add(" " + i);
|
||||
}
|
||||
frame.add(list);
|
||||
list.select(3);
|
||||
|
||||
frame.setSize(100, 100);
|
||||
return frame;
|
||||
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user