8041725: Nimbus JList selection colors persist across L&F changes
Reviewed-by: alexsch, alexp
--- a/jdk/src/share/classes/javax/swing/plaf/nimbus/skin.laf Thu May 15 20:09:38 2014 +0400
+++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/skin.laf Thu May 15 20:21:17 2014 +0400
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
- Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 1998, 2014, 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
@@ -13424,10 +13424,10 @@
<state stateKeys="Selected">
<style>
<textForeground>
- <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
+ <matte red="255" green="255" blue="255" alpha="255" uiDefaultParentName="nimbusLightBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
</textForeground>
<textBackground>
- <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
+ <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
</textBackground>
<background/>
<inherit-textForeground>false</inherit-textForeground>
@@ -13453,7 +13453,7 @@
<style>
<textForeground/>
<textBackground>
- <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
+ <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
</textBackground>
<background/>
<inherit-textBackground>false</inherit-textBackground>
@@ -13477,7 +13477,7 @@
<state stateKeys="Disabled">
<style>
<textForeground>
- <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
+ <matte red="142" green="143" blue="145" alpha="255" uiDefaultParentName="nimbusDisabledText" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
</textForeground>
<textBackground/>
<background/>
@@ -13520,7 +13520,7 @@
</textForeground>
<textBackground/>
<background>
- <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0" uiResource="false"/>
+ <matte red="57" green="105" blue="138" alpha="255" uiDefaultParentName="nimbusSelectionBackground" hueOffset="0.0" saturationOffset="0.0" brightnessOffset="0.0" alphaOffset="0"/>
</background>
<inherit-textForeground>false</inherit-textForeground>
<inherit-background>false</inherit-background>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/plaf/nimbus/8041725/bug8041725.java Thu May 15 20:21:17 2014 +0400
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2014, 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 8041725
+ @summary JList selection colors are not UIResource instances in Nimbus L&F
+ @author Anton Litvinov
+*/
+
+import java.awt.*;
+import javax.swing.*;
+import javax.swing.plaf.*;
+import javax.swing.plaf.nimbus.*;
+
+public class bug8041725 {
+ public static void main(String[] args) throws Exception {
+ UIManager.setLookAndFeel(new NimbusLookAndFeel());
+ SwingUtilities.invokeAndWait(new Runnable() {
+ @Override
+ public void run() {
+ JFrame frame = new JFrame("bug8041725");
+ frame.setSize(200, 200);
+ JList list = new JList(new String[]{"Item1", "Item2", "Item3"});
+ frame.getContentPane().add(list);
+ frame.pack();
+ frame.setVisible(true);
+
+ System.err.println("Test #1: No items are selected, list is enabled.");
+ testSelectionColors(list);
+
+ System.err.println("Test #2: No items are selected, list is disabled.");
+ list.setEnabled(false);
+ testSelectionColors(list);
+
+ System.err.println("Test #3: One item is selected, list is disabled.");
+ list.setSelectedIndex(0);
+ testSelectionColors(list);
+
+ System.err.println("Test #4: One item is selected, list is enabled.");
+ list.setEnabled(true);
+ testSelectionColors(list);
+
+ frame.dispose();
+ }
+ });
+ }
+
+ private static void testSelectionColors(JList list) {
+ Color selBackColor = list.getSelectionBackground();
+ if (!(selBackColor instanceof UIResource)) {
+ throw new RuntimeException(String.format(
+ "JList.getSelectionBackground() returned instance of '%s' instead of UIResource.",
+ selBackColor.getClass()));
+ }
+ Color selForeColor = list.getSelectionForeground();
+ if (!(selForeColor instanceof UIResource)) {
+ throw new RuntimeException(String.format(
+ "JList.getSelectionForeground() returned instance of '%s' instead of UIResource.",
+ selForeColor.getClass()));
+ }
+ }
+}