Author: tfmorris
Date: 2008-04-26 14:58:55-0700
New Revision: 14479
Added:
trunk/src/argouml-app/src/org/argouml/Images/ArgoIcon16x16.png (contents, props changed)
trunk/src/argouml-app/src/org/argouml/Images/ArgoIcon32x32.png (contents, props changed)
Modified:
trunk/src/argouml-app/src/org/argouml/ui/ProjectBrowser.java
Log:
Issue 4989 - multi-resolution icon patch from dthompson
Added: trunk/src/argouml-app/src/org/argouml/Images/ArgoIcon16x16.png
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/Images/ArgoIcon16x16.png?view=auto&rev=14479
==============================================================================
Binary file. No diff available.
Added: trunk/src/argouml-app/src/org/argouml/Images/ArgoIcon32x32.png
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/Images/ArgoIcon32x32.png?view=auto&rev=14479
==============================================================================
Binary file. No diff available.
Modified: trunk/src/argouml-app/src/org/argouml/ui/ProjectBrowser.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/ui/ProjectBrowser.java?view=diff&rev=14479&p1=trunk/src/argouml-app/src/org/argouml/ui/ProjectBrowser.java&p2=trunk/src/argouml-app/src/org/argouml/ui/ProjectBrowser.java&r1=14478&r2=14479
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/ui/ProjectBrowser.java (original)
+++ trunk/src/argouml-app/src/org/argouml/ui/ProjectBrowser.java 2008-04-26 14:58:55-0700
@@ -28,6 +28,7 @@
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
+import java.awt.Image;
import java.awt.KeyboardFocusManager;
import java.awt.Window;
import java.awt.event.ComponentAdapter;
@@ -40,6 +41,8 @@
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
import java.net.URI;
import java.text.MessageFormat;
import java.util.ArrayList;
@@ -291,17 +294,13 @@
// allows me to ask "Do you want to save first?"
setDefaultCloseOperation(ProjectBrowser.DO_NOTHING_ON_CLOSE);
addWindowListener(new WindowCloser());
- ImageIcon argoImage =
- ResourceLoaderWrapper.lookupIconResource("ArgoIcon");
- this.setIconImage(argoImage.getImage());
- //
+
+ setApplicationIcon();
- // adds this as listener to projectmanager so it gets updated when the
- // project changes
+ // Add listener for project changes
ProjectManager.getManager().addPropertyChangeListener(this);
- // adds this as listener to TargetManager so gets notified
- // when the active diagram changes
+ // add listener to get notified when active diagram changes
TargetManager.getInstance().addTargetListener(this);
// Add a listener to focus changes.
@@ -343,6 +342,45 @@
new HelpListener(getStatusBar()));
}
+ private void setApplicationIcon() {
+ ImageIcon argoImage16x16 =
+ ResourceLoaderWrapper.lookupIconResource("ArgoIcon16x16");
+ ImageIcon argoImage32x32 =
+ ResourceLoaderWrapper.lookupIconResource("ArgoIcon32x32");
+ List<Image> argoImages = new ArrayList<Image>(2);
+ argoImages.add(argoImage16x16.getImage());
+ argoImages.add(argoImage32x32.getImage());
+
+ // JREs pre 1.6.0 cannot handle multiple images using
+ // setIconImages(), so use reflection to conditionally make the
+ // call to this.setIconImages().
+ // TODO: We can remove all of this reflection code when we go to
+ // Java 1.6 as a minimum JRE version, see issue 4989.
+ Method m = null;
+ try {
+ // java.awt.Window.setIconImages is new in Java 6, so may not exist
+ // check for it using reflection on current instance
+ m = getClass().getMethod("setIconImages", List.class);
+ m.invoke(this, argoImages);
+ }
+ catch (NoSuchMethodException x) {
+ m = null;
+ } catch (InvocationTargetException e) {
+ m = null;
+ } catch (IllegalArgumentException e) {
+ m = null;
+ } catch (IllegalAccessException e) {
+ m = null;
+ }
+
+ // If we couldn't run setIconImages() for whatever reason
+ // (probably JRE < 1.6.0), do it the old way
+ // using javax.swing.JFrame.setIconImage, and accept the blurry icon
+ if (null == m) {
+ setIconImage(argoImage16x16.getImage());
+ }
+ }
+
/**
* Singleton retrieval method for the projectbrowser.
* Do not use this before makeInstance is called!
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.