Merge branch 'develop' into features/JAL-653_gffalignments
[jalview.git] / src / jalview / appletgui / CutAndPasteTransfer.java
index d33e0cc..bb2fa12 100644 (file)
@@ -34,16 +34,20 @@ import java.awt.event.MouseEvent;
 import java.awt.event.MouseListener;
 
 import jalview.analysis.AlignmentUtils;
+import jalview.api.ComplexAlignFile;
 import jalview.bin.JalviewLite;
 import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentI;
+import jalview.datamodel.ColumnSelection;
 import jalview.datamodel.PDBEntry;
 import jalview.datamodel.SequenceI;
 import jalview.io.AnnotationFile;
 import jalview.io.AppletFormatAdapter;
+import jalview.io.FileParse;
 import jalview.io.IdentifyFile;
 import jalview.io.NewickFile;
 import jalview.io.TCoffeeScoreFile;
+import jalview.schemes.ColourSchemeI;
 import jalview.schemes.TCoffeeColourScheme;
 import jalview.util.MessageManager;
 
@@ -60,6 +64,8 @@ public class CutAndPasteTransfer extends Panel implements ActionListener,
 
   AlignFrame alignFrame;
 
+  FileParse source = null;
+
   public CutAndPasteTransfer(boolean forImport, AlignFrame alignFrame)
   {
     try
@@ -163,7 +169,7 @@ public class CutAndPasteTransfer extends Panel implements ActionListener,
     }
     else if (alignFrame != null)
     {
-      loadAlignment(text, newWindow);
+      loadAlignment(text, newWindow, alignFrame.getAlignViewport());
     }
 
     // TODO: dialog should indicate if data was parsed correctly or not - see
@@ -212,16 +218,18 @@ public class CutAndPasteTransfer extends Panel implements ActionListener,
    * @param text
    * @param newWindow
    */
-  protected void loadAlignment(String text, boolean newWindow)
+  protected void loadAlignment(String text, boolean newWindow,
+          AlignViewport viewport)
   {
     Alignment al = null;
 
     String format = new IdentifyFile().Identify(text,
             AppletFormatAdapter.PASTE);
+    AppletFormatAdapter afa = new AppletFormatAdapter(viewport);
     try
     {
-      al = new AppletFormatAdapter().readFile(text,
-              AppletFormatAdapter.PASTE, format);
+      al = afa.readFile(text, AppletFormatAdapter.PASTE, format);
+      source = afa.getAlignFile();
     } catch (java.io.IOException ex)
     {
       ex.printStackTrace();
@@ -242,8 +250,29 @@ public class CutAndPasteTransfer extends Panel implements ActionListener,
       }
       if (newWindow)
       {
-        AlignFrame af = new AlignFrame(al, alignFrame.viewport.applet,
-                "Cut & Paste input - " + format, false);
+        AlignFrame af;
+
+        if (source instanceof ComplexAlignFile)
+        {
+          ColumnSelection colSel = ((ComplexAlignFile) source)
+                  .getColumnSelection();
+          SequenceI[] hiddenSeqs = ((ComplexAlignFile) source)
+                  .getHiddenSequences();
+          boolean showSeqFeatures = ((ComplexAlignFile) source)
+                  .isShowSeqFeatures();
+          ColourSchemeI cs = ((ComplexAlignFile) source).getColourScheme();
+          af = new AlignFrame(al, hiddenSeqs, colSel,
+                  alignFrame.viewport.applet, "Cut & Paste input - "
+                          + format, false);
+          af.getAlignViewport().setShowSequenceFeatures(showSeqFeatures);
+          af.changeColour(cs);
+        }
+        else
+        {
+          af = new AlignFrame(al, alignFrame.viewport.applet,
+                  "Cut & Paste input - " + format, false);
+        }
+
         af.statusBar
                 .setText(MessageManager
                         .getString("label.successfully_pasted_annotation_to_alignment"));