JAL-1683 replace year/version strings with tokens in source
[jalview.git] / src / jalview / appletgui / CutAndPasteTransfer.java
old mode 100755 (executable)
new mode 100644 (file)
index 6f5498d..21af301
@@ -1,28 +1,46 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.4)
- * Copyright (C) 2008 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
  * 
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
+ * This file is part of Jalview.
  * 
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
  * 
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
 package jalview.appletgui;
 
-import java.awt.*;
-import java.awt.event.*;
-
-import jalview.datamodel.*;
-import jalview.io.*;
+import jalview.datamodel.Alignment;
+import jalview.datamodel.PDBEntry;
+import jalview.datamodel.Sequence;
+import jalview.io.AnnotationFile;
+import jalview.io.AppletFormatAdapter;
+import jalview.io.IdentifyFile;
+import jalview.io.TCoffeeScoreFile;
+import jalview.schemes.TCoffeeColourScheme;
+import jalview.util.MessageManager;
+
+import java.awt.BorderLayout;
+import java.awt.Button;
+import java.awt.Dialog;
+import java.awt.Font;
+import java.awt.Frame;
+import java.awt.Panel;
+import java.awt.TextArea;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
 
 public class CutAndPasteTransfer extends Panel implements ActionListener,
         MouseListener
@@ -68,7 +86,7 @@ public class CutAndPasteTransfer extends Panel implements ActionListener,
   public void setPDBImport(Sequence seq)
   {
     this.seq = seq;
-    accept.setLabel("Accept");
+    accept.setLabel(MessageManager.getString("action.accept"));
     addSequences.setVisible(false);
     pdbImport = true;
   }
@@ -76,14 +94,14 @@ public class CutAndPasteTransfer extends Panel implements ActionListener,
   public void setTreeImport()
   {
     treeImport = true;
-    accept.setLabel("Accept");
+    accept.setLabel(MessageManager.getString("action.accept"));
     addSequences.setVisible(false);
   }
 
   public void setAnnotationImport()
   {
     annotationImport = true;
-    accept.setLabel("Accept");
+    accept.setLabel(MessageManager.getString("action.accept"));
     addSequences.setVisible(false);
   }
 
@@ -128,20 +146,23 @@ public class CutAndPasteTransfer extends Panel implements ActionListener,
       pdb.setFile(text);
 
       if (alignFrame.alignPanel.av.applet.jmolAvailable)
+      {
         new jalview.appletgui.AppletJmol(pdb, new Sequence[]
         { seq }, null, alignFrame.alignPanel, AppletFormatAdapter.PASTE);
+      }
       else
-
+      {
         new MCview.AppletPDBViewer(pdb, new Sequence[]
         { seq }, null, alignFrame.alignPanel, AppletFormatAdapter.PASTE);
+      }
 
     }
     else if (treeImport)
     {
       try
       {
-        jalview.io.NewickFile fin = new jalview.io.NewickFile(textarea
-                .getText(), "Paste");
+        jalview.io.NewickFile fin = new jalview.io.NewickFile(
+                textarea.getText(), "Paste");
 
         fin.parse();
         if (fin.getTree() != null)
@@ -151,24 +172,75 @@ public class CutAndPasteTransfer extends Panel implements ActionListener,
 
       } catch (Exception ex)
       {
-        textarea.setText("Could not parse Newick file!\n" + ex);
+        // TODO: JAL-1102 - should have a warning message in dialog, not simply
+        // overwrite the broken input data with the exception
+        textarea.setText(MessageManager.formatMessage(
+                "label.could_not_parse_newick_file", new String[]
+                { ex.getMessage() }));
         return;
       }
     }
     else if (annotationImport)
     {
-      if (new AnnotationFile().readAnnotationFile(
-              alignFrame.viewport.alignment, 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(MessageManager
+                            .getString("label.successfully_pasted_tcoffee_scores_to_alignment"));
+          }
+          else
+          {
+            // file valid but didn't get added to alignment for some reason
+            alignFrame.statusBar.setText(MessageManager.formatMessage(
+                    "label.failed_add_tcoffee_scores",
+                    new String[]
+                    { (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().annotateAlignmentView(alignFrame.viewport,
+                textarea.getText(),
+                jalview.io.AppletFormatAdapter.PASTE))
+        {
+          alignFrame.alignPanel.fontChanged();
+          alignFrame.alignPanel.setScrollValues(0, 0);
+          alignFrame.statusBar
+                  .setText(MessageManager
+                          .getString("label.successfully_pasted_annotation_to_alignment"));
+
+        }
+        else
+        {
+          if (!alignFrame.parseFeaturesFile(textarea.getText(),
+                  jalview.io.AppletFormatAdapter.PASTE))
+          {
+            alignFrame.statusBar
+                    .setText(MessageManager
+                            .getString("label.couldnt_parse_pasted_text_as_valid_annotation_feature_GFF_tcoffee_file"));
+          }
+        }
       }
     }
     else if (alignFrame != null)
@@ -192,15 +264,20 @@ public class CutAndPasteTransfer extends Panel implements ActionListener,
         {
           AlignFrame af = new AlignFrame(al, alignFrame.viewport.applet,
                   "Cut & Paste input - " + format, false);
-          af.statusBar.setText("Successfully pasted alignment file");
+          af.statusBar
+                  .setText(MessageManager
+                          .getString("label.successfully_pasted_annotation_to_alignment"));
         }
         else
         {
           alignFrame.addSequences(al.getSequencesArray());
+          alignFrame.statusBar.setText(MessageManager
+                  .getString("label.successfully_pasted_alignment_file"));
         }
       }
     }
-
+    // TODO: dialog should indicate if data was parsed correctly or not - see
+    // JAL-1102
     if (this.getParent() instanceof Frame)
     {
       ((Frame) this.getParent()).setVisible(false);
@@ -239,7 +316,8 @@ public class CutAndPasteTransfer extends Panel implements ActionListener,
   private void jbInit() throws Exception
   {
     textarea.setFont(new java.awt.Font("Monospaced", Font.PLAIN, 10));
-    textarea.setText("Paste your alignment file here");
+    textarea.setText(MessageManager
+            .getString("label.paste_your_alignment_file"));
     textarea.addMouseListener(this);
     this.setLayout(borderLayout1);
     accept.addActionListener(this);
@@ -254,7 +332,8 @@ public class CutAndPasteTransfer extends Panel implements ActionListener,
 
   public void mousePressed(MouseEvent evt)
   {
-    if (textarea.getText().startsWith("Paste your"))
+    if (textarea.getText().startsWith(
+            MessageManager.getString("label.paste_your")))
     {
       textarea.setText("");
     }