X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FFileLoader.java;h=b16c37f83ce16b5e3088d9443e3a865d3d133947;hb=3fdc889794e3566af57628f0b6a308eb23886f96;hp=449c68577b21249f9f4d3ee763b61b3b9e5697b9;hpb=a7bc89415a6749ff89eb97f75fbc950a433a4935;p=jalview.git diff --git a/src/jalview/io/FileLoader.java b/src/jalview/io/FileLoader.java index 449c685..b16c37f 100755 --- a/src/jalview/io/FileLoader.java +++ b/src/jalview/io/FileLoader.java @@ -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 */ @@ -96,32 +98,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,9 +323,9 @@ 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()) + if (!Jalview.isHeadlessMode() && !Jalview.isBatchMode()) { JvOptionPane.showInternalMessageDialog(Desktop.desktop, MessageManager.getString("label.couldnt_read_data") @@ -313,7 +334,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,13 +356,14 @@ 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. } // 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 { @@ -515,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() { @@ -532,7 +555,7 @@ public class FileLoader implements Runnable } else { - System.err.println(errorMessage); + jalview.bin.Console.errPrintln(errorMessage); } } } @@ -541,9 +564,10 @@ 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) + if (raiseGUI && !Jalview.isBatchMode()) { javax.swing.SwingUtilities.invokeLater(new Runnable() { @@ -565,7 +589,7 @@ public class FileLoader implements Runnable er.printStackTrace(); alignFrame = null; - if (raiseGUI) + if (raiseGUI && !Jalview.isBatchMode()) { javax.swing.SwingUtilities.invokeLater(new Runnable() { @@ -581,7 +605,8 @@ 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 +625,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 +634,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)"); @@ -622,6 +647,8 @@ public class FileLoader implements Runnable } this.setShouldBeSaved(); + // after first file loaded we revert to assuming a default file format + useDefaultFileFormat = true; } /** @@ -660,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; } }