Merge branch 'bug/JAL-4214_system_freeze_when_opening_file_using_gui_in_linux' into...
[jalview.git] / src / jalview / io / FileLoader.java
index 449c685..49571dc 100755 (executable)
@@ -96,32 +96,51 @@ public class FileLoader implements Runnable
   public void LoadFile(AlignViewport viewport, Object file,
           DataSourceType protocol, FileFormatI format)
   {
+    LoadFile(viewport, file, protocol, format, true);
+  }
+
+  public void LoadFile(AlignViewport viewport, Object file,
+          DataSourceType protocol, FileFormatI format, boolean async)
+  {
     this.viewport = viewport;
     if (file instanceof File)
     {
       this.selectedFile = (File) file;
       file = selectedFile.getPath();
     }
-    LoadFile(file.toString(), protocol, format);
+    LoadFile(file.toString(), protocol, format, async);
   }
 
   public void LoadFile(String file, DataSourceType protocol,
           FileFormatI format)
   {
+    LoadFile(file, protocol, format, true);
+  }
+
+  public void LoadFile(String file, DataSourceType protocol,
+          FileFormatI format, boolean async)
+  {
     this.file = file;
     this.protocol = protocol;
     this.format = format;
 
-    final Thread loader = new Thread(this);
-
-    SwingUtilities.invokeLater(new Runnable()
+    if (async)
     {
-      @Override
-      public void run()
+      final Thread loader = new Thread(this);
+
+      SwingUtilities.invokeLater(new Runnable()
       {
-        loader.start();
-      }
-    });
+        @Override
+        public void run()
+        {
+          loader.start();
+        }
+      });
+    }
+    else
+    {
+      this.run();
+    }
   }
 
   /**
@@ -302,7 +321,7 @@ public class FileLoader implements Runnable
       if (format == null)
       {
         Desktop.instance.stopLoading();
-        System.err.println("The input file \"" + file
+        jalview.bin.Console.errPrintln("The input file \"" + file
                 + "\" has null or unidentifiable data content!");
         if (!Jalview.isHeadlessMode())
         {
@@ -313,7 +332,8 @@ public class FileLoader implements Runnable
                   MessageManager.getString("label.couldnt_read_data"),
                   JvOptionPane.WARNING_MESSAGE);
         }
-        this.setShouldBeSaved();
+        // don't set shouldBeSaved if didn't load anything
+        // this.setShouldBeSaved();
         return;
       }
       // TODO: cache any stream datasources as a temporary file (eg. PDBs
@@ -334,7 +354,7 @@ public class FileLoader implements Runnable
         if (source != null)
         {
           // Tell the user (developer?) that this is going to cause a problem
-          System.err.println(
+          jalview.bin.Console.errPrintln(
                   "IMPLEMENTATION ERROR: Cannot read consecutive Jalview XML projects from a stream.");
           // We read the data anyway - it might make sense.
         }
@@ -532,7 +552,7 @@ public class FileLoader implements Runnable
           }
           else
           {
-            System.err.println(errorMessage);
+            jalview.bin.Console.errPrintln(errorMessage);
           }
         }
       }
@@ -541,7 +561,7 @@ public class FileLoader implements Runnable
 
     } catch (Exception er)
     {
-      System.err.println("Exception whilst opening file '" + file);
+      jalview.bin.Console.errPrintln("Exception whilst opening file '" + file);
       er.printStackTrace();
       if (raiseGUI)
       {
@@ -581,7 +601,7 @@ public class FileLoader implements Runnable
           }
         });
       }
-      System.err.println("Out of memory loading file " + file + "!!");
+      jalview.bin.Console.errPrintln("Out of memory loading file " + file + "!!");
 
     }
     loadtime += System.currentTimeMillis();
@@ -600,7 +620,7 @@ public class FileLoader implements Runnable
       {
         AlignmentI al = alignFrame.getViewport().getAlignment();
 
-        System.out.println("Loaded '" + title + "' in "
+        jalview.bin.Console.outPrintln("Loaded '" + title + "' in "
                 + (loadtime / 1000.0) + "s, took an additional "
                 + (1.0 * memused / (1024.0 * 1024.0)) + " MB ("
                 + al.getHeight() + " seqs by " + al.getWidth() + " cols)");
@@ -609,7 +629,7 @@ public class FileLoader implements Runnable
       {
         // report that we didn't load anything probably due to an out of memory
         // error
-        System.out.println("Failed to load '" + title + "' in "
+        jalview.bin.Console.outPrintln("Failed to load '" + title + "' in "
                 + (loadtime / 1000.0) + "s, took an additional "
                 + (1.0 * memused / (1024.0 * 1024.0))
                 + " MB (alignment is null)");