changeset 14331:82ca44ca8285

8153056: 8152647(duplicate of 6439354) Manual Test always passes Reviewed-by: alexsch, psadhukhan
author pkbalakr
date Mon, 18 Apr 2016 15:39:29 +0530
parents f92ee6e0d1f2
children 6e22aca29b0d
files test/javax/swing/LookAndFeel/6439354/TitledBorderTest.java
diffstat 1 files changed, 98 insertions(+), 68 deletions(-) [+]
line wrap: on
line diff
--- a/test/javax/swing/LookAndFeel/6439354/TitledBorderTest.java	Sat Apr 16 23:39:45 2016 +0300
+++ b/test/javax/swing/LookAndFeel/6439354/TitledBorderTest.java	Mon Apr 18 15:39:29 2016 +0530
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 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
@@ -23,7 +23,7 @@
 
  /*
  * @test
- * @bug 6439354
+ * @bug 8153056 8152647 6439354
  * @summary Verify TitleBorder appearance Color/Visibility for WLAF
  * @requires (os.family == "windows")
  * @run main/manual TitledBorderTest
@@ -33,6 +33,7 @@
 import java.awt.GridBagLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.util.concurrent.CountDownLatch;
 import javax.swing.BorderFactory;
 import javax.swing.JButton;
 import javax.swing.JFrame;
@@ -41,7 +42,26 @@
 import javax.swing.SwingUtilities;
 import javax.swing.UIManager;
 
-public class TitledBorderTest implements ActionListener {
+public class TitledBorderTest {
+
+    public static void main(String args[]) throws Exception {
+        final CountDownLatch latch = new CountDownLatch(1);
+
+        TitledBorder test = new TitledBorder(latch);
+        Thread T1 = new Thread(test);
+        T1.start();
+
+        // wait for latch to complete
+        latch.await();
+
+        if (test.testResult == false) {
+            throw new RuntimeException("User Clicked Fail!"
+                    + " TitledBorder Not Valid");
+        }
+    }
+}
+
+class TitledBorder implements Runnable {
 
     private static GridBagLayout layout;
     private static JPanel mainControlPanel;
@@ -50,88 +70,98 @@
     private static JButton passButton;
     private static JButton failButton;
     private static JFrame mainFrame;
+    private final CountDownLatch latch;
+    public boolean testResult = false;
 
-    public static void main(String[] args) throws Exception {
-        TitledBorderTest titledBorderTest = new TitledBorderTest();
+    public TitledBorder(CountDownLatch latch) throws Exception {
+        this.latch = latch;
     }
 
-    public TitledBorderTest() throws Exception {
-        createUI();
+    @Override
+    public void run() {
+
+        try {
+            createUI();
+        } catch (Exception ex) {
+            if (mainFrame != null) {
+                mainFrame.dispose();
+            }
+            latch.countDown();
+            throw new RuntimeException("createUI Failed: " + ex.getMessage());
+        }
+
     }
 
     public final void createUI() throws Exception {
 
         UIManager.setLookAndFeel("com.sun.java.swing.plaf."
                 + "windows.WindowsLookAndFeel");
+        SwingUtilities.invokeAndWait(new Runnable() {
+            @Override
+            public void run() {
+                mainFrame = new JFrame("Window LAF TitledBorder Test");
+                layout = new GridBagLayout();
+                mainControlPanel = new JPanel(layout);
+                resultButtonPanel = new JPanel(layout);
 
-        SwingUtilities.invokeAndWait(() -> {
+                GridBagConstraints gbc = new GridBagConstraints();
+                String instructions
+                        = "INSTRUCTIONS:"
+                        + "\n set Windows Theme to HighContrast#1."
+                        + "\n (ControlPanel->Personalization->High Contrast#1)"
+                        + "\n If Titled Border(Border Line) is visible then test"
+                        + " passes else failed.";
 
-            mainFrame = new JFrame("Window LAF TitledBorder Test");
-            layout = new GridBagLayout();
-            mainControlPanel = new JPanel(layout);
-            resultButtonPanel = new JPanel(layout);
+                instructionTextArea = new JTextArea();
+                instructionTextArea.setText(instructions);
+                instructionTextArea.setEnabled(false);
+                instructionTextArea.setDisabledTextColor(Color.black);
+                instructionTextArea.setBackground(Color.white);
 
-            GridBagConstraints gbc = new GridBagConstraints();
-            String instructions
-                    = "INSTRUCTIONS:"
-                    + "\n set Windows Theme to HighContrast#1."
-                    + "\n (ControlPanel->Personalization->High Contrast#1)"
-                    + "\n If Titled Border(Border Line) is visible then test"
-                    + " passes else failed.";
+                gbc.gridx = 0;
+                gbc.gridy = 0;
+                gbc.fill = GridBagConstraints.HORIZONTAL;
+                mainControlPanel.add(instructionTextArea, gbc);
 
-            instructionTextArea = new JTextArea();
-            instructionTextArea.setText(instructions);
-            instructionTextArea.setEnabled(false);
-            instructionTextArea.setDisabledTextColor(Color.black);
-            instructionTextArea.setBackground(Color.white);
+                mainControlPanel.setBorder(BorderFactory.
+                        createTitledBorder("Titled Border"));
 
-            gbc.gridx = 0;
-            gbc.gridy = 0;
-            gbc.fill = GridBagConstraints.HORIZONTAL;
-            mainControlPanel.add(instructionTextArea, gbc);
+                passButton = new JButton("Pass");
+                passButton.setActionCommand("Pass");
+                passButton.addActionListener((ActionEvent e) -> {
+                    System.out.println("Pass Button pressed!");
+                    testResult = true;
+                    mainFrame.dispose();
+                    latch.countDown();
 
-            mainControlPanel.setBorder(BorderFactory.
-                    createTitledBorder("Titled Border"));
+                });
+                failButton = new JButton("Fail");
+                failButton.setActionCommand("Fail");
+                failButton.addActionListener(new ActionListener() {
+                    @Override
+                    public void actionPerformed(ActionEvent e) {
+                        System.out.println("Fail Button pressed!");
+                        testResult = false;
+                        mainFrame.dispose();
+                        latch.countDown();
+                    }
+                });
+                gbc.gridx = 0;
+                gbc.gridy = 0;
+                resultButtonPanel.add(passButton, gbc);
+                gbc.gridx = 1;
+                gbc.gridy = 0;
+                resultButtonPanel.add(failButton, gbc);
 
-            passButton = new JButton("Pass");
-            passButton.setActionCommand("Pass");
-            passButton.addActionListener(TitledBorderTest.this);
-            failButton = new JButton("Fail");
-            failButton.setActionCommand("Fail");
-            failButton.addActionListener(TitledBorderTest.this);
-            gbc.gridx = 0;
-            gbc.gridy = 0;
-            resultButtonPanel.add(passButton, gbc);
-            gbc.gridx = 1;
-            gbc.gridy = 0;
-            resultButtonPanel.add(failButton, gbc);
+                gbc.gridx = 0;
+                gbc.gridy = 1;
+                mainControlPanel.add(resultButtonPanel, gbc);
 
-            gbc.gridx = 0;
-            gbc.gridy = 1;
-            mainControlPanel.add(resultButtonPanel, gbc);
+                mainFrame.add(mainControlPanel);
+                mainFrame.pack();
+                mainFrame.setVisible(true);
+            }
+        });
 
-            mainFrame.add(mainControlPanel);
-            mainFrame.pack();
-            mainFrame.setVisible(true);
-        });
     }
-
-    @Override
-    public void actionPerformed(ActionEvent evt) {
-        if (evt.getSource() instanceof JButton) {
-            JButton btn = (JButton) evt.getSource();
-            cleanUp();
-            switch (btn.getActionCommand()) {
-                case "Pass":
-                    break;
-                case "Fail":
-                    throw new AssertionError("User Clicked Fail!");
-            }
-        }
-    }
-
-    private static void cleanUp() {
-        mainFrame.dispose();
-    }
-
 }