From b01a15e4f0b9368a7954b30ac5b986a9eb5f7cec Mon Sep 17 00:00:00 2001 From: K Suman Rajkumaar <70650887+skodanda@users.noreply.github.com> Date: Fri, 15 Jan 2021 09:40:31 +0000 Subject: [PATCH] 8258884: [TEST_BUG] Convert applet-based test open/test/jdk/javax/swing/JMenuItem/8031573/bug8031573.java to a regular java test Reviewed-by: aivanov, serb --- .../swing/JMenuItem/8031573/bug8031573.html | 40 ------- .../swing/JMenuItem/8031573/bug8031573.java | 108 ++++++++++++++---- 2 files changed, 86 insertions(+), 62 deletions(-) delete mode 100644 test/jdk/javax/swing/JMenuItem/8031573/bug8031573.html diff --git a/test/jdk/javax/swing/JMenuItem/8031573/bug8031573.html b/test/jdk/javax/swing/JMenuItem/8031573/bug8031573.html deleted file mode 100644 index b61bbf86ec865..0000000000000 --- a/test/jdk/javax/swing/JMenuItem/8031573/bug8031573.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - -Verify that high resolution system icons are used JCheckBoxMenuItem -on HiDPI displays. - -If the display does not support HiDPI mode press PASS. - -1. Run the test on HiDPI Display. -2. Press the Menu in the applet -3. Check that the icon on the JCheckBoxMenuItem is smooth -If so, press PASS, else press FAIL. - - - - - diff --git a/test/jdk/javax/swing/JMenuItem/8031573/bug8031573.java b/test/jdk/javax/swing/JMenuItem/8031573/bug8031573.java index 60a3c6786324b..4d3f1cd61139e 100644 --- a/test/jdk/javax/swing/JMenuItem/8031573/bug8031573.java +++ b/test/jdk/javax/swing/JMenuItem/8031573/bug8031573.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 2021, 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 @@ -20,45 +20,109 @@ * or visit www.oracle.com if you need additional information or have any * questions. */ + +import java.awt.BorderLayout; import java.awt.FlowLayout; -import javax.swing.JApplet; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import javax.swing.JButton; import javax.swing.JCheckBoxMenuItem; +import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +import javax.swing.JPanel; +import javax.swing.JTextArea; +import javax.swing.JTextField; import javax.swing.SwingUtilities; import javax.swing.UIManager; +import javax.swing.text.JTextComponent; /* @test * @bug 8031573 8040279 8143064 * @summary [macosx] Checkmarks of JCheckBoxMenuItems aren't rendered * in high resolution on Retina - * @author Alexander Scherbatiy - * @run applet/manual=yesno bug8031573.html + * @run main/manual bug8031573 */ -public class bug8031573 extends JApplet { - @Override - public void init() { - try { +public class bug8031573 { + + private static volatile JFrame frame; + private static volatile boolean passed = false; + private static final CountDownLatch latch = new CountDownLatch(1); - UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + public static final String INSTRUCTIONS = "INSTRUCTIONS:\n\n" + + "Verify that high resolution system icons are used for JCheckBoxMenuItem on HiDPI displays.\n" + + "If the display does not support HiDPI mode press PASS.\n" + + "1. Run the test on HiDPI Display.\n" + + "2. Open the Menu.\n" + + "3. Check that the icon on the JCheckBoxMenuItem is smooth.\n" + + " If so, press PASS, else press FAIL.\n"; - SwingUtilities.invokeAndWait(new Runnable() { + public static void main(String args[]) throws Exception { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + try { + SwingUtilities.invokeAndWait(() -> createTestGUI()); - @Override - public void run() { - JMenuBar bar = new JMenuBar(); - JMenu menu = new JMenu("Menu"); - JCheckBoxMenuItem checkBoxMenuItem - = new JCheckBoxMenuItem("JCheckBoxMenuItem"); - checkBoxMenuItem.setSelected(true); - menu.add(checkBoxMenuItem); - bar.add(menu); - setJMenuBar(bar); + if (!latch.await(5, TimeUnit.MINUTES)) { + throw new RuntimeException("Test has timed out!"); + } + if (!passed) { + throw new RuntimeException("Test failed!"); + } + } finally { + SwingUtilities.invokeAndWait(() -> { + if (frame != null) { + frame.dispose(); } }); - } catch (Exception e) { - throw new RuntimeException(e); } } + + private static void createTestGUI() { + frame = new JFrame("bug8031573"); + JMenuBar bar = new JMenuBar(); + JMenu menu = new JMenu("Menu"); + JCheckBoxMenuItem checkBoxMenuItem = new JCheckBoxMenuItem("JCheckBoxMenuItem"); + checkBoxMenuItem.setSelected(true); + menu.add(checkBoxMenuItem); + bar.add(menu); + frame.setJMenuBar(bar); + + JPanel panel = new JPanel(new BorderLayout()); + JTextComponent textComponent = new JTextArea(INSTRUCTIONS); + textComponent.setEditable(false); + panel.add(textComponent, BorderLayout.CENTER); + + JPanel buttonsPanel = new JPanel(new FlowLayout()); + JButton passButton = new JButton("Pass"); + passButton.addActionListener((e) -> { + System.out.println("Test passed!"); + passed = true; + latch.countDown(); + }); + JButton failsButton = new JButton("Fail"); + failsButton.addActionListener((e) -> { + passed = false; + latch.countDown(); + }); + + buttonsPanel.add(passButton); + buttonsPanel.add(failsButton); + panel.add(buttonsPanel, BorderLayout.SOUTH); + + frame.getContentPane().add(panel); + + frame.addWindowListener(new WindowAdapter() { + @Override + public void windowClosing(WindowEvent e) { + latch.countDown(); + } + }); + frame.pack(); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + } }