X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fgui%2FAlignViewport.java;h=ef9e575a1949f029291516e20d59ad6507e2c1c7;hb=8dca84768d848bc368985a8f0938a6c7ac059952;hp=e7c237ea55244d8cb88f9c484fce720854d9c445;hpb=b364e1e6d199002069dab615d1007799b5bb71e1;p=jalview.git diff --git a/src/jalview/gui/AlignViewport.java b/src/jalview/gui/AlignViewport.java index e7c237e..ef9e575 100644 --- a/src/jalview/gui/AlignViewport.java +++ b/src/jalview/gui/AlignViewport.java @@ -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; @@ -719,12 +728,62 @@ 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) + { + addFile(file, format, true); + } + + public void addFile(File file, FileFormatI format, boolean async) + { + 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, + async); + } + + 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 @@ -750,13 +809,10 @@ public class AlignViewport extends AlignmentViewport JvOptionPane dialog = JvOptionPane.newOptionDialog(Desktop.desktop) .setResponseHandler(0, () -> { addDataToAlignment(al); - return null; }).setResponseHandler(1, () -> { us.openLinkedAlignmentAs(al, title, true); - return null; }).setResponseHandler(2, () -> { us.openLinkedAlignmentAs(al, title, false); - return null; }); dialog.showDialog(question, MessageManager.getString("label.open_split_window"), @@ -1102,4 +1158,5 @@ public class AlignViewport extends AlignmentViewport { this.viewName = viewName; } + }