Replace multiple instantiations of code to retrieve resources (icons, timestamp) from jar file with statics.

git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@5054 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/java/com/tigervnc/vncviewer/CConn.java b/java/com/tigervnc/vncviewer/CConn.java
index cccb7ba..7cebe0b 100644
--- a/java/com/tigervnc/vncviewer/CConn.java
+++ b/java/com/tigervnc/vncviewer/CConn.java
@@ -46,7 +46,6 @@
 import javax.swing.*;
 import javax.swing.ImageIcon;
 import java.net.InetSocketAddress;
-import java.net.URL;
 import java.net.SocketException;
 import java.util.*;
 
@@ -500,13 +499,6 @@
     viewport = new Viewport(cp.name(), this);
     viewport.setUndecorated(fullScreen);
     desktop.setViewport(viewport);
-    ClassLoader loader = this.getClass().getClassLoader();
-    URL url = loader.getResource("com/tigervnc/vncviewer/tigervnc.ico");
-    ImageIcon icon = null;
-    if (url != null) {
-      icon = new ImageIcon(url);
-      viewport.setIconImage(icon.getImage());
-    }
     reconfigureViewport();
     if ((cp.width > 0) && (cp.height > 0))
       viewport.setVisible(true);
@@ -717,11 +709,10 @@
   }
 
   void showAbout() {
-    InputStream stream = cl.getResourceAsStream("com/tigervnc/vncviewer/timestamp");
     String pkgDate = "";
     String pkgTime = "";
     try {
-      Manifest manifest = new Manifest(stream);
+      Manifest manifest = new Manifest(VncViewer.timestamp);
       Attributes attributes = manifest.getMainAttributes();
       pkgDate = attributes.getValue("Package-Date");
       pkgTime = attributes.getValue("Package-Time");
@@ -735,12 +726,9 @@
                     VncViewer.buildDate, VncViewer.buildTime);
     JOptionPane op = 
       new JOptionPane(msg, JOptionPane.INFORMATION_MESSAGE,
-                      JOptionPane.DEFAULT_OPTION, logo);
+                      JOptionPane.DEFAULT_OPTION, VncViewer.logoIcon);
     JDialog dlg = op.createDialog("About TigerVNC Viewer for Java");
-    ClassLoader cl = this.getClass().getClassLoader();
-    ImageIcon icon = 
-      new ImageIcon(cl.getResource("com/tigervnc/vncviewer/tigervnc.ico"));
-    dlg.setIconImage(icon.getImage());
+    dlg.setIconImage(VncViewer.frameIcon);
     dlg.setVisible(true);
     if (fullScreenWindow != null)
       Viewport.setFullScreenWindow(fullScreenWindow);
@@ -1339,8 +1327,6 @@
 
   // the following need no synchronization:
 
-  ClassLoader cl = this.getClass().getClassLoader();
-  ImageIcon logo = new ImageIcon(cl.getResource("com/tigervnc/vncviewer/tigervnc.png"));
   public static UserPasswdGetter upg;
   public UserMsgBox msg;
 
diff --git a/java/com/tigervnc/vncviewer/Dialog.java b/java/com/tigervnc/vncviewer/Dialog.java
index c478d4a..cd488db 100644
--- a/java/com/tigervnc/vncviewer/Dialog.java
+++ b/java/com/tigervnc/vncviewer/Dialog.java
@@ -35,6 +35,7 @@
 class Dialog extends JDialog {
 
   public Dialog(boolean modal) {
+    setIconImage(VncViewer.frameIcon);
     if (modal) {
       setModalityType(ModalityType.APPLICATION_MODAL);
     } else {
@@ -53,9 +54,6 @@
       int y = (dpySize.height - mySize.height) / 2;
       setLocation(x, y);
     }
-    ClassLoader cl = this.getClass().getClassLoader();
-    ImageIcon icon = new ImageIcon(cl.getResource("com/tigervnc/vncviewer/tigervnc.ico"));
-    setIconImage(icon.getImage());
     fullScreenWindow = Viewport.getFullScreenWindow();
     if (fullScreenWindow != null)
       Viewport.setFullScreenWindow(null);
diff --git a/java/com/tigervnc/vncviewer/ServerDialog.java b/java/com/tigervnc/vncviewer/ServerDialog.java
index a1a0560..eda82d7 100644
--- a/java/com/tigervnc/vncviewer/ServerDialog.java
+++ b/java/com/tigervnc/vncviewer/ServerDialog.java
@@ -90,7 +90,7 @@
 
     JPanel topPanel = new JPanel(new GridBagLayout());
 
-    addGBComponent(new JLabel(cc.logo),topPanel, 0, 0, 1, 1, 0, 0, 0, 1, GridBagConstraints.HORIZONTAL, GridBagConstraints.LINE_START, new Insets(5,5,5,15));
+    addGBComponent(new JLabel(VncViewer.logoIcon),topPanel, 0, 0, 1, 1, 0, 0, 0, 1, GridBagConstraints.HORIZONTAL, GridBagConstraints.LINE_START, new Insets(5,5,5,15));
     addGBComponent(serverLabel,topPanel, 1, 0, 1, 1, 0, 0, 0, 1, GridBagConstraints.HORIZONTAL, GridBagConstraints.LINE_END, new Insets(10,0,5,5));
     addGBComponent(server,topPanel, 2, 0, 1, 1, 0, 0, 1, 1, GridBagConstraints.HORIZONTAL, GridBagConstraints.CENTER, new Insets(10,0,5,40));
 
diff --git a/java/com/tigervnc/vncviewer/Viewport.java b/java/com/tigervnc/vncviewer/Viewport.java
index 31acc0e..8f1b0e0 100644
--- a/java/com/tigervnc/vncviewer/Viewport.java
+++ b/java/com/tigervnc/vncviewer/Viewport.java
@@ -40,6 +40,7 @@
     setTitle(name+" - TigerVNC");
     setFocusable(false);
     setFocusTraversalKeysEnabled(false);
+    setIconImage(VncViewer.frameIcon);
     UIManager.getDefaults().put("ScrollPane.ancestorInputMap", 
       new UIDefaults.LazyInputMap(new Object[]{}));
     sp = new JScrollPane();
diff --git a/java/com/tigervnc/vncviewer/VncViewer.java b/java/com/tigervnc/vncviewer/VncViewer.java
index ebd90b4..31043d1 100644
--- a/java/com/tigervnc/vncviewer/VncViewer.java
+++ b/java/com/tigervnc/vncviewer/VncViewer.java
@@ -60,6 +60,14 @@
   public static String build = null;
   public static String buildDate = null;
   public static String buildTime = null;
+  static ImageIcon frameIconSrc = 
+    new ImageIcon(VncViewer.class.getResource("tigervnc.ico"));
+  public static final Image frameIcon = frameIconSrc.getImage();
+  public static final ImageIcon logoIcon = 
+    new ImageIcon(VncViewer.class.getResource("tigervnc.png"));
+  public static final Image logoImage = logoIcon.getImage();
+  public static final InputStream timestamp = 
+    VncViewer.class.getResourceAsStream("timestamp");
 
   public static void setLookAndFeel() {
     try {
@@ -282,17 +290,12 @@
     vlog.debug("init called");
     setLookAndFeel();
     setBackground(Color.white);
-    ClassLoader cl = this.getClass().getClassLoader();
-    ImageIcon icon = new ImageIcon(cl.getResource("com/tigervnc/vncviewer/tigervnc.png"));
-    logo = icon.getImage();
   }
 
   private void getTimestamp() {
     if (version == null || build == null) {
-      ClassLoader cl = this.getClass().getClassLoader();
-      InputStream stream = cl.getResourceAsStream("com/tigervnc/vncviewer/timestamp");
       try {
-        Manifest manifest = new Manifest(stream);
+        Manifest manifest = new Manifest(timestamp);
         Attributes attributes = manifest.getMainAttributes();
         version = attributes.getValue("Version");
         build = attributes.getValue("Build");
@@ -333,8 +336,8 @@
   }
 
   public void paint(Graphics g) {
-    g.drawImage(logo, 0, 0, this);
-    int h = logo.getHeight(this)+20;
+    g.drawImage(logoImage, 0, 0, this);
+    int h = logoImage.getHeight(this)+20;
     g.drawString(String.format(aboutText, version, build, 
                                buildDate, buildTime), 0, h);
   }
@@ -378,10 +381,7 @@
         JOptionPane op = 
           new JOptionPane(e.getMessage(), JOptionPane.WARNING_MESSAGE);
         JDialog dlg = op.createDialog("TigerVNC Viewer");
-        ClassLoader cl = this.getClass().getClassLoader();
-        ImageIcon icon = 
-          new ImageIcon(cl.getResource("com/tigervnc/vncviewer/tigervnc.ico"));
-        dlg.setIconImage(icon.getImage());
+        dlg.setIconImage(frameIcon);
         dlg.setVisible(true);
       } else {
         if (!cc.shuttingDown)
@@ -557,7 +557,6 @@
   Thread thread;
   Socket sock;
   boolean applet;
-  Image logo;
   static int nViewers;
   static LogWriter vlog = new LogWriter("main");
 }