/hg/icedtea-web: PR918: java applet windows uses a low resulutio...
omajid at icedtea.classpath.org
omajid at icedtea.classpath.org
Thu Apr 19 09:37:44 PDT 2012
changeset f13777a89e0d in /hg/icedtea-web
details: http://icedtea.classpath.org/hg/icedtea-web?cmd=changeset;node=f13777a89e0d
author: Omair Majid <omajid at redhat.com>
date: Thu Apr 19 12:36:43 2012 -0400
PR918: java applet windows uses a low resulution black/white icon
2012-04-19 Omair Majid <omajid at redhat.com>
* NEWS: Update with fix.
* netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: Remove windowIcon.
(initialize): Do not call loadWindowIcon.
(getWindowIcon): Remove.
(setWindowIcon): Remove.
(loadWindowIcon): Remove.
* netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java
(checkTopLevelWindow): Do not set the icon for all top level windows. Use
the default java icon instead.
* netx/net/sourceforge/jnlp/util/ImageResources.java: New file. Provides
access to icons.
* netx/net/sourceforge/jnlp/JNLPSplashScreen.java (JNLPSplashScreen),
* netx/net/sourceforge/jnlp/cache/DefaultDownloadIndicator.java
(getListener),
* netx/net/sourceforge/jnlp/controlpanel/AdvancedProxySettingsDialog.java
(AdvancedProxySettingsDialog),
* netx/net/sourceforge/jnlp/controlpanel/CacheViewer.java (CacheViewer),
* netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java (ControlPanel),
* netx/net/sourceforge/jnlp/security/SecurityDialog.java (SecurityDialog),
* netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java
(CertificateViewer),
* netx/net/sourceforge/jnlp/util/BasicExceptionDialog.java (show),
* plugin/icedteanp/java/sun/applet/JavaConsole.java (initialize):
Explicitly load icons.
* tests/netx/unit/net/sourceforge/jnlp/util/ImageResourcesTest.java: Test
for ImageResources class.
diffstat:
ChangeLog | 30 ++
NEWS | 2 +
netx/net/sourceforge/jnlp/JNLPSplashScreen.java | 3 +
netx/net/sourceforge/jnlp/cache/DefaultDownloadIndicator.java | 2 +
netx/net/sourceforge/jnlp/controlpanel/AdvancedProxySettingsDialog.java | 3 +
netx/net/sourceforge/jnlp/controlpanel/CacheViewer.java | 2 +
netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java | 2 +
netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java | 40 ---
netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java | 6 -
netx/net/sourceforge/jnlp/security/SecurityDialog.java | 2 +
netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java | 2 +
netx/net/sourceforge/jnlp/util/BasicExceptionDialog.java | 1 +
netx/net/sourceforge/jnlp/util/ImageResources.java | 101 ++++++++++
plugin/icedteanp/java/sun/applet/JavaConsole.java | 2 +
tests/netx/unit/net/sourceforge/jnlp/util/ImageResourcesTest.java | 71 +++++++
15 files changed, 223 insertions(+), 46 deletions(-)
diffs (481 lines):
diff -r 14dcb4fb43ac -r f13777a89e0d ChangeLog
--- a/ChangeLog Wed Apr 18 12:28:08 2012 +0200
+++ b/ChangeLog Thu Apr 19 12:36:43 2012 -0400
@@ -1,3 +1,33 @@
+2012-04-19 Omair Majid <omajid at redhat.com>
+
+ PR918: java applet windows uses a low resulution black/white icon
+ * NEWS: Update with fix.
+ * netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: Remove windowIcon.
+ (initialize): Do not call loadWindowIcon.
+ (getWindowIcon): Remove.
+ (setWindowIcon): Remove.
+ (loadWindowIcon): Remove.
+ * netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java
+ (checkTopLevelWindow): Do not set the icon for all top level windows. Use
+ the default java icon instead.
+ * netx/net/sourceforge/jnlp/util/ImageResources.java: New file. Provides
+ access to icons.
+ * netx/net/sourceforge/jnlp/JNLPSplashScreen.java (JNLPSplashScreen),
+ * netx/net/sourceforge/jnlp/cache/DefaultDownloadIndicator.java
+ (getListener),
+ * netx/net/sourceforge/jnlp/controlpanel/AdvancedProxySettingsDialog.java
+ (AdvancedProxySettingsDialog),
+ * netx/net/sourceforge/jnlp/controlpanel/CacheViewer.java (CacheViewer),
+ * netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java (ControlPanel),
+ * netx/net/sourceforge/jnlp/security/SecurityDialog.java (SecurityDialog),
+ * netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java
+ (CertificateViewer),
+ * netx/net/sourceforge/jnlp/util/BasicExceptionDialog.java (show),
+ * plugin/icedteanp/java/sun/applet/JavaConsole.java (initialize):
+ Explicitly load icons.
+ * tests/netx/unit/net/sourceforge/jnlp/util/ImageResourcesTest.java: Test
+ for ImageResources class.
+
2012-04-18 Jiri Vanek <jvanek at redhat.com>
Allowed signed applets in automatic reproducers tests
diff -r 14dcb4fb43ac -r f13777a89e0d NEWS
--- a/NEWS Wed Apr 18 12:28:08 2012 +0200
+++ b/NEWS Thu Apr 19 12:36:43 2012 -0400
@@ -14,6 +14,8 @@
* Plugin
- PR820: IcedTea-Web 1.1.3 crashing Firefox when loading Citrix XenApp
- PR895: IcedTea-Web searches for missing classes on each loadClass or findClass
+* Common
+ - PR918: java applet windows uses a low resulution black/white icon
New in release 1.2 (2011-XX-XX):
* Security updates:
diff -r 14dcb4fb43ac -r f13777a89e0d netx/net/sourceforge/jnlp/JNLPSplashScreen.java
--- a/netx/net/sourceforge/jnlp/JNLPSplashScreen.java Wed Apr 18 12:28:08 2012 +0200
+++ b/netx/net/sourceforge/jnlp/JNLPSplashScreen.java Thu Apr 19 12:36:43 2012 -0400
@@ -14,6 +14,7 @@
import net.sourceforge.jnlp.cache.ResourceTracker;
import net.sourceforge.jnlp.runtime.JNLPRuntime;
+import net.sourceforge.jnlp.util.ImageResources;
public class JNLPSplashScreen extends JDialog {
@@ -28,6 +29,8 @@
public JNLPSplashScreen(ResourceTracker resourceTracker,
String applicationTitle, String applicationVendor) {
+ setIconImages(ImageResources.INSTANCE.getApplicationImages());
+
// If the JNLP file does not contain any icon images, the splash image
// will consist of the application's title and vendor, as taken from the
// JNLP file.
diff -r 14dcb4fb43ac -r f13777a89e0d netx/net/sourceforge/jnlp/cache/DefaultDownloadIndicator.java
--- a/netx/net/sourceforge/jnlp/cache/DefaultDownloadIndicator.java Wed Apr 18 12:28:08 2012 +0200
+++ b/netx/net/sourceforge/jnlp/cache/DefaultDownloadIndicator.java Thu Apr 19 12:36:43 2012 -0400
@@ -28,6 +28,7 @@
import javax.jnlp.*;
import net.sourceforge.jnlp.runtime.*;
+import net.sourceforge.jnlp.util.ImageResources;
/**
* Show the progress of downloads.
@@ -101,6 +102,7 @@
synchronized (frameMutex) {
if (frame == null) {
frame = new JFrame(downloading + "...");
+ frame.setIconImages(ImageResources.INSTANCE.getApplicationImages());
frame.getContentPane().setLayout(new GridBagLayout());
}
diff -r 14dcb4fb43ac -r f13777a89e0d netx/net/sourceforge/jnlp/controlpanel/AdvancedProxySettingsDialog.java
--- a/netx/net/sourceforge/jnlp/controlpanel/AdvancedProxySettingsDialog.java Wed Apr 18 12:28:08 2012 +0200
+++ b/netx/net/sourceforge/jnlp/controlpanel/AdvancedProxySettingsDialog.java Thu Apr 19 12:36:43 2012 -0400
@@ -31,6 +31,7 @@
import net.sourceforge.jnlp.config.DeploymentConfiguration;
import net.sourceforge.jnlp.runtime.Translator;
+import net.sourceforge.jnlp.util.ImageResources;
/**
* This dialog provides a means for user to edit more of the proxy settings.
@@ -54,6 +55,8 @@
*/
public AdvancedProxySettingsDialog(DeploymentConfiguration config) {
super((Frame) null, dialogTitle, true); // Don't need a parent.
+ setIconImages(ImageResources.INSTANCE.getApplicationImages());
+
this.config = config;
/* Prepare for adding components to dialog box */
diff -r 14dcb4fb43ac -r f13777a89e0d netx/net/sourceforge/jnlp/controlpanel/CacheViewer.java
--- a/netx/net/sourceforge/jnlp/controlpanel/CacheViewer.java Wed Apr 18 12:28:08 2012 +0200
+++ b/netx/net/sourceforge/jnlp/controlpanel/CacheViewer.java Thu Apr 19 12:36:43 2012 -0400
@@ -30,6 +30,7 @@
import net.sourceforge.jnlp.config.DeploymentConfiguration;
import net.sourceforge.jnlp.runtime.Translator;
+import net.sourceforge.jnlp.util.ImageResources;
/**
* This class will provide a visual way of viewing cache.
@@ -51,6 +52,7 @@
*/
public CacheViewer(DeploymentConfiguration config) {
super((Frame) null, dialogTitle, true); // Don't need a parent.
+ setIconImages(ImageResources.INSTANCE.getApplicationImages());
this.config = config;
/* Prepare for adding components to dialog box */
diff -r 14dcb4fb43ac -r f13777a89e0d netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java
--- a/netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java Wed Apr 18 12:28:08 2012 +0200
+++ b/netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java Thu Apr 19 12:36:43 2012 -0400
@@ -55,6 +55,7 @@
import net.sourceforge.jnlp.runtime.Translator;
import net.sourceforge.jnlp.security.KeyStores;
import net.sourceforge.jnlp.security.viewer.CertificatePane;
+import net.sourceforge.jnlp.util.ImageResources;
/**
* This is the control panel for Java. It provides a GUI for modifying the
@@ -102,6 +103,7 @@
public ControlPanel(DeploymentConfiguration config) {
super();
setTitle(Translator.R("CPHead"));
+ setIconImages(ImageResources.INSTANCE.getApplicationImages());
this.config = config;
diff -r 14dcb4fb43ac -r f13777a89e0d netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java
--- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Wed Apr 18 12:28:08 2012 +0200
+++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java Thu Apr 19 12:36:43 2012 -0400
@@ -94,9 +94,6 @@
/** update policy that controls when to check for updates */
private static UpdatePolicy updatePolicy = UpdatePolicy.ALWAYS;
- /** netx window icon */
- private static Image windowIcon = null;
-
/** whether initialized */
private static boolean initialized = false;
@@ -188,9 +185,6 @@
if (headless == false)
checkHeadless();
- if (!headless && windowIcon == null)
- loadWindowIcon();
-
if (!headless && indicator == null)
indicator = new DefaultDownloadIndicator();
@@ -336,24 +330,6 @@
}
/**
- * Returns the window icon.
- */
- public static Image getWindowIcon() {
- return windowIcon;
- }
-
- /**
- * Sets the window icon that is displayed in Java applications
- * and applets instead of the default Java icon.
- *
- * @throws IllegalStateException if caller is not the exit class
- */
- public static void setWindowIcon(Image image) {
- checkExitClass();
- windowIcon = image;
- }
-
- /**
* Returns whether the JNLP client will use any AWT/Swing
* components.
*/
@@ -622,22 +598,6 @@
}
/**
- * Load the window icon.
- */
- private static void loadWindowIcon() {
- if (windowIcon != null)
- return;
-
- try {
- windowIcon = new javax.swing.ImageIcon((new sun.misc.Launcher())
- .getClassLoader().getResource("net/sourceforge/jnlp/resources/netx-icon.png")).getImage();
- } catch (Exception ex) {
- if (JNLPRuntime.isDebug())
- ex.printStackTrace();
- }
- }
-
- /**
* @return true if running on Windows
*/
public static boolean isWindows() {
diff -r 14dcb4fb43ac -r f13777a89e0d netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java
--- a/netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java Wed Apr 18 12:28:08 2012 +0200
+++ b/netx/net/sourceforge/jnlp/runtime/JNLPSecurityManager.java Thu Apr 19 12:36:43 2012 -0400
@@ -350,12 +350,6 @@
app.addWindow(w);
}
- // change coffee cup to netx for default icon
- if (window instanceof Window)
- for (Window w = (Window) window; w != null; w = w.getOwner())
- if (window instanceof Frame)
- ((Frame) window).setIconImage(JNLPRuntime.getWindowIcon());
-
// todo: set awt.appletWarning to custom message
// todo: logo on with glass pane on JFrame/JWindow?
diff -r 14dcb4fb43ac -r f13777a89e0d netx/net/sourceforge/jnlp/security/SecurityDialog.java
--- a/netx/net/sourceforge/jnlp/security/SecurityDialog.java Wed Apr 18 12:28:08 2012 +0200
+++ b/netx/net/sourceforge/jnlp/security/SecurityDialog.java Thu Apr 19 12:36:43 2012 -0400
@@ -41,6 +41,7 @@
import net.sourceforge.jnlp.runtime.JNLPRuntime;
import net.sourceforge.jnlp.security.SecurityDialogs.AccessType;
import net.sourceforge.jnlp.security.SecurityDialogs.DialogType;
+import net.sourceforge.jnlp.util.ImageResources;
import java.awt.*;
@@ -98,6 +99,7 @@
SecurityDialog(DialogType dialogType, AccessType accessType,
JNLPFile file, CertVerifier JarCertVerifier, X509Certificate cert, Object[] extras) {
super();
+ setIconImages(ImageResources.INSTANCE.getApplicationImages());
this.dialogType = dialogType;
this.accessType = accessType;
this.file = file;
diff -r 14dcb4fb43ac -r f13777a89e0d netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java
--- a/netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java Wed Apr 18 12:28:08 2012 +0200
+++ b/netx/net/sourceforge/jnlp/security/viewer/CertificateViewer.java Thu Apr 19 12:36:43 2012 -0400
@@ -51,6 +51,7 @@
import javax.swing.UIManager;
import net.sourceforge.jnlp.runtime.JNLPRuntime;
+import net.sourceforge.jnlp.util.ImageResources;
public class CertificateViewer extends JDialog {
@@ -61,6 +62,7 @@
public CertificateViewer() {
super((Frame) null, dialogTitle, true);
+ setIconImages(ImageResources.INSTANCE.getApplicationImages());
Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
diff -r 14dcb4fb43ac -r f13777a89e0d netx/net/sourceforge/jnlp/util/BasicExceptionDialog.java
--- a/netx/net/sourceforge/jnlp/util/BasicExceptionDialog.java Wed Apr 18 12:28:08 2012 +0200
+++ b/netx/net/sourceforge/jnlp/util/BasicExceptionDialog.java Thu Apr 19 12:36:43 2012 -0400
@@ -82,6 +82,7 @@
JOptionPane optionPane = new JOptionPane(mainPanel, JOptionPane.ERROR_MESSAGE);
final JDialog errorDialog = optionPane.createDialog(R("Error"));
+ errorDialog.setIconImages(ImageResources.INSTANCE.getApplicationImages());
final JPanel quickInfoPanel = new JPanel();
BoxLayout layout = new BoxLayout(quickInfoPanel, BoxLayout.Y_AXIS);
diff -r 14dcb4fb43ac -r f13777a89e0d netx/net/sourceforge/jnlp/util/ImageResources.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/netx/net/sourceforge/jnlp/util/ImageResources.java Thu Apr 19 12:36:43 2012 -0400
@@ -0,0 +1,101 @@
+/* ImageResources.java
+ Copyright (C) 2012 Red Hat, Inc.
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+IcedTea 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package net.sourceforge.jnlp.util;
+
+import java.awt.Image;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.imageio.ImageIO;
+
+public enum ImageResources {
+
+ INSTANCE;
+
+ private static final String APPLICATION_ICON_PATH = "net/sourceforge/jnlp/resources/netx-icon.png";
+
+ private final Map<String, Image> cache = new HashMap<String, Image>();
+
+ private ImageResources() {}
+
+ /* this is for testing ONLY */
+ void clearCache() {
+ cache.clear();
+ }
+
+ /**
+ * Returns an appropriate image, or null if there are errors loading the image.
+ */
+ private Image getApplicationImage() {
+ if (cache.containsKey(APPLICATION_ICON_PATH)) {
+ return cache.get(APPLICATION_ICON_PATH);
+ }
+
+ ClassLoader cl = this.getClass().getClassLoader();
+ if (cl == null) {
+ cl = ClassLoader.getSystemClassLoader();
+ }
+
+ InputStream in = cl.getResourceAsStream(APPLICATION_ICON_PATH);
+ try {
+ Image image = ImageIO.read(in);
+ cache.put(APPLICATION_ICON_PATH, image);
+ return image;
+ } catch (IOException ioe) {
+ ioe.printStackTrace();
+ return null;
+ }
+ }
+
+ /**
+ * Returns an appropriate image, or null if there are errors loading the image.
+ */
+ public List<Image> getApplicationImages() {
+ List<Image> images = new ArrayList<Image>();
+ Image appImage = getApplicationImage();
+ if (appImage != null) {
+ images.add(appImage);
+ }
+ return images;
+ }
+
+}
diff -r 14dcb4fb43ac -r f13777a89e0d plugin/icedteanp/java/sun/applet/JavaConsole.java
--- a/plugin/icedteanp/java/sun/applet/JavaConsole.java Wed Apr 18 12:28:08 2012 +0200
+++ b/plugin/icedteanp/java/sun/applet/JavaConsole.java Thu Apr 19 12:36:43 2012 -0400
@@ -65,6 +65,7 @@
import net.sourceforge.jnlp.config.DeploymentConfiguration;
import net.sourceforge.jnlp.runtime.JNLPRuntime;
+import net.sourceforge.jnlp.util.ImageResources;
/**
* A simple Java console for IcedTeaPlugin
@@ -92,6 +93,7 @@
final String logDir = JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.KEY_USER_LOG_DIR);
consoleWindow = new JFrame("Java Console");
+ consoleWindow.setIconImages(ImageResources.INSTANCE.getApplicationImages());
JPanel contentPanel = new JPanel();
contentPanel.setLayout(new GridBagLayout());
diff -r 14dcb4fb43ac -r f13777a89e0d tests/netx/unit/net/sourceforge/jnlp/util/ImageResourcesTest.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/netx/unit/net/sourceforge/jnlp/util/ImageResourcesTest.java Thu Apr 19 12:36:43 2012 -0400
@@ -0,0 +1,71 @@
+/* ImageResourcesTest.java
+ Copyright (C) 2012 Red Hat, Inc.
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+IcedTea 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package net.sourceforge.jnlp.util;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.awt.Image;
+import java.util.List;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class ImageResourcesTest {
+
+ @Before
+ public void setUp() {
+ ImageResources.INSTANCE.clearCache();
+ }
+
+ @After
+ public void tearDown() {
+ ImageResources.INSTANCE.clearCache();
+ }
+
+ @Test
+ public void testApplicationImages() {
+ List<Image> images = ImageResources.INSTANCE.getApplicationImages();
+ assertNotNull(images);
+ assertTrue(images.size() > 0);
+ for (Image image : images) {
+ assertNotNull(image);
+ }
+ }
+}
More information about the distro-pkg-dev
mailing list