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! --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
