Merge branch 'develop' of https://source.jalview.org/git/jalview.git into develop
[jalview.git] / src / jalview / io / FileLoader.java
index 52f7705..e27c666 100755 (executable)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2b1)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
  */
 package jalview.io;
 
+import java.util.StringTokenizer;
+import java.util.Vector;
+
+import javax.swing.JOptionPane;
+import javax.swing.SwingUtilities;
+
+import jalview.api.ComplexAlignFile;
 import jalview.datamodel.AlignmentI;
+import jalview.datamodel.ColumnSelection;
 import jalview.datamodel.PDBEntry;
 import jalview.datamodel.SequenceI;
 import jalview.gui.AlignFrame;
 import jalview.gui.AlignViewport;
 import jalview.gui.Desktop;
 import jalview.gui.Jalview2XML;
+import jalview.schemes.ColourSchemeI;
 import jalview.structure.StructureSelectionManager;
 import jalview.util.MessageManager;
 
-import java.util.List;
-import java.util.StringTokenizer;
-import java.util.Vector;
-
-import javax.swing.JOptionPane;
-import javax.swing.SwingUtilities;
-
 public class FileLoader implements Runnable
 {
   String file;
@@ -297,7 +299,7 @@ public class FileLoader implements Runnable
               // open a new source and read from it
               FormatAdapter fa = new FormatAdapter();
               al = fa.readFile(file, protocol, format);
-              source = fa.afile; // keep reference for later if necessary.
+              source = fa.getAlignFile(); // keep reference for later if necessary.
             }
           } catch (java.io.IOException ex)
           {
@@ -323,7 +325,7 @@ public class FileLoader implements Runnable
             }
             if (sq.getPDBId() != null)
             {
-              for (PDBEntry pdbe : (List<PDBEntry>) sq.getPDBId())
+              for (PDBEntry pdbe : sq.getPDBId())
               {
                 StructureSelectionManager.getStructureSelectionManager(
                         Desktop.instance).registerPDBEntry(pdbe);
@@ -332,32 +334,42 @@ public class FileLoader implements Runnable
           }
           if (viewport != null)
           {
-            // TODO: create undo object for this JAL-1101
-            for (int i = 0; i < al.getHeight(); i++)
-            {
-              viewport.getAlignment().addSequence(al.getSequenceAt(i));
-            }
-            viewport.firePropertyChange("alignment", null, viewport
-                    .getAlignment().getSequences());
+            viewport.addAlignment(al, title);
           }
           else
           {
-            alignFrame = new AlignFrame(al, AlignFrame.DEFAULT_WIDTH,
-                    AlignFrame.DEFAULT_HEIGHT);
-
-            alignFrame.statusBar.setText(MessageManager.formatMessage(
-                    "label.successfully_loaded_file", new String[]
-                    { title }));
-
             if (!protocol.equals(AppletFormatAdapter.PASTE))
             {
               alignFrame.setFileName(file, format);
             }
-            if (source instanceof HtmlFile)
+            if (source instanceof ComplexAlignFile)
             {
-              ((HtmlFile) source).LoadAlignmentFeatures(alignFrame);
-
+              ColumnSelection colSel = ((ComplexAlignFile) source)
+                      .getColumnSelection();
+              SequenceI[] hiddenSeqs = ((ComplexAlignFile) source)
+                      .getHiddenSequences();
+              boolean showSeqFeatures = ((ComplexAlignFile) source)
+                      .isShowSeqFeatures();
+              ColourSchemeI cs = ((ComplexAlignFile) source)
+                      .getColourScheme();
+              alignFrame = new AlignFrame(al, hiddenSeqs, colSel,
+                      AlignFrame.DEFAULT_WIDTH,
+                      AlignFrame.DEFAULT_HEIGHT);
+
+              alignFrame.getViewport().setShowSequenceFeatures(
+                      showSeqFeatures);
+              alignFrame.changeColour(cs);
+            }
+            else
+            {
+              alignFrame = new AlignFrame(al, AlignFrame.DEFAULT_WIDTH,
+                      AlignFrame.DEFAULT_HEIGHT);
             }
+
+            alignFrame.statusBar.setText(MessageManager.formatMessage(
+                    "label.successfully_loaded_file", new String[]
+                    { title }));
+
             if (raiseGUI)
             {
               // add the window to the GUI