JAL-3289 implemented CHANNEL=LOCAL,RELEASE,TEST-RELEASE,SCRATCHH-...,DEVELOP,ARCHIVE...
[jalview.git] / getdown / src / getdown / launcher / src / main / java / com / threerings / getdown / launcher / GetdownApp.java
index 367db7c..9b83b81 100644 (file)
@@ -7,7 +7,6 @@ package com.threerings.getdown.launcher;
 
 import java.awt.Color;
 import java.awt.Container;
-import java.awt.EventQueue;
 import java.awt.Image;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
@@ -27,7 +26,6 @@ import javax.swing.JFrame;
 import javax.swing.KeyStroke;
 import javax.swing.WindowConstants;
 
-import com.install4j.api.launcher.StartupNotification;
 import com.samskivert.swing.util.SwingUtil;
 import com.threerings.getdown.data.Application;
 import com.threerings.getdown.data.EnvConfig;
@@ -35,6 +33,7 @@ import com.threerings.getdown.data.SysProps;
 import com.threerings.getdown.util.LaunchUtil;
 import com.threerings.getdown.util.StringUtil;
 import static com.threerings.getdown.Log.log;
+import jalview.bin.StartupNotificationListener;
 
 /**
  * The main application entry point for Getdown.
@@ -92,20 +91,19 @@ public class GetdownApp
     }
     if (abort) System.exit(-1);
 
+    log.info("Starting ...");
     try
     {
-      StartupNotification.registerStartupListener(
-              new StartupNotification.Listener() {
-                @Override
-                public void startupPerformed(String parameters)
-                { 
-                  log.warning("StartupNotification.Listener.startupPerformed: '"+parameters+"'");
-                  setStartupFilesParameterString(parameters);
-                }
-              });
+      jalview.bin.StartupNotificationListener.setListener();
     } catch (Exception e)
     {
       e.printStackTrace();
+    } catch (NoClassDefFoundError e)
+    {
+      log.warning("Starting without install4j classes");
+    } catch (Throwable t)
+    {
+      t.printStackTrace();
     }
     
     // record a few things for posterity
@@ -133,6 +131,26 @@ public class GetdownApp
               handleWindowClose();
             }
           });
+          
+          // keep_on_top
+          try {
+                 readConfig(false);
+          } catch (Exception e) {
+                 log.warning("Error reading config for keep_on_top");
+          }
+          // move window to top, always on top
+          if (_ifc.keepOnTop) {
+                 log.info("Keep on top set to ", "keep_on_top", _ifc.keepOnTop);
+                         EQinvoke(new Runnable() {
+                                       @Override
+                                       public void run() {
+                                               _frame.toFront();
+                                               _frame.repaint();
+                                       }
+                               });
+                         _frame.setAlwaysOnTop(true);
+          }
+
           // handle close on ESC
           String cancelId = "Cancel"; // $NON-NLS-1$
           _frame.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
@@ -245,7 +263,7 @@ public class GetdownApp
         super.fail(message);
         // super.fail causes the UI to be created (if needed) on the next UI tick, so we
         // want to wait until that happens before we attempt to redecorate the window
-        EventQueue.invokeLater(new Runnable() {
+        EQinvoke(new Runnable() {
           @Override
           public void run() {
             // if the frame was set to be undecorated, make window decoration available