8316149: Open source several Swing JTree JViewport KeyboardManager tests
Reviewed-by: psadhukhan, tr
This commit is contained in:
parent
455cfae1e1
commit
a021dbcb9e
105
test/jdk/javax/swing/JTree/bug4696499.java
Normal file
105
test/jdk/javax/swing/JTree/bug4696499.java
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2003, 2023, 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 4696499
|
||||||
|
* @summary new tree model asked about nodes of previous tree model
|
||||||
|
* @run main bug4696499
|
||||||
|
*/
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import javax.swing.JTree;
|
||||||
|
import javax.swing.event.TreeModelListener;
|
||||||
|
import javax.swing.tree.DefaultMutableTreeNode;
|
||||||
|
import javax.swing.tree.TreeModel;
|
||||||
|
import javax.swing.tree.TreeNode;
|
||||||
|
import javax.swing.tree.TreePath;
|
||||||
|
|
||||||
|
public class bug4696499 {
|
||||||
|
public static void main(String[] args) throws Exception {
|
||||||
|
JTree tree = new JTree();
|
||||||
|
TreeModel model = new MyModel();
|
||||||
|
tree.setModel(model);
|
||||||
|
|
||||||
|
tree.setSelectionRow(1);
|
||||||
|
model = new MyModel();
|
||||||
|
tree.setModel(model);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class MyModel implements TreeModel {
|
||||||
|
private Object root = "Root";
|
||||||
|
private ArrayList listeners = new ArrayList();
|
||||||
|
private TreeNode ONE;
|
||||||
|
static int next = 1;
|
||||||
|
|
||||||
|
MyModel() {
|
||||||
|
ONE = new DefaultMutableTreeNode(next);
|
||||||
|
next *= 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addTreeModelListener(TreeModelListener l) {
|
||||||
|
listeners.add(l);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeTreeModelListener(TreeModelListener l) {
|
||||||
|
listeners.remove(l);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void valueForPathChanged(TreePath tp, Object newValue) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getRoot() {
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isLeaf(Object o) {
|
||||||
|
return o == ONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getIndexOfChild(Object parent, Object child) {
|
||||||
|
if (parent != root || child != ONE) {
|
||||||
|
throw new RuntimeException("This method is called with the child " +
|
||||||
|
"of the previous tree model");
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getChildCount(Object o) {
|
||||||
|
if (o == root) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
if (o == ONE) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
throw new IllegalArgumentException(o.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getChild(Object o, int index) {
|
||||||
|
if (o != root || index != 0) {
|
||||||
|
throw new IllegalArgumentException(o + ", " + index);
|
||||||
|
}
|
||||||
|
return ONE;
|
||||||
|
}
|
||||||
|
}
|
42
test/jdk/javax/swing/JTree/bug5039542.java
Normal file
42
test/jdk/javax/swing/JTree/bug5039542.java
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2004, 2023, 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 5039542
|
||||||
|
* @summary JTree's setToolTipText() doesn't work
|
||||||
|
* @run main bug5039542
|
||||||
|
*/
|
||||||
|
|
||||||
|
import javax.swing.JTree;
|
||||||
|
|
||||||
|
public class bug5039542 {
|
||||||
|
public static void main(String[] args) throws Exception {
|
||||||
|
final String exampleStr = "TEST";
|
||||||
|
JTree tree = new JTree();
|
||||||
|
tree.setToolTipText(exampleStr);
|
||||||
|
if (tree.getToolTipText(null) != exampleStr) {
|
||||||
|
throw new RuntimeException("The default JTree tooltip text " +
|
||||||
|
"have to be used if renderer doesn't provide it.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
73
test/jdk/javax/swing/JViewport/bug4546474.java
Normal file
73
test/jdk/javax/swing/JViewport/bug4546474.java
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2003, 2023, 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 4546474
|
||||||
|
* @summary JScrollPane's always-visible scrollbars not updated when
|
||||||
|
* viewport is replaced
|
||||||
|
* @run main bug4546474
|
||||||
|
*/
|
||||||
|
|
||||||
|
import java.awt.Dimension;
|
||||||
|
import java.awt.Robot;
|
||||||
|
|
||||||
|
import javax.swing.JPanel;
|
||||||
|
import javax.swing.JScrollBar;
|
||||||
|
import javax.swing.JScrollPane;
|
||||||
|
import javax.swing.SwingUtilities;
|
||||||
|
|
||||||
|
public class bug4546474 {
|
||||||
|
static JScrollPane scrollpane;
|
||||||
|
static JScrollBar sbar;
|
||||||
|
static volatile boolean viewChanged;
|
||||||
|
|
||||||
|
public static void main(String[] args) throws Exception {
|
||||||
|
SwingUtilities.invokeAndWait(() -> {
|
||||||
|
JPanel panel = new JPanel();
|
||||||
|
panel.setPreferredSize(new Dimension(500, 500));
|
||||||
|
scrollpane = new JScrollPane(panel,
|
||||||
|
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
|
||||||
|
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
|
||||||
|
sbar = scrollpane.getVerticalScrollBar();
|
||||||
|
});
|
||||||
|
|
||||||
|
Robot robot = new Robot();
|
||||||
|
robot.delay(500);
|
||||||
|
SwingUtilities.invokeAndWait(() -> {
|
||||||
|
sbar.addAdjustmentListener(e -> viewChanged = true);
|
||||||
|
scrollpane.setViewportView(null);
|
||||||
|
});
|
||||||
|
robot.delay(500);
|
||||||
|
if (!viewChanged) {
|
||||||
|
viewChanged = true;
|
||||||
|
}
|
||||||
|
robot.delay(500);
|
||||||
|
|
||||||
|
SwingUtilities.invokeAndWait(() -> {
|
||||||
|
if (sbar.getVisibleAmount() > 0) {
|
||||||
|
throw new RuntimeException("Vertical scrollbar is not " +
|
||||||
|
"updated when viewport is replaced");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
55
test/jdk/javax/swing/JViewport/bug4677611.java
Normal file
55
test/jdk/javax/swing/JViewport/bug4677611.java
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2003, 2023, 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 4677611
|
||||||
|
* @summary JViewport sets Opaque after UpdateUI (prevents UI delegates
|
||||||
|
* to determine look)
|
||||||
|
* @run main bug4677611
|
||||||
|
*/
|
||||||
|
|
||||||
|
import java.awt.Color;
|
||||||
|
|
||||||
|
import javax.swing.JScrollPane;
|
||||||
|
import javax.swing.JViewport;
|
||||||
|
|
||||||
|
public class bug4677611 {
|
||||||
|
public static void main(String[] args) throws Exception {
|
||||||
|
JScrollPane sp = new JScrollPane();
|
||||||
|
JViewport vp = new MyViewport();
|
||||||
|
vp.setBackground(Color.blue);
|
||||||
|
sp.setViewport(vp);
|
||||||
|
|
||||||
|
if (vp.isOpaque()) {
|
||||||
|
throw new RuntimeException("JViewport shouldn't set Opaque " +
|
||||||
|
"after update the UI");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static class MyViewport extends JViewport {
|
||||||
|
public void updateUI() {
|
||||||
|
setOpaque(false);
|
||||||
|
super.updateUI();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
118
test/jdk/javax/swing/KeyboardManager/bug4345798.java
Normal file
118
test/jdk/javax/swing/KeyboardManager/bug4345798.java
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2000, 2023, 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 4345798
|
||||||
|
* @summary Tests if Pressing enter to dismiss menu works when a JRootPane
|
||||||
|
* has a default button.
|
||||||
|
* @key headful
|
||||||
|
* @run main bug4345798
|
||||||
|
*/
|
||||||
|
|
||||||
|
import java.awt.Point;
|
||||||
|
import java.awt.Robot;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.awt.event.InputEvent;
|
||||||
|
import java.awt.event.KeyEvent;
|
||||||
|
|
||||||
|
import javax.swing.JButton;
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JMenu;
|
||||||
|
import javax.swing.JMenuBar;
|
||||||
|
import javax.swing.JMenuItem;
|
||||||
|
import javax.swing.JRootPane;
|
||||||
|
import javax.swing.SwingUtilities;
|
||||||
|
|
||||||
|
public class bug4345798 {
|
||||||
|
private static JFrame f;
|
||||||
|
private static JButton b;
|
||||||
|
private static JMenu menu;
|
||||||
|
private static volatile boolean passed = true;
|
||||||
|
private static volatile Point p;
|
||||||
|
|
||||||
|
public static void main(String[] args) throws Exception {
|
||||||
|
try {
|
||||||
|
SwingUtilities.invokeAndWait(() -> {
|
||||||
|
f = new JFrame("bug4345798");
|
||||||
|
JMenuBar mbar = new JMenuBar();
|
||||||
|
JMenuItem item = new JMenuItem("Open...");
|
||||||
|
menu = new JMenu("File");
|
||||||
|
item.addActionListener(new TestActionListener());
|
||||||
|
menu.add(item);
|
||||||
|
mbar.add(menu);
|
||||||
|
|
||||||
|
f.setJMenuBar(mbar);
|
||||||
|
|
||||||
|
b = new JButton("Default");
|
||||||
|
b.addActionListener(new TestActionListener());
|
||||||
|
f.getContentPane().add(b);
|
||||||
|
JRootPane rp = f.getRootPane();
|
||||||
|
rp.setDefaultButton(b);
|
||||||
|
|
||||||
|
f.setSize(200, 200);
|
||||||
|
f.setLocationRelativeTo(null);
|
||||||
|
f.setVisible(true);
|
||||||
|
b.requestFocus();
|
||||||
|
});
|
||||||
|
|
||||||
|
Robot robot = new Robot();
|
||||||
|
robot.setAutoDelay(100);
|
||||||
|
robot.waitForIdle();
|
||||||
|
robot.delay(1000);
|
||||||
|
|
||||||
|
SwingUtilities.invokeAndWait(() -> p = menu.getLocationOnScreen());
|
||||||
|
robot.mouseMove(p.x, p.y);
|
||||||
|
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
|
||||||
|
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
|
||||||
|
|
||||||
|
robot.keyPress(KeyEvent.VK_F10);
|
||||||
|
robot.keyRelease(KeyEvent.VK_F10);
|
||||||
|
|
||||||
|
robot.keyPress(KeyEvent.VK_DOWN);
|
||||||
|
robot.keyRelease(KeyEvent.VK_DOWN);
|
||||||
|
|
||||||
|
robot.keyPress(KeyEvent.VK_ENTER);
|
||||||
|
robot.keyRelease(KeyEvent.VK_ENTER);
|
||||||
|
} finally {
|
||||||
|
SwingUtilities.invokeAndWait(() -> {
|
||||||
|
if (f != null) {
|
||||||
|
f.dispose();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!passed) {
|
||||||
|
throw new RuntimeException("Test failed.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static class TestActionListener implements ActionListener {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
if (e.getSource() == b) {
|
||||||
|
passed = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user