JAL-1355
[jalview.git] / src / jalview / gui / AppJmol.java
index 80bfcf3..bab8a2d 100644 (file)
@@ -1,24 +1,28 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8)
- * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
+ * Copyright (C) 2014 The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
  * 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.
+ * 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 Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
 package jalview.gui;
 
 import java.util.*;
 import java.awt.*;
+
 import javax.swing.*;
 import javax.swing.event.*;
 
@@ -26,19 +30,20 @@ import java.awt.event.*;
 import java.io.*;
 
 import jalview.jbgui.GStructureViewer;
-import jalview.api.AlignmentViewPanel;
 import jalview.api.SequenceStructureBinding;
+import jalview.api.structures.JalviewStructureDisplayI;
 import jalview.bin.Cache;
 import jalview.datamodel.*;
 import jalview.gui.ViewSelectionMenu.ViewSetProvider;
-import jalview.structure.*;
 import jalview.datamodel.PDBEntry;
+import jalview.ext.jmol.JalviewJmolBinding;
 import jalview.io.*;
 import jalview.schemes.*;
+import jalview.util.MessageManager;
 import jalview.util.Platform;
 
 public class AppJmol extends GStructureViewer implements Runnable,
-        SequenceStructureBinding, ViewSetProvider
+        ViewSetProvider, JalviewStructureDisplayI
 
 {
   AppJmolBinding jmb;
@@ -172,7 +177,7 @@ public class AppJmol extends GStructureViewer implements Runnable,
       _alignwith = new Vector<AlignmentPanel>();
     }
 
-    seqColourBy = new ViewSelectionMenu("Colour by ..", this, _colourwith,
+    seqColourBy = new ViewSelectionMenu(MessageManager.getString("label.colour_by"), this, _colourwith,
             new ItemListener()
             {
 
@@ -192,7 +197,7 @@ public class AppJmol extends GStructureViewer implements Runnable,
             });
     viewMenu.add(seqColourBy);
     final ItemListener handler;
-    JMenu alpanels = new ViewSelectionMenu("Superpose with ..", this,
+    JMenu alpanels = new ViewSelectionMenu(MessageManager.getString("label.superpose_with"), this,
             _alignwith, handler = new ItemListener()
             {
 
@@ -200,8 +205,11 @@ public class AppJmol extends GStructureViewer implements Runnable,
               public void itemStateChanged(ItemEvent e)
               {
                 alignStructs.setEnabled(_alignwith.size() > 0);
-                alignStructs.setToolTipText("Align structures using "
-                        + _alignwith.size() + " linked alignment views");
+                alignStructs.setToolTipText(MessageManager
+                        .formatMessage(
+                                "label.align_structures_using_linked_alignment_views",
+                                new String[]
+                                { new Integer(_alignwith.size()).toString() }));
               }
             });
     handler.itemStateChanged(null);
@@ -253,10 +261,11 @@ public class AppJmol extends GStructureViewer implements Runnable,
     if (alreadyMapped != null)
     {
       int option = JOptionPane.showInternalConfirmDialog(Desktop.desktop,
-              pdbentry.getId() + " is already displayed."
-                      + "\nDo you want to re-use this viewer ?",
-              "Map Sequences to Visible Window: " + pdbentry.getId(),
-              JOptionPane.YES_NO_OPTION);
+              MessageManager.formatMessage(
+                      "label.pdb_entry_is_already_displayed", new String[]
+                      { pdbentry.getId() }), MessageManager.formatMessage(
+                      "label.map_sequences_to_visible_window", new String[]
+                      { pdbentry.getId() }), JOptionPane.YES_NO_OPTION);
 
       if (option == JOptionPane.YES_OPTION)
       {
@@ -311,11 +320,15 @@ public class AppJmol extends GStructureViewer implements Runnable,
       {
         AppJmol topJmol = (AppJmol) jm.nextElement();
         // TODO: highlight topJmol in view somehow
-        int option = JOptionPane.showInternalConfirmDialog(Desktop.desktop,
-                "Do you want to add " + pdbentry.getId()
-                        + " to the view called\n'" + topJmol.getTitle()
-                        + "'\n", "Align to existing structure view",
-                JOptionPane.YES_NO_OPTION);
+        int option = JOptionPane
+                .showInternalConfirmDialog(
+                        Desktop.desktop,
+                        MessageManager.formatMessage(
+                                "label.add_pdbentry_to_view", new String[]
+                                { pdbentry.getId(), topJmol.getTitle() }),
+                        MessageManager
+                                .getString("label.align_to_existing_structure_view"),
+                        JOptionPane.YES_NO_OPTION);
         if (option == JOptionPane.YES_OPTION)
         {
           topJmol.useAlignmentPanelForSuperposition(ap);
@@ -620,7 +633,8 @@ public class AppJmol extends GStructureViewer implements Runnable,
     {
       return;
     }
-    JMenuItem menuItem = new JMenuItem("All");
+    JMenuItem menuItem = new JMenuItem(
+            MessageManager.getString("label.all"));
     menuItem.addActionListener(new ActionListener()
     {
       public void actionPerformed(ActionEvent evt)
@@ -677,7 +691,7 @@ public class AppJmol extends GStructureViewer implements Runnable,
     jmb.centerViewer(toshow);
   }
 
-  void closeViewer()
+  public void closeViewer()
   {
     jmb.closeViewer();
     ap = null;
@@ -782,11 +796,12 @@ public class AppJmol extends GStructureViewer implements Runnable,
     if (errormsgs.length() > 0)
     {
 
-      JOptionPane.showInternalMessageDialog(Desktop.desktop,
-              "The following pdb entries could not be retrieved from the PDB:\n"
-                      + errormsgs.toString()
-                      + "\nPlease try downloading them manually.",
-              "Couldn't load file", JOptionPane.ERROR_MESSAGE);
+      JOptionPane.showInternalMessageDialog(Desktop.desktop, MessageManager
+              .formatMessage("label.pdb_entries_couldnt_be_retrieved",
+                      new String[]
+                      { errormsgs.toString() }), MessageManager
+              .getString("label.couldnt_load_file"),
+              JOptionPane.ERROR_MESSAGE);
 
     }
     long lastnotify = jmb.getLoadNotifiesHandled();
@@ -834,7 +849,8 @@ public class AppJmol extends GStructureViewer implements Runnable,
 
       // need to wait around until script has finished
       while (addingStructures ? lastnotify >= jmb.getLoadNotifiesHandled()
-              : (jmb.isFinishedInit() && jmb.getPdbFile().length != jmb.pdbentry.length))
+              : (jmb.isFinishedInit() && jmb.getPdbFile() != null && jmb
+                      .getPdbFile().length != jmb.pdbentry.length))
       {
         try
         {
@@ -876,7 +892,7 @@ public class AppJmol extends GStructureViewer implements Runnable,
 
     chooser.setFileView(new JalviewFileView());
     chooser.setDialogTitle("Save PDB File");
-    chooser.setToolTipText("Save");
+    chooser.setToolTipText(MessageManager.getString("action.save"));
 
     int value = chooser.showSaveDialog(this);
 
@@ -924,8 +940,9 @@ public class AppJmol extends GStructureViewer implements Runnable,
       cap.dispose();
       return;
     }
-    jalview.gui.Desktop.addInternalFrame(cap, "PDB - Sequence Mapping",
-            550, 600);
+    jalview.gui.Desktop.addInternalFrame(cap,
+            MessageManager.getString("label.pdb_sequence_mapping"), 550,
+            600);
   }
 
   /**
@@ -1147,7 +1164,8 @@ public class AppJmol extends GStructureViewer implements Runnable,
         g.fillRect(0, 0, currentSize.width, currentSize.height);
         g.setColor(Color.white);
         g.setFont(new Font("Verdana", Font.BOLD, 14));
-        g.drawString("Error loading file...", 20, currentSize.height / 2);
+        g.drawString(MessageManager.getString("label.error_loading_file")
+                + "...", 20, currentSize.height / 2);
         StringBuffer sb = new StringBuffer();
         int lines = 0;
         for (int e = 0; e < jmb.pdbentry.length; e++)
@@ -1172,7 +1190,8 @@ public class AppJmol extends GStructureViewer implements Runnable,
         g.fillRect(0, 0, currentSize.width, currentSize.height);
         g.setColor(Color.white);
         g.setFont(new Font("Verdana", Font.BOLD, 14));
-        g.drawString("Retrieving PDB data....", 20, currentSize.height / 2);
+        g.drawString(MessageManager.getString("label.retrieving_pdb_data"),
+                20, currentSize.height / 2);
       }
       else
       {
@@ -1340,4 +1359,9 @@ public class AppJmol extends GStructureViewer implements Runnable,
     return !jmb.isColourBySequence();
   }
 
+  public JalviewJmolBinding getBinding()
+  {
+    return jmb;
+  }
+
 }