Applet can output and load annotations, features
[jalview.git] / src / jalview / appletgui / CutAndPasteTransfer.java
index bbbefa1..9f12b87 100755 (executable)
@@ -29,6 +29,7 @@ public class CutAndPasteTransfer extends Panel implements ActionListener, MouseL
 {\r
   boolean pdbImport = false;\r
   boolean treeImport = false;\r
+  boolean annotationImport = false;\r
   Sequence seq;\r
   AlignFrame alignFrame;\r
 \r
@@ -44,7 +45,6 @@ public class CutAndPasteTransfer extends Panel implements ActionListener, MouseL
 \r
     if (!forImport)\r
     {\r
-\r
       buttonPanel.setVisible(false);\r
     }\r
   }\r
@@ -62,25 +62,37 @@ public class CutAndPasteTransfer extends Panel implements ActionListener, MouseL
   public void setPDBImport(Sequence seq)\r
   {\r
     this.seq = seq;\r
+    accept.setLabel("Accept");\r
+    addSequences.setVisible(false);\r
     pdbImport = true;\r
   }\r
 \r
   public void setTreeImport()\r
   {\r
     treeImport = true;\r
-    ok.setLabel("Accept");\r
+    accept.setLabel("Accept");\r
+    addSequences.setVisible(false);\r
+  }\r
+\r
+  public void setAnnotationImport()\r
+  {\r
+    annotationImport = true;\r
+    accept.setLabel("Accept");\r
+    addSequences.setVisible(false);\r
   }\r
 \r
 \r
   public void actionPerformed(ActionEvent evt)\r
   {\r
-    if(evt.getSource()==ok)\r
-      ok_actionPerformed();\r
-    else if(evt.getSource()==cancel)\r
-      cancel_actionPerformed();\r
+    if(evt.getSource()==accept)\r
+      ok(true);\r
+    else if(evt.getSource() == addSequences)\r
+      ok(false);\r
+    else if(evt.getSource() == cancel)\r
+      cancel();\r
   }\r
 \r
-  protected void ok_actionPerformed()\r
+  protected void ok(boolean newWindow)\r
   {\r
     String text = getText();\r
     int length = text.length();\r
@@ -122,6 +134,22 @@ public class CutAndPasteTransfer extends Panel implements ActionListener, MouseL
         return;\r
       }\r
     }\r
+    else if(annotationImport)\r
+    {\r
+      if (new AnnotationFile().readAnnotationFile(\r
+          alignFrame.viewport.alignment, textarea.getText(),\r
+          jalview.io.AppletFormatAdapter.PASTE))\r
+      {\r
+        alignFrame.alignPanel.fontChanged();\r
+        alignFrame.alignPanel.setScrollValues(0, 0);\r
+\r
+      }\r
+      else\r
+      {\r
+        alignFrame.parseFeaturesFile(textarea.getText(),\r
+                                     jalview.io.AppletFormatAdapter.PASTE);\r
+      }\r
+    }\r
     else if(alignFrame!=null)\r
     {\r
       Alignment al = null;\r
@@ -133,12 +161,20 @@ public class CutAndPasteTransfer extends Panel implements ActionListener, MouseL
       {\r
         ex.printStackTrace();\r
       }\r
+\r
+\r
+\r
       if (al != null)\r
       {\r
-        AlignFrame af = new AlignFrame(al, alignFrame.viewport.applet,\r
-                                       "Cut & Paste input - " + format,\r
-                                       false);\r
-        af.statusBar.setText("Successfully pasted alignment file");\r
+        if(newWindow)\r
+        {\r
+          AlignFrame af = new AlignFrame(al, alignFrame.viewport.applet,\r
+                                         "Cut & Paste input - " + format,\r
+                                         false);\r
+          af.statusBar.setText("Successfully pasted alignment file");\r
+        }\r
+        else\r
+          alignFrame.addSequences(al.getSequencesArray());\r
       }\r
     }\r
 \r
@@ -148,7 +184,7 @@ public class CutAndPasteTransfer extends Panel implements ActionListener, MouseL
      ((Dialog)this.getParent()).setVisible(false);\r
   }\r
 \r
-  protected void cancel_actionPerformed()\r
+  protected void cancel()\r
   {\r
     textarea.setText("");\r
     if(this.getParent() instanceof Frame)\r
@@ -158,8 +194,10 @@ public class CutAndPasteTransfer extends Panel implements ActionListener, MouseL
   }\r
 \r
   protected TextArea textarea = new TextArea();\r
-  Button ok = new Button();\r
-  Button cancel = new Button();\r
+  Button accept = new Button("New Window");\r
+  Button addSequences = new Button("Add to Current Alignment");\r
+  Button cancel = new Button("Close");\r
+\r
   protected Panel buttonPanel = new Panel();\r
   BorderLayout borderLayout1 = new BorderLayout();\r
 \r
@@ -169,12 +207,12 @@ public class CutAndPasteTransfer extends Panel implements ActionListener, MouseL
       textarea.setText("Paste your alignment file here");\r
       textarea.addMouseListener(this);\r
       this.setLayout(borderLayout1);\r
-      ok.setLabel("New Window");\r
-      ok.addActionListener(this);\r
-      cancel.setLabel("Close");\r
+      accept.addActionListener(this);\r
+      addSequences.addActionListener(this);\r
       cancel.addActionListener(this);\r
       this.add(buttonPanel, BorderLayout.SOUTH);\r
-      buttonPanel.add(ok, null);\r
+      buttonPanel.add(accept, null);\r
+      buttonPanel.add(addSequences);\r
       buttonPanel.add(cancel, null);\r
       this.add(textarea, java.awt.BorderLayout.CENTER);\r
   }\r