OpenJDK / bsd-port / jdk9 / jdk
changeset 12693:625fe560c7c1
8133926: No frame icon for InternalFrame in Windows LaF
Reviewed-by: azvegint, alexsch
author | serb |
---|---|
date | Fri, 21 Aug 2015 20:59:07 +0300 |
parents | 9cad345fb47b |
children | 65aa0b028425 |
files | src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java test/javax/swing/UIDefaults/8133926/InternalFrameIcon.java |
diffstat | 2 files changed, 63 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java Thu Aug 20 13:00:19 2015 -0500 +++ b/src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java Fri Aug 21 20:59:07 2015 +0300 @@ -835,12 +835,12 @@ "InternalFrame.closeIcon", WindowsIconFactory.createFrameCloseIcon(), "InternalFrame.icon", - (LazyValue) t -> new Object[]{ + (LazyValue) t -> new WindowsInternalFrameTitlePane.ScalableIconUIResource(new Object[]{ // The constructor takes one arg: an array of UIDefaults.LazyValue // representing the icons SwingUtilities2.makeIcon(getClass(), BasicLookAndFeel.class, "icons/JavaCup16.png"), SwingUtilities2.makeIcon(getClass(), WindowsLookAndFeel.class, "icons/JavaCup32.png") - }, + }), // Internal Frame Auditory Cue Mappings "InternalFrame.closeSound", "win.sound.close", "InternalFrame.maximizeSound", "win.sound.maximize",
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/javax/swing/UIDefaults/8133926/InternalFrameIcon.java Fri Aug 21 20:59:07 2015 +0300 @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2015, 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. + */ + +import javax.swing.Icon; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import javax.swing.UnsupportedLookAndFeelException; + +import static javax.swing.UIManager.getInstalledLookAndFeels; + +/** + * @test + * @bug 8133926 + */ +public final class InternalFrameIcon implements Runnable { + + public static void main(final String[] args) throws Exception { + for (final UIManager.LookAndFeelInfo laf : getInstalledLookAndFeels()) { + SwingUtilities.invokeAndWait(() -> setLookAndFeel(laf)); + SwingUtilities.invokeAndWait(new InternalFrameIcon()); + } + } + + private static void setLookAndFeel(final UIManager.LookAndFeelInfo laf) { + try { + UIManager.setLookAndFeel(laf.getClassName()); + System.out.println("LookAndFeel: " + laf.getClassName()); + } catch (ClassNotFoundException | InstantiationException | + UnsupportedLookAndFeelException | IllegalAccessException e) { + throw new RuntimeException(e); + } + } + + @Override + public void run() { + Object o = UIManager.getDefaults().get("InternalFrame.icon"); + if (o != null && !(o instanceof Icon)) { + throw new RuntimeException("Wrong object: " + o); + } + } +}