JAL-3814 NONEWS property
[jalview.git] / src / jalview / bin / Jalview.java
index b99f4c3..a077f95 100755 (executable)
@@ -57,6 +57,7 @@ import jalview.io.DataSourceType;
 import jalview.io.FileFormat;
 import jalview.io.FileFormatException;
 import jalview.io.FileFormatI;
 import jalview.io.FileFormat;
 import jalview.io.FileFormatException;
 import jalview.io.FileFormatI;
+import jalview.io.FileFormats;
 import jalview.io.FileLoader;
 import jalview.io.HtmlSvgOutput;
 import jalview.io.IdentifyFile;
 import jalview.io.FileLoader;
 import jalview.io.HtmlSvgOutput;
 import jalview.io.IdentifyFile;
@@ -64,6 +65,7 @@ import jalview.io.NewickFile;
 import jalview.io.gff.SequenceOntologyFactory;
 import jalview.schemes.ColourSchemeI;
 import jalview.schemes.ColourSchemeProperty;
 import jalview.io.gff.SequenceOntologyFactory;
 import jalview.schemes.ColourSchemeI;
 import jalview.schemes.ColourSchemeProperty;
+import jalview.util.HttpUtils;
 import jalview.util.MessageManager;
 import jalview.util.Platform;
 import jalview.ws.jws2.Jws2Discoverer;
 import jalview.util.MessageManager;
 import jalview.util.Platform;
 import jalview.ws.jws2.Jws2Discoverer;
@@ -310,6 +312,7 @@ public class Jalview
 
     if (!headless)
     {
 
     if (!headless)
     {
+
       desktop = new Desktop();
       desktop.setInBatchMode(true); // indicate we are starting up
 
       desktop = new Desktop();
       desktop.setInBatchMode(true); // indicate we are starting up
 
@@ -360,7 +363,7 @@ public class Jalview
             // String defurl =
             // "http://anaplog.compbio.dundee.ac.uk/cgi-bin/questionnaire.pl";
             // //
             // String defurl =
             // "http://anaplog.compbio.dundee.ac.uk/cgi-bin/questionnaire.pl";
             // //
-            String defurl = "http://www.jalview.org/cgi-bin/questionnaire.pl";
+            String defurl = "https://www.jalview.org/cgi-bin/questionnaire.pl";
             Cache.log.debug(
                     "Starting questionnaire with default url: " + defurl);
             desktop.checkForQuestionnaire(defurl);
             Cache.log.debug(
                     "Starting questionnaire with default url: " + defurl);
             desktop.checkForQuestionnaire(defurl);
@@ -372,7 +375,8 @@ public class Jalview
         System.err.println("CMD [-noquestionnaire] executed successfully!");
       }
 
         System.err.println("CMD [-noquestionnaire] executed successfully!");
       }
 
-      if (!aparser.contains("nonews"))
+      if (!aparser.contains("nonews")
+              || Cache.getProperty("NONEWS") == null)
       {
         desktop.checkForNews();
       }
       {
         desktop.checkForNews();
       }
@@ -428,7 +432,9 @@ public class Jalview
       }
       System.out.println("CMD [-open " + file + "] executed successfully!");
 
       }
       System.out.println("CMD [-open " + file + "] executed successfully!");
 
-      if (!file.startsWith("http://"))
+      protocol = AppletFormatAdapter.checkProtocol(file);
+
+      if (protocol == DataSourceType.FILE)
       {
         if (!(new File(file)).exists())
         {
       {
         if (!(new File(file)).exists())
         {
@@ -440,8 +446,6 @@ public class Jalview
         }
       }
 
         }
       }
 
-      protocol = AppletFormatAdapter.checkProtocol(file);
-
       try
       {
         format = new IdentifyFile().identify(file, protocol);
       try
       {
         format = new IdentifyFile().identify(file, protocol);
@@ -625,18 +629,37 @@ public class Jalview
             af.createEPS(outputFile);
             continue;
           }
             af.createEPS(outputFile);
             continue;
           }
-
-          if (af.saveAlignment(file, format))
+          FileFormatI outFormat = null;
+          try
+          {
+            outFormat = FileFormats.getInstance().forName(outputFormat);
+          } catch (Exception formatP)
           {
           {
-            System.out.println("Written alignment in " + format
-                    + " format to " + file);
+            System.out.println("Couldn't parse " + outFormat
+                    + " as a valid Jalview format string.");
           }
           }
-          else
+          if (outFormat != null)
           {
           {
-            System.out.println("Error writing file " + file + " in "
-                    + format + " format!!");
+            if (!outFormat.isWritable())
+            {
+              System.out.println(
+                      "This version of Jalview does not support alignment export as "
+                              + outputFormat);
+            }
+            else
+            {
+              if (af.saveAlignment(file, outFormat))
+              {
+                System.out.println("Written alignment in " + format
+                        + " format to " + file);
+              }
+              else
+              {
+                System.out.println("Error writing file " + file + " in "
+                        + format + " format!!");
+              }
+            }
           }
           }
-
         }
 
         while (aparser.getSize() > 0)
         }
 
         while (aparser.getSize() > 0)
@@ -655,23 +678,21 @@ public class Jalview
     {
       file = jalview.bin.Cache.getDefault("STARTUP_FILE",
               jalview.bin.Cache.getDefault("www.jalview.org",
     {
       file = jalview.bin.Cache.getDefault("STARTUP_FILE",
               jalview.bin.Cache.getDefault("www.jalview.org",
-                      "http://www.jalview.org")
-                      + "/examples/exampleFile_2_7.jar");
-      if (file.equals(
-              "http://www.jalview.org/examples/exampleFile_2_3.jar"))
+                      "https://www.jalview.org")
+                      + "/examples/exampleFile_2_7.jvp");
+      if (file.equals("http://www.jalview.org/examples/exampleFile_2_3.jar")
+              || file.equals(
+                      "http://www.jalview.org/examples/exampleFile_2_7.jar"))
       {
       {
+        file.replace("http:", "https:");
         // hardwire upgrade of the startup file
         // hardwire upgrade of the startup file
-        file.replace("_2_3.jar", "_2_7.jar");
+        file.replace("_2_3", "_2_7");
+        file.replace("2_7.jar", "2_7.jvp");
         // and remove the stale setting
         jalview.bin.Cache.removeProperty("STARTUP_FILE");
       }
 
         // and remove the stale setting
         jalview.bin.Cache.removeProperty("STARTUP_FILE");
       }
 
-      protocol = DataSourceType.FILE;
-
-      if (file.indexOf("http:") > -1)
-      {
-        protocol = DataSourceType.URL;
-      }
+      protocol = AppletFormatAdapter.checkProtocol(file);
 
       if (file.endsWith(".jar"))
       {
 
       if (file.endsWith(".jar"))
       {
@@ -816,27 +837,22 @@ public class Jalview
 
   private static boolean setCrossPlatformLookAndFeel()
   {
 
   private static boolean setCrossPlatformLookAndFeel()
   {
-    boolean set = false;
-    try
-    {
-      UIManager.setLookAndFeel(
-              UIManager.getCrossPlatformLookAndFeelClassName());
-      set = true;
-    } catch (Exception ex)
-    {
-      Cache.log.error("Unexpected Look and Feel Exception");
-      Cache.log.error(ex.getMessage());
-      Cache.log.debug(Cache.getStackTraceString(ex));
-    }
-    return set;
+    return setGenericLookAndFeel(false);
   }
 
   private static boolean setSystemLookAndFeel()
   {
   }
 
   private static boolean setSystemLookAndFeel()
   {
+    return setGenericLookAndFeel(true);
+  }
+
+  private static boolean setGenericLookAndFeel(boolean system)
+  {
     boolean set = false;
     try
     {
     boolean set = false;
     try
     {
-      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+      UIManager.setLookAndFeel(
+              system ? UIManager.getSystemLookAndFeelClassName()
+                      : UIManager.getCrossPlatformLookAndFeelClassName());
       set = true;
     } catch (Exception ex)
     {
       set = true;
     } catch (Exception ex)
     {
@@ -960,7 +976,9 @@ public class Jalview
                     + "-jabaws URL\tSpecify URL for Jabaws services (e.g. for a local installation).\n"
                     + "-fetchfrom nickname\tQuery nickname for features for the alignments and display them.\n"
                     + "-groovy FILE\tExecute groovy script in FILE, after all other arguments have been processed (if FILE is the text 'STDIN' then the file will be read from STDIN)\n"
                     + "-jabaws URL\tSpecify URL for Jabaws services (e.g. for a local installation).\n"
                     + "-fetchfrom nickname\tQuery nickname for features for the alignments and display them.\n"
                     + "-groovy FILE\tExecute groovy script in FILE, after all other arguments have been processed (if FILE is the text 'STDIN' then the file will be read from STDIN)\n"
-                    + "\n~Read documentation in Application or visit http://www.jalview.org for description of Features and Annotations file~\n\n");
+                    + "-jvmmempc=PERCENT\tOnly available with standalone executable jar or jalview.bin.Launcher. Limit maximum heap size (memory) to PERCENT% of total physical memory detected. This defaults to 90 if total physical memory can be detected. See https://www.jalview.org/help/html/memory.html for more details.\n"
+                    + "-jvmmemmax=MAXMEMORY\tOnly available with standalone executable jar or jalview.bin.Launcher. Limit maximum heap size (memory) to MAXMEMORY. MAXMEMORY can be specified in bytes, kilobytes(k), megabytes(m), gigabytes(g) or if you're lucky enough, terabytes(t). This defaults to 32g if total physical memory can be detected, or to 8g if total physical memory cannot be detected. See https://www.jalview.org/help/html/memory.html for more details.\n"
+                    + "\n~Read documentation in Application or visit https://www.jalview.org for description of Features and Annotations file~\n\n");
   }
 
   private static void startUsageStats(final Desktop desktop)
   }
 
   private static void startUsageStats(final Desktop desktop)