JAL-1988 Make sensible choices if only the opening file has been opened, and alter...
[jalview.git] / src / jalview / io / FileLoader.java
index ffeb53d..5d290b6 100755 (executable)
@@ -41,6 +41,7 @@ import jalview.gui.AlignFrame;
 import jalview.gui.AlignViewport;
 import jalview.gui.Desktop;
 import jalview.gui.JvOptionPane;
+import jalview.gui.QuitHandler;
 import jalview.json.binding.biojson.v1.ColourSchemeMapper;
 import jalview.project.Jalview2XML;
 import jalview.schemes.ColourSchemeI;
@@ -311,6 +312,7 @@ public class FileLoader implements Runnable
                   MessageManager.getString("label.couldnt_read_data"),
                   JvOptionPane.WARNING_MESSAGE);
         }
+        this.setShouldBeSaved();
         return;
       }
       // TODO: cache any stream datasources as a temporary file (eg. PDBs
@@ -465,7 +467,6 @@ public class FileLoader implements Runnable
             {
               alignFrame.setFileName(file, format);
               alignFrame.setFileObject(selectedFile); // BH 2018 SwingJS
-              alignFrame.getViewport().setSavedUpToDate(true);
             }
             if (proxyColourScheme != null)
             {
@@ -613,6 +614,7 @@ public class FileLoader implements Runnable
       Desktop.instance.stopLoading();
     }
 
+    this.setShouldBeSaved();
   }
 
   /**
@@ -638,4 +640,21 @@ public class FileLoader implements Runnable
     return tempStructFile.toString();
   }
 
+  /*
+   * set whether quit should ask to save when just loaded this source
+   */
+  private void setShouldBeSaved()
+  {
+    if (protocol == null)
+      return;
+    AlignFrame af = this.alignFrame;
+    if (af == null)
+      return;
+    AlignViewport avp = af.getViewport();
+    if (avp == null)
+      return;
+    avp.setSavedUpToDate(!protocol.isDynamic(),
+            QuitHandler.Message.UNSAVED_ALIGNMENTS);
+  }
+
 }