JAL-4020 class formatting
[jalview.git] / src / jalview / bin / Launcher.java
index 5e6e48c..1ea17d6 100644 (file)
  */
 package jalview.bin;
 
+import java.util.Locale;
+
 import java.io.File;
 import java.io.IOException;
 import java.lang.management.ManagementFactory;
 import java.util.ArrayList;
 import java.util.List;
 
+import jalview.util.ChannelProperties;
+import jalview.util.LaunchUtils;
+
 /**
  * A Launcher class for Jalview. This class is used to launch Jalview from the
  * shadowJar when Getdown is not used or available. It attempts to take all the
@@ -45,7 +50,8 @@ public class Launcher
 {
   private final static String startClass = "jalview.bin.Jalview";
 
-  private final static String dockIconPath = "JalviewLogo_Huge.png";
+  private final static String dockIconPath = ChannelProperties
+          .getProperty("logo.512");
 
   /**
    * main method for jalview.bin.Launcher. This restarts the same JRE's JVM with
@@ -101,6 +107,23 @@ public class Launcher
       }
     }
 
+    // use saved preferences if no cmdline args
+    boolean useCustomisedSettings = LaunchUtils
+            .getBooleanUserPreference(MemorySetting.CUSTOMISED_SETTINGS);
+    if (useCustomisedSettings)
+    {
+      if (jvmmempc == null)
+      {
+        jvmmempc = LaunchUtils
+                .getUserPreference(MemorySetting.MEMORY_JVMMEMPC);
+      }
+      if (jvmmemmax == null)
+      {
+        jvmmemmax = LaunchUtils
+                .getUserPreference(MemorySetting.MEMORY_JVMMEMMAX);
+      }
+    }
+
     // add memory setting if not specified
     boolean memSet = false;
     boolean dockIcon = false;
@@ -149,13 +172,16 @@ public class Launcher
       {
         // -Xdock:name=... doesn't actually work :(
         // Leaving it in in case it gets fixed
-        command.add("-Xdock:name=" + "Jalview");
+        command.add(
+                "-Xdock:name=" + ChannelProperties.getProperty("app_name"));
       }
     }
 
     String scalePropertyArg = HiDPISetting.getScalePropertyArg();
     if (scalePropertyArg != null)
     {
+      System.out.println("Running " + startClass + " with scale setting "
+              + scalePropertyArg);
       command.add(scalePropertyArg);
     }
 
@@ -164,11 +190,16 @@ public class Launcher
 
     final ProcessBuilder builder = new ProcessBuilder(command);
 
-    // System.out.println("COMMAND: " + String.join(" ", builder.command()));
+    if (Boolean.parseBoolean(System.getProperty("launcherprint", "false")))
+    {
+      System.out.println(
+              "LAUNCHER COMMAND: " + String.join(" ", builder.command()));
+    }
     System.out.println("Running " + startClass + " with "
-            + (memSetting == null ? "no memory setting" : memSetting));
+            + (memSetting == null ? "no memory setting"
+                    : ("memory setting " + memSetting)));
 
-    if (Boolean.parseBoolean(System.getProperty("launcherstop")))
+    if (Boolean.parseBoolean(System.getProperty("launcherstop", "false")))
     {
       System.exit(0);
     }
@@ -179,7 +210,7 @@ public class Launcher
       process.waitFor();
     } catch (IOException e)
     {
-      if (e.getMessage().toLowerCase().contains("memory"))
+      if (e.getMessage().toLowerCase(Locale.ROOT).contains("memory"))
       {
         System.out.println("Caught a memory exception: " + e.getMessage());
         // Probably the "Cannot allocate memory" error, try without the memory
@@ -215,7 +246,6 @@ public class Launcher
       e.printStackTrace();
     }
     // System.exit(0);
-
   }
 
 }