Skip to content

8352686: Opensource JInternalFrame tests - series3 #24466

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 2 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 84 additions & 0 deletions test/jdk/javax/swing/JInternalFrame/bug4151444.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
/*
* Copyright (c) 2003, 2025, 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 4151444
* @summary The maximize button acts like the restore button
* @library /java/awt/regtesthelpers
* @build PassFailJFrame
* @run main/manual bug4151444
*/

import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLayeredPane;
import javax.swing.UIManager;


public class bug4151444 {

private static JFrame frame;
private static JInternalFrame interFrame;

private static final String INSTRUCTIONS = """
- maximize the internal frame
- then minimize the internal frame
- then maximize the internal frame again
- Check whether internal frame is maximized
- Test will fail automatically even if "Pass" is pressed
if internal frame is not maximized.""";

public static void main(String[] args) throws Exception {

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

PassFailJFrame pfj = PassFailJFrame.builder()
.title("bug4151444 Instructions")
.instructions(INSTRUCTIONS)
.columns(45)
.testUI(bug4151444::createTestUI)
.build();
try {
pfj.awaitAndCheck();
} finally {
if (!interFrame.isMaximum()) {
throw new RuntimeException ("Test failed. The maximize button acts like the restore button");
}
}
}

private static JFrame createTestUI() {
JFrame frame = new JFrame("bug4151444 frame");
JDesktopPane desktop = new JDesktopPane();
frame.setContentPane(desktop);
interFrame = new JInternalFrame(
"Internal frame", true, true, true, true);
desktop.add(interFrame, JLayeredPane.DEFAULT_LAYER);
interFrame.setBounds(0, 0, 200, 100);
interFrame.setVisible(true);
frame.setSize(300, 200);
return frame;
}
}
109 changes: 109 additions & 0 deletions test/jdk/javax/swing/JInternalFrame/bug4215380.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
/*
* Copyright (c) 2000, 2025, 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 4215380
* @summary Internal Frame should get focus
* @key headful
* @run main bug4215380
*/

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.InputEvent;
import java.awt.Point;
import java.awt.Robot;

import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class bug4215380 {

private static String button;
private static JButton b;
private static JFrame frame;
private static JInternalFrame jif;
private static volatile Point loc;
private static volatile Dimension size;

public static void main(String[] args) throws Exception {
Robot robot = new Robot();
try {
SwingUtilities.invokeAndWait(() -> {
frame = new JFrame("bug4215380");
JDesktopPane desktop = new JDesktopPane();
frame.add(desktop, BorderLayout.CENTER);

jif = iFrame(1);
desktop.add(jif, JLayeredPane.DEFAULT_LAYER);
desktop.add(iFrame(2), JLayeredPane.DEFAULT_LAYER);
frame.setSize(200, 200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
});
robot.waitForIdle();
robot.delay(1000);
SwingUtilities.invokeAndWait(() -> {
loc = b.getLocationOnScreen();
size = b.getSize();
});
robot.mouseMove(loc.x + size.width / 2, loc.y + size.height / 2);
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
robot.waitForIdle();
robot.delay(500);
if (!(jif.isSelected()) && !button.equals("Frame 1")) {
throw new RuntimeException("Internal frame \"Frame 1\" should be selected...");
}
} finally {
SwingUtilities.invokeAndWait(() -> {
if (frame != null) {
frame.dispose();
}
});
}
}

private static JInternalFrame iFrame(int i) {
JInternalFrame frame = new JInternalFrame("Frame " + i);
JPanel panel = new JPanel();
JButton bt = new JButton("Button " + i);
if (i == 1) {
b = bt;
}
bt.addActionListener(e -> button = ((JButton)e.getSource()).getText());

panel.add(bt);

frame.getContentPane().add(panel);
frame.setBounds(10, i * 80 - 70, 120, 90);
frame.setVisible(true);
return frame;
}
}
126 changes: 126 additions & 0 deletions test/jdk/javax/swing/JInternalFrame/bug4321312.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
/*
* Copyright (c) 2000, 2025, 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 4321312
* @summary Verifies no Exception thrown from BasicInternalFrameUI$BorderListener
* @key headful
* @run main bug4321312
*/

import java.awt.Dimension;
import java.awt.event.InputEvent;
import java.awt.event.MouseEvent;
import java.awt.Point;
import java.awt.Robot;

import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class bug4321312 {

private static JFrame frame;
private static MyInternalFrame jif;
private static volatile Point loc;
private static volatile Dimension size;

static boolean fails;
static Exception exc;

private static synchronized boolean isFails() {
return fails;
}

private static synchronized void setFails(Exception e) {
fails = true;
exc = e;
}

public static void main(String[] args) throws Exception {
Robot robot = new Robot();
try {
SwingUtilities.invokeAndWait(() -> {
try {
UIManager.setLookAndFeel(
"com.sun.java.swing.plaf.motif.MotifLookAndFeel");
} catch (ClassNotFoundException | InstantiationException
| UnsupportedLookAndFeelException
| IllegalAccessException e) {
throw new RuntimeException(e);
}

frame = new JFrame("bug4321312");
JDesktopPane jdp = new JDesktopPane();
frame.add(jdp);

jif = new MyInternalFrame("Internal Frame", true);
jdp.add(jif);
jif.setSize(150, 150);
jif.setVisible(true);

frame.setSize(200, 200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
});
robot.waitForIdle();
robot.delay(1000);
SwingUtilities.invokeAndWait(() -> {
loc = jif.getLocationOnScreen();
size = jif.getSize();
});
robot.mouseMove(loc.x + size.width / 2, loc.y + size.height / 2);
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
robot.waitForIdle();
robot.delay(200);
if (isFails()) {
throw new RuntimeException(exc);
}
} finally {
SwingUtilities.invokeAndWait(() -> {
if (frame != null) {
frame.dispose();
}
});
}
}

static class MyInternalFrame extends JInternalFrame {
MyInternalFrame(String str, boolean b) {
super(str, b);
}

protected void processMouseEvent(MouseEvent e) {
try {
super.processMouseEvent(e);
} catch (Exception exc) {
setFails(exc);
}
}
}
}
Loading