Cursor added
[jalview.git] / src / jalview / appletgui / CutAndPasteTransfer.java
index ea9a8aa..4b890bb 100755 (executable)
@@ -25,15 +25,14 @@ import java.awt.event.*;
 import jalview.datamodel.*;\r
 import jalview.io.*;\r
 \r
-public class CutAndPasteTransfer extends Panel\r
+public class CutAndPasteTransfer extends Panel implements ActionListener, MouseListener\r
 {\r
-  jalview.bin.JalviewLite applet;\r
-\r
   boolean pdbImport = false;\r
+  boolean treeImport = false;\r
   Sequence seq;\r
-  SeqCanvas seqcanvas;\r
+  AlignFrame alignFrame;\r
 \r
-  public CutAndPasteTransfer(boolean forImport, jalview.bin.JalviewLite mainApplet)\r
+  public CutAndPasteTransfer(boolean forImport, AlignFrame alignFrame)\r
   {\r
     try {\r
         jbInit();\r
@@ -41,7 +40,7 @@ public class CutAndPasteTransfer extends Panel
         e.printStackTrace();\r
     }\r
 \r
-    applet = mainApplet;\r
+    this.alignFrame = alignFrame;\r
 \r
     if (!forImport)\r
     {\r
@@ -49,14 +48,6 @@ public class CutAndPasteTransfer extends Panel
     }\r
   }\r
 \r
-  public void setPDBImport(Sequence seq, SeqCanvas seqcanvas)\r
-  {\r
-    this.seq = seq;\r
-    this.seqcanvas = seqcanvas;\r
-    pdbImport = true;\r
-  }\r
-\r
-\r
   public String getText()\r
   {\r
     return textarea.getText();\r
@@ -67,7 +58,22 @@ public class CutAndPasteTransfer extends Panel
     textarea.setText(text);\r
   }\r
 \r
-  protected void ok_actionPerformed(ActionEvent e)\r
+  public void setPDBImport(Sequence seq)\r
+  {\r
+    this.seq = seq;\r
+    pdbImport = true;\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
+  }\r
+\r
+  protected void ok_actionPerformed()\r
   {\r
     String text = getText();\r
     int length = text.length();\r
@@ -88,29 +94,60 @@ public class CutAndPasteTransfer extends Panel
 \r
     if(pdbImport)\r
     {\r
-      new MCview.AppletPDBViewer(text, "Paste", seq, seqcanvas);\r
+      new MCview.AppletPDBViewer(text, AppletFormatAdapter.PASTE,\r
+                                 seq,\r
+                                 alignFrame.getSeqcanvas());\r
     }\r
-    else\r
+    else if(treeImport)\r
     {\r
-      SequenceI[] sequences = null;\r
+      try{\r
+        jalview.io.NewickFile fin = new jalview.io.NewickFile(textarea.getText(),\r
+            "Paste");\r
 \r
-      String format = IdentifyFile.Identify(text, "Paste");\r
-      sequences = new AppletFormatAdapter().readFile(text, "Paste", format);\r
+        fin.parse();\r
+        if(fin.getTree()!=null)\r
+          alignFrame.loadTree(fin, "Pasted tree file");\r
 \r
+      }\r
+      catch (Exception ex)\r
+      {\r
+        textarea.setText("Could not parse Newick file!\n" + ex);\r
+        return;\r
+      }\r
+    }\r
+    else if(alignFrame!=null)\r
+    {\r
+      SequenceI[] sequences = null;\r
+\r
+      String format = new IdentifyFile().Identify(text, AppletFormatAdapter.PASTE);\r
+      try{\r
+        sequences = new AppletFormatAdapter().readFile(text, AppletFormatAdapter.PASTE, format);\r
+      }catch(java.io.IOException ex)\r
+      {\r
+        ex.printStackTrace();\r
+      }\r
       if (sequences != null)\r
       {\r
-        AlignFrame af = new AlignFrame(new Alignment(sequences), applet,\r
-                                       "Cut & Paste input - " + format);\r
+        AlignFrame af = new AlignFrame(new Alignment(sequences), alignFrame.applet,\r
+                                       "Cut & Paste input - " + format,\r
+                                       false);\r
         af.statusBar.setText("Successfully pasted alignment file");\r
       }\r
     }\r
 \r
+   if(this.getParent() instanceof Frame)\r
     ((Frame)this.getParent()).setVisible(false);\r
+   else\r
+     ((Dialog)this.getParent()).setVisible(false);\r
   }\r
 \r
-  protected void cancel_actionPerformed(ActionEvent e)\r
+  protected void cancel_actionPerformed()\r
   {\r
-    ((Frame)this.getParent()).setVisible(false);\r
+    textarea.setText("");\r
+    if(this.getParent() instanceof Frame)\r
+     ((Frame)this.getParent()).setVisible(false);\r
+    else\r
+     ((Dialog)this.getParent()).setVisible(false);\r
   }\r
 \r
   protected TextArea textarea = new TextArea();\r
@@ -123,33 +160,25 @@ public class CutAndPasteTransfer extends Panel
   private void jbInit() throws Exception {\r
       textarea.setFont(new java.awt.Font("Monospaced", Font.PLAIN, 10));\r
       textarea.setText("Paste your alignment file here");\r
-      textarea.addMouseListener(new java.awt.event.MouseAdapter() {\r
-              public void mousePressed(MouseEvent e) {\r
-                  textarea_mousePressed(e);\r
-              }\r
-          });\r
+      textarea.addMouseListener(this);\r
       this.setLayout(borderLayout1);\r
       ok.setLabel("OK");\r
-      ok.addActionListener(new java.awt.event.ActionListener() {\r
-              public void actionPerformed(ActionEvent e) {\r
-                  ok_actionPerformed(e);\r
-              }\r
-          });\r
+      ok.addActionListener(this);\r
       cancel.setLabel("Cancel");\r
-      cancel.addActionListener(new java.awt.event.ActionListener() {\r
-              public void actionPerformed(ActionEvent e) {\r
-                  cancel_actionPerformed(e);\r
-              }\r
-          });\r
+      cancel.addActionListener(this);\r
       this.add(buttonPanel, BorderLayout.SOUTH);\r
       buttonPanel.add(ok, null);\r
       buttonPanel.add(cancel, null);\r
       this.add(textarea, java.awt.BorderLayout.CENTER);\r
   }\r
 \r
-  void textarea_mousePressed(MouseEvent e) {\r
+  public void mousePressed(MouseEvent evt) {\r
       if (textarea.getText().startsWith("Paste your")) {\r
           textarea.setText("");\r
-      }\r
+     }\r
   }\r
+  public void mouseReleased(MouseEvent evt){}\r
+  public void mouseClicked(MouseEvent evt){}\r
+  public void mouseEntered(MouseEvent evt){}\r
+  public void mouseExited(MouseEvent evt){}\r
 }\r