--- old/test/java/awt/image/multiresolution/MultiResolutionTrayIconTest/MultiResolutionTrayIconTest.java 2016-09-09 17:27:36.082419000 +0530
+++ new/test/java/awt/image/multiresolution/MultiResolutionTrayIconTest/MultiResolutionTrayIconTest.java 2016-09-09 17:27:35.794275000 +0530
@@ -22,96 +22,176 @@
*/
-/*
- @test
- @bug 8150176 8151773
- @summary Check if correct resolution variant is used for tray icon.
- @author a.stepanov
- @run applet/manual=yesno MultiResolutionTrayIconTest.html
-*/
-
-
-import java.applet.Applet;
-import java.awt.*;
-import java.awt.event.*;
-import java.awt.image.*;
-
-
-public class MultiResolutionTrayIconTest extends Applet {
-
- private SystemTray tray;
- private TrayIcon icon, iconMRI;
-
- public void init() { this.setLayout(new BorderLayout()); }
-
- public void start() {
-
- boolean trayIsSupported = SystemTray.isSupported();
- Button b = new Button("Start");
- if (trayIsSupported) {
-
- prepareIcons();
- b.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) { doTest(); }
- });
- } else {
- b.setLabel("not supported");
- b.setEnabled(false);
- System.out.println("system tray is not supported");
- }
- add(b, BorderLayout.CENTER);
+/**
+ * @test
+ * @key headful
+ * @bug 8150176 8151773
+ * @summary Check if correct resolution variant is used for tray icon.
+ * @run main/manual/othervm -Dsun.java2d.uiScale=2 MultiResolutionTrayIconTest
+ */
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.GridBagLayout;
+import java.awt.GridBagConstraints;
+import java.awt.SystemTray;
+import java.awt.TrayIcon;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.image.BaseMultiResolutionImage;
+import java.awt.image.BufferedImage;
+import javax.swing.JFrame;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.SwingUtilities;
+import java.util.concurrent.CountDownLatch;
+
+public class MultiResolutionTrayIconTest {
+ private static SystemTray tray;
+ private static TrayIcon icon;
+ private static GridBagLayout layout;
+ private static JPanel mainControlPanel;
+ private static JPanel resultButtonPanel;
+ private static JLabel instructionText;
+ private static JButton passButton;
+ private static JButton failButton;
+ private static JButton startButton;
+ private static JFrame mainFrame;
+ private static CountDownLatch latch;
+
+ public static void main(String[] args) throws Exception {
+ latch = new CountDownLatch(1);
+ createUI();
+ latch.await();
+ }
+
+ public static void createUI() throws Exception {
+ SwingUtilities.invokeAndWait(new Runnable() {
+ public void run() {
+ mainFrame = new JFrame("TrayIcon Test");
+ boolean trayIsSupported = SystemTray.isSupported();
+ tray = SystemTray.getSystemTray();
+ Dimension d = tray.getTrayIconSize();
+ icon = new TrayIcon(createIcon(d.width, d.height));
+ icon.setImageAutoSize(false);
+ layout = new GridBagLayout();
+ mainControlPanel = new JPanel(layout);
+ resultButtonPanel = new JPanel(layout);
+
+ GridBagConstraints gbc = new GridBagConstraints();
+ String instructions
+ = "INSTRUCTIONS:
"
+ + "Press start button to add icon to system tray.
"
+ + "If Icon color is green test"
+ + " passes else failed.
";
+
+ instructionText = new JLabel();
+ instructionText.setText(instructions);
+
+ gbc.gridx = 0;
+ gbc.gridy = 0;
+ gbc.fill = GridBagConstraints.HORIZONTAL;
+ mainControlPanel.add(instructionText, gbc);
+ startButton = new JButton("Start");
+ startButton.setActionCommand("Start");
+ if (trayIsSupported) {
+
+ startButton.addActionListener((ActionEvent e) -> {
+ doTest();
+ });
+ } else {
+ startButton.setEnabled(false);
+ System.out.println("system tray is not supported");
+ latch.countDown();
+ }
+ gbc.gridx = 0;
+ gbc.gridy = 0;
+ resultButtonPanel.add(startButton, gbc);
+
+ passButton = new JButton("Pass");
+ passButton.setActionCommand("Pass");
+ passButton.addActionListener((ActionEvent e) -> {
+ latch.countDown();
+ removeIcon();
+ mainFrame.dispose();
+ });
+ failButton = new JButton("Fail");
+ failButton.setActionCommand("Fail");
+ failButton.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ removeIcon();
+ latch.countDown();
+ mainFrame.dispose();
+ throw new RuntimeException("Test Failed");
+ }
+ });
+ gbc.gridx = 1;
+ gbc.gridy = 0;
+ resultButtonPanel.add(passButton, gbc);
+ gbc.gridx = 2;
+ gbc.gridy = 0;
+ resultButtonPanel.add(failButton, gbc);
+
+ gbc.gridx = 0;
+ gbc.gridy = 1;
+ mainControlPanel.add(resultButtonPanel, gbc);
+
+ mainFrame.add(mainControlPanel);
+ mainFrame.setSize(400, 200);
+ mainFrame.setLocationRelativeTo(null);
+ mainFrame.setVisible(true);
+
+ mainFrame.addWindowListener(new WindowAdapter() {
+ @Override
+ public void windowClosing(WindowEvent e) {
+ removeIcon();
+ latch.countDown();
+ mainFrame.dispose();
+ }
+ });
+ }
+ });
+
+ }
- validate();
- setVisible(true);
+ private static BaseMultiResolutionImage createIcon(int w, int h) {
+ return new BaseMultiResolutionImage(
+ new BufferedImage[]{generateImage(w, h, 1, Color.RED),
+ generateImage(w, h, 2, Color.GREEN)});
}
- private BufferedImage generateImage(int w, int h, Color c) {
+ private static BufferedImage generateImage(int w, int h, int scale, Color c) {
- BufferedImage img = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
+ int x = w * scale, y = h * scale;
+ BufferedImage img = new BufferedImage(x, y, BufferedImage.TYPE_INT_RGB);
Graphics g = img.getGraphics();
g.setColor(c);
- g.fillRect(0, 0, w, h);
+ g.fillRect(0, 0, x, y);
g.setColor(Color.WHITE);
- int r = (Math.min(w, h) >= 8) ? 3 : 1;
- g.fillRect(r, r, w - 2 * r, h - 2 * r);
+ g.fillRect(x / 3, y / 3, x / 3, y / 3);
return img;
}
- private void prepareIcons() {
+ private static void doTest() {
- tray = SystemTray.getSystemTray();
- Dimension d = tray.getTrayIconSize();
- int w = d.width, h = d.height;
-
- BufferedImage img = generateImage(w, h, Color.BLUE);
- // use wrong icon size for "nok"
- BufferedImage nok = generateImage(w / 2 + 2, h / 2 + 2, Color.RED);
- BaseMultiResolutionImage mri =
- new BaseMultiResolutionImage(new BufferedImage[] {nok, img});
- icon = new TrayIcon(img);
- icon.setImageAutoSize(true); // just in case
- iconMRI = new TrayIcon(mri);
- iconMRI.setImageAutoSize(true);
- }
-
- private void doTest() {
-
- if (tray.getTrayIcons().length > 0) { return; } // icons were added already
+ if (tray.getTrayIcons().length > 0) {
+ return;
+ }
try {
tray.add(icon);
- tray.add(iconMRI);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
- public void stop() {
-
- // check for null, just in case
+ private static void removeIcon() {
if (tray != null) {
tray.remove(icon);
- tray.remove(iconMRI);
}
}
}
+