7070795: High contrast colour scheme fails to be applied to JFormattedTextField
authorrchamyal
Tue, 24 May 2016 14:23:36 +0530
changeset 38993 028440a03621
parent 38992 5e8d53377c10
child 38994 a6b14a17689b
7070795: High contrast colour scheme fails to be applied to JFormattedTextField Reviewed-by: alexsch, serb
jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java
jdk/test/javax/swing/JFormattedTextField/7070795/JFormattedTextFieldTest.java
--- a/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java	Tue May 24 14:19:53 2016 +0530
+++ b/jdk/src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java	Tue May 24 14:23:36 2016 +0530
@@ -1085,6 +1085,8 @@
               }),
             "FormattedTextField.inactiveBackground", ReadOnlyTextBackground,
             "FormattedTextField.disabledBackground", DisabledTextBackground,
+            "FormattedTextField.background", TextBackground,
+            "FormattedTextField.foreground", WindowTextColor,
 
             // *** Panel
             "Panel.font", ControlFont,
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JFormattedTextField/7070795/JFormattedTextFieldTest.java	Tue May 24 14:23:36 2016 +0530
@@ -0,0 +1,144 @@
+/*
+ * 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
+ * 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 7070795
+ * @summary High contrast colour scheme fails to be applied to JFormattedTextField
+ * @requires (os.family == "windows")
+ * @run main/manual JFormattedTextFieldTest
+ */
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.text.NumberFormat;
+import javax.swing.JButton;
+import javax.swing.JFormattedTextField;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+
+public class JFormattedTextFieldTest implements ActionListener {
+
+    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 JFrame mainFrame;
+
+    public static void main(String[] args) throws Exception {
+        JFormattedTextFieldTest jFormattedTextFieldTest = new JFormattedTextFieldTest();
+    }
+
+    public JFormattedTextFieldTest() throws Exception {
+        createUI();
+    }
+
+    public final void createUI() throws Exception {
+
+        UIManager.setLookAndFeel("com.sun.java.swing.plaf."
+                + "windows.WindowsLookAndFeel");
+
+        SwingUtilities.invokeAndWait(() -> {
+
+            mainFrame = new JFrame("Window LAF JFormattedTextField Test");
+            layout = new GridBagLayout();
+            mainControlPanel = new JPanel(layout);
+            resultButtonPanel = new JPanel(layout);
+
+            GridBagConstraints gbc = new GridBagConstraints();
+            String instructions
+                    = "<html>INSTRUCTIONS:<br>"
+                    + "Set Windows Theme to HighContrast#1.<br><br>"
+                    + "(ControlPanel->Personalization->High Contrast#1)<br><br>"
+                    + "If TextFiled colors are same test"
+                    + " passes else failed.<br><br></html>";
+
+            instructionText = new JLabel();
+            instructionText.setText(instructions);
+
+            gbc.gridx = 0;
+            gbc.gridy = 0;
+            gbc.fill = GridBagConstraints.HORIZONTAL;
+            mainControlPanel.add(instructionText, gbc);
+
+            passButton = new JButton("Pass");
+            passButton.setActionCommand("Pass");
+            passButton.addActionListener(JFormattedTextFieldTest.this);
+            failButton = new JButton("Fail");
+            failButton.setActionCommand("Fail");
+            failButton.addActionListener(JFormattedTextFieldTest.this);
+            gbc.gridx = 0;
+            gbc.gridy = 0;
+            resultButtonPanel.add(passButton, gbc);
+            gbc.gridx = 1;
+            gbc.gridy = 0;
+            resultButtonPanel.add(failButton, gbc);
+            gbc.gridx = 3;
+            gbc.gridy = 0;
+            resultButtonPanel.add(new JTextField("12345"), gbc);
+
+            NumberFormat format = NumberFormat.getIntegerInstance();
+            format.setMaximumIntegerDigits(5);
+            JFormattedTextField formatted = new JFormattedTextField(format);
+            formatted.setText("67891");
+            gbc.gridx = 5;
+            gbc.gridy = 0;
+            resultButtonPanel.add(formatted, gbc);
+            gbc.gridx = 0;
+            gbc.gridy = 1;
+            mainControlPanel.add(resultButtonPanel, gbc);
+
+            mainFrame.add(mainControlPanel);
+            mainFrame.setSize(400, 200);
+            mainFrame.setLocationRelativeTo(null);
+            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();
+    }
+
+}
+