JAL-4134 support recovery of mapped positions for raw matrix column index in Mappable...
[jalview.git] / src / jalview / gui / AlignViewport.java
index e7c237e..90f627e 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;
@@ -46,11 +47,19 @@ import jalview.datamodel.AlignedCodonFrame;
 import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.ColumnSelection;
+import jalview.datamodel.ContactMatrixI;
 import jalview.datamodel.HiddenColumns;
 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;
@@ -331,7 +340,7 @@ public class AlignViewport extends AlignmentViewport
     viewStyle.setFontName(font.getName());
     viewStyle.setFontStyle(font.getStyle());
     viewStyle.setFontSize(font.getSize());
-
+    
     validCharWidth = true;
   }
 
@@ -719,12 +728,56 @@ public class AlignViewport extends AlignmentViewport
         al.addSequence(seq);
       }
     }
-
+    for (ContactMatrixI cm : toAdd.getContactMaps())
+    {
+      al.addContactList(cm);
+    }
     ranges.setEndSeq(getAlignment().getHeight() - 1); // BH 2019.04.18
     firePropertyChange("alignment", null, getAlignment().getSequences());
   }
 
   /**
+   * 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