JAL-1078 - extend applet cut'n'paste features/annotation to support t-coffee file
[jalview.git] / src / jalview / appletgui / CutAndPasteTransfer.java
index 4a29568..ec31b0a 100755 (executable)
@@ -22,6 +22,7 @@ import java.awt.event.*;
 
 import jalview.datamodel.*;
 import jalview.io.*;
+import jalview.schemes.TCoffeeColourScheme;
 
 public class CutAndPasteTransfer extends Panel implements ActionListener,
         MouseListener
@@ -157,18 +158,57 @@ public class CutAndPasteTransfer extends Panel implements ActionListener,
     }
     else if (annotationImport)
     {
-      if (new AnnotationFile().readAnnotationFile(
-              alignFrame.viewport.getAlignment(), textarea.getText(),
-              jalview.io.AppletFormatAdapter.PASTE))
+      TCoffeeScoreFile tcf = null;
+      try
       {
-        alignFrame.alignPanel.fontChanged();
-        alignFrame.alignPanel.setScrollValues(0, 0);
-
+        tcf = new TCoffeeScoreFile(textarea.getText(),
+                jalview.io.AppletFormatAdapter.PASTE);
+        if (tcf.isValid())
+        {
+          if (tcf.annotateAlignment(alignFrame.viewport.getAlignment(),
+                  true))
+          {
+            alignFrame.tcoffeeColour.setEnabled(true);
+            alignFrame.alignPanel.fontChanged();
+            alignFrame.changeColour(new TCoffeeColourScheme(
+                    alignFrame.viewport.getAlignment()));
+            alignFrame.statusBar
+                    .setText("Successfully pasted T-Coffee scores to alignment.");
+          }
+          else
+          {
+            // file valid but didn't get added to alignment for some reason
+            alignFrame.statusBar.setText("Failed to add T-Coffee scores: "+(tcf.getWarningMessage()!=null ? tcf.getWarningMessage():""));
+          }
+        }
+        else
+        {
+          tcf = null;
+        }
+      } catch (Exception x)
+      {
+        tcf = null;
       }
-      else
+      if (tcf == null)
       {
-        alignFrame.parseFeaturesFile(textarea.getText(),
-                jalview.io.AppletFormatAdapter.PASTE);
+        if (new AnnotationFile().readAnnotationFile(
+                alignFrame.viewport.getAlignment(), textarea.getText(),
+                jalview.io.AppletFormatAdapter.PASTE))
+        {
+          alignFrame.alignPanel.fontChanged();
+          alignFrame.alignPanel.setScrollValues(0, 0);
+          alignFrame.statusBar
+                  .setText("Successfully pasted annotation to alignment.");
+
+        }
+        else
+        {
+          if (!alignFrame.parseFeaturesFile(textarea.getText(),
+                  jalview.io.AppletFormatAdapter.PASTE))
+          {
+            alignFrame.statusBar.setText("Couldn't parse pasted text as a valid annotation, feature, GFF, or T-Coffee score file.");
+          }
+        }
       }
     }
     else if (alignFrame != null)