JAL-3772 Preference to NOT prompt to save remotely loaded alignments
[jalview.git] / src / jalview / io / FileLoader.java
index 49571dc..de88ce9 100755 (executable)
@@ -74,6 +74,8 @@ public class FileLoader implements Runnable
 
   private File selectedFile;
 
+  private static boolean useDefaultFileFormat = false;
+
   /**
    * default constructor always raised errors in GUI dialog boxes
    */
@@ -323,7 +325,7 @@ public class FileLoader implements Runnable
         Desktop.instance.stopLoading();
         jalview.bin.Console.errPrintln("The input file \"" + file
                 + "\" has null or unidentifiable data content!");
-        if (!Jalview.isHeadlessMode())
+        if (!Jalview.isHeadlessMode() && !Jalview.isBatchMode())
         {
           JvOptionPane.showInternalMessageDialog(Desktop.desktop,
                   MessageManager.getString("label.couldnt_read_data")
@@ -359,8 +361,9 @@ public class FileLoader implements Runnable
           // We read the data anyway - it might make sense.
         }
         // BH 2018 switch to File object here instead of filename
-        alignFrame = new Jalview2XML(raiseGUI).loadJalviewAlign(
-                selectedFile == null ? file : selectedFile);
+        alignFrame = new Jalview2XML(raiseGUI && !Jalview.isBatchMode())
+                .loadJalviewAlign(
+                        selectedFile == null ? file : selectedFile);
       }
       else
       {
@@ -535,7 +538,7 @@ public class FileLoader implements Runnable
                   "label.couldnt_load_file") + " " + title + "\n" + error;
           // TODO: refactor FileLoader to be independent of Desktop / Applet GUI
           // bits ?
-          if (raiseGUI && Desktop.desktop != null)
+          if (raiseGUI && !Jalview.isBatchMode() && Desktop.desktop != null)
           {
             javax.swing.SwingUtilities.invokeLater(new Runnable()
             {
@@ -561,9 +564,10 @@ public class FileLoader implements Runnable
 
     } catch (Exception er)
     {
-      jalview.bin.Console.errPrintln("Exception whilst opening file '" + file);
+      jalview.bin.Console
+              .errPrintln("Exception whilst opening file '" + file);
       er.printStackTrace();
-      if (raiseGUI)
+      if (raiseGUI && !Jalview.isBatchMode())
       {
         javax.swing.SwingUtilities.invokeLater(new Runnable()
         {
@@ -585,7 +589,7 @@ public class FileLoader implements Runnable
 
       er.printStackTrace();
       alignFrame = null;
-      if (raiseGUI)
+      if (raiseGUI && !Jalview.isBatchMode())
       {
         javax.swing.SwingUtilities.invokeLater(new Runnable()
         {
@@ -601,7 +605,8 @@ public class FileLoader implements Runnable
           }
         });
       }
-      jalview.bin.Console.errPrintln("Out of memory loading file " + file + "!!");
+      jalview.bin.Console
+              .errPrintln("Out of memory loading file " + file + "!!");
 
     }
     loadtime += System.currentTimeMillis();
@@ -642,6 +647,8 @@ public class FileLoader implements Runnable
     }
 
     this.setShouldBeSaved();
+    // after first file loaded we revert to assuming a default file format
+    useDefaultFileFormat = true;
   }
 
   /**
@@ -680,8 +687,21 @@ public class FileLoader implements Runnable
     AlignViewport avp = af.getViewport();
     if (avp == null)
       return;
-    avp.setSavedUpToDate(!protocol.isDynamic(),
-            QuitHandler.Message.UNSAVED_ALIGNMENTS);
+    boolean upToDate = !protocol.isDynamic();
+    if (protocol.isUrl()
+            && Cache.getDefault(PROMPT_SAVE_UNCHANGED_URL_ALIGNMENTS, true))
+    {
+      upToDate = true;
+    }
+    avp.setSavedUpToDate(upToDate,
+            upToDate ? null : QuitHandler.Message.UNSAVED_ALIGNMENTS);
+  }
+
+  public static final String PROMPT_SAVE_UNCHANGED_URL_ALIGNMENTS = "PROMPT_SAVE_UNCHANGED_URL_ALIGNMENTS";
+
+  public static boolean getUseDefaultFileFormat()
+  {
+    return useDefaultFileFormat;
   }
 
 }