Merge branch 'features/r2_11_2_alphafold/JAL-629' into features/JAL-3858_PAEsInProjects
[jalview.git] / src / jalview / gui / AlignViewport.java
index aa536d8..fea74db 100644 (file)
@@ -25,6 +25,7 @@ import java.awt.Dimension;
 import java.awt.Font;
 import java.awt.FontMetrics;
 import java.awt.Rectangle;
+import java.io.File;
 import java.util.ArrayList;
 import java.util.Hashtable;
 import java.util.List;
@@ -52,6 +53,13 @@ import jalview.datamodel.SearchResults;
 import jalview.datamodel.SearchResultsI;
 import jalview.datamodel.SequenceGroup;
 import jalview.datamodel.SequenceI;
+import jalview.io.AppletFormatAdapter;
+import jalview.io.DataSourceType;
+import jalview.io.FileFormatException;
+import jalview.io.FileFormatI;
+import jalview.io.FileFormats;
+import jalview.io.FileLoader;
+import jalview.io.IdentifyFile;
 import jalview.renderer.ResidueShader;
 import jalview.schemes.ColourSchemeI;
 import jalview.schemes.ColourSchemeProperty;
@@ -729,6 +737,47 @@ public class AlignViewport extends AlignmentViewport
   }
 
   /**
+   * Load a File into this AlignViewport attempting to detect format if not
+   * given or given as null.
+   * 
+   * @param file
+   * @param format
+   */
+  public void addFile(File file, FileFormatI format)
+  {
+    DataSourceType protocol = AppletFormatAdapter.checkProtocol(file);
+
+    if (format == null)
+    {
+      try
+      {
+        format = new IdentifyFile().identify(file, protocol);
+      } catch (FileFormatException e1)
+      {
+        jalview.bin.Console.error("Unknown file format for '" + file + "'");
+      }
+    }
+    else if (FileFormats.getInstance().isIdentifiable(format))
+    {
+      try
+      {
+        format = new IdentifyFile().identify(file, protocol);
+      } catch (FileFormatException e)
+      {
+        jalview.bin.Console.error("Unknown file format for '" + file + "'",
+                e);
+      }
+    }
+
+    new FileLoader().LoadFile(this, file, DataSourceType.FILE, format);
+  }
+
+  public void addFile(File file)
+  {
+    addFile(file, null);
+  }
+
+  /**
    * Show a dialog with the option to open and link (cDNA <-> protein) as a new
    * alignment, either as a standalone alignment or in a split frame. Returns
    * true if the new alignment was opened, false if not, because the user