JAL-3026 File...Reload working
[jalview.git] / src / jalview / io / FileLoader.java
index 74c82eb..8e68067 100755 (executable)
@@ -41,8 +41,14 @@ import jalview.structure.StructureSelectionManager;
 import jalview.util.MessageManager;
 import jalview.ws.utils.UrlDownloadClient;
 
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
 import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.util.StringTokenizer;
 import java.util.Vector;
 
@@ -92,19 +98,15 @@ public class FileLoader implements Runnable
     this.raiseGUI = raiseGUI;
   }
 
-  public void LoadFile(AlignViewport viewport, String file,
+  public void LoadFile(AlignViewport viewport, Object file,
           DataSourceType protocol, FileFormatI format)
   {
     this.viewport = viewport;
-    LoadFile(file, protocol, format);
-  }
-
-  public void LoadFile(AlignViewport viewport, File selectedFile,
-          DataSourceType protocol, FileFormatI format)
-  {
-    this.viewport = viewport;
-    this.selectedFile = selectedFile;
-    LoadFile(selectedFile.getPath(), protocol, format);
+    if (file instanceof File) {
+      this.selectedFile = (File) file;
+      file = selectedFile.getPath();
+    }
+    LoadFile(file.toString(), protocol, format);
   }
 
   public void LoadFile(String file, DataSourceType protocol,
@@ -168,6 +170,24 @@ public class FileLoader implements Runnable
   }
 
   /**
+   * Load alignment from (file, protocol) of type format and wait till loaded
+   * 
+   * @param file
+   * @param sourceType
+   * @param format
+   * @return alignFrame constructed from file contents
+   */
+  public AlignFrame LoadFileWaitTillLoaded(File file,
+          DataSourceType sourceType, FileFormatI format)
+  {
+    this.selectedFile = file;
+    this.file = file.getPath();
+    this.protocol = sourceType;
+    this.format = format;
+    return _LoadFileWaitTillLoaded();
+  }
+
+  /**
    * Load alignment from FileParse source of type format and wait till loaded
    * 
    * @param source
@@ -441,6 +461,7 @@ public class FileLoader implements Runnable
             if (!(protocol == DataSourceType.PASTE))
             {
               alignFrame.setFileName(file, format);
+              alignFrame.setFileObject(selectedFile); // BH 2018 SwingJS
             }
             if (proxyColourScheme != null)
             {
@@ -613,4 +634,21 @@ public class FileLoader implements Runnable
     return tempStructFile.toString();
   }
 
+  /**
+   * 
+   * @param file a File, or a String which is a name of a file
+   * @return
+   * @throws FileNotFoundException 
+   */
+  @SuppressWarnings("unused")
+  public static BufferedReader getBuffereReader(Object file) throws FileNotFoundException {
+    if (file instanceof String)
+      return new BufferedReader(new FileReader((String) file));
+    
+    byte[] bytes = /** @j2sNative file._bytes || */ null;
+    if (bytes != null)
+      return new BufferedReader(new InputStreamReader(new ByteArrayInputStream(bytes)));
+    return  new BufferedReader(new FileReader((File) file));
+  }
+
 }