JAL-2360 ColourMenuHelper now builds and selects items in colour menu
[jalview.git] / src / MCview / PDBViewer.java
index d5f0d0b..721b6a7 100755 (executable)
@@ -24,8 +24,10 @@ import jalview.datamodel.PDBEntry;
 import jalview.datamodel.SequenceI;
 import jalview.gui.AlignmentPanel;
 import jalview.gui.Desktop;
+import jalview.gui.JvOptionPane;
 import jalview.gui.OOMWarning;
 import jalview.gui.UserDefinedColours;
+import jalview.io.DataSourceType;
 import jalview.io.JalviewFileChooser;
 import jalview.io.JalviewFileView;
 import jalview.schemes.BuriedColourScheme;
@@ -39,6 +41,7 @@ import jalview.schemes.ZappoColourScheme;
 import jalview.util.MessageManager;
 import jalview.ws.ebi.EBIFetchClient;
 
+import java.awt.Color;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.ItemEvent;
@@ -52,6 +55,7 @@ import java.io.File;
 import java.io.FileOutputStream;
 import java.io.FileReader;
 import java.io.PrintWriter;
+import java.util.Map;
 
 import javax.swing.ButtonGroup;
 import javax.swing.JCheckBoxMenuItem;
@@ -60,7 +64,6 @@ import javax.swing.JInternalFrame;
 import javax.swing.JMenu;
 import javax.swing.JMenuBar;
 import javax.swing.JMenuItem;
-import javax.swing.JOptionPane;
 import javax.swing.JRadioButtonMenuItem;
 
 public class PDBViewer extends JInternalFrame implements Runnable
@@ -79,12 +82,12 @@ public class PDBViewer extends JInternalFrame implements Runnable
 
   AlignmentPanel ap;
 
-  String protocol;
+  DataSourceType protocol;
 
   String tmpPDBFile;
 
   public PDBViewer(PDBEntry pdbentry, SequenceI[] seq, String[] chains,
-          AlignmentPanel ap, String protocol)
+          AlignmentPanel ap, DataSourceType protocol)
   {
     this.pdbentry = pdbentry;
     this.seq = seq;
@@ -113,7 +116,7 @@ public class PDBViewer extends JInternalFrame implements Runnable
       {
         tmpPDBFile = pdbentry.getFile();
         PDBfile pdbfile = new PDBfile(false, false, false, tmpPDBFile,
-                jalview.io.AppletFormatAdapter.FILE);
+                DataSourceType.FILE);
 
         pdbcanvas.init(pdbentry, seq, chains, ap, protocol);
 
@@ -128,18 +131,17 @@ public class PDBViewer extends JInternalFrame implements Runnable
       worker.start();
     }
 
-    if (pdbentry.getProperty() != null)
+    String method = (String) pdbentry.getProperty("method");
+    if (method != null)
     {
-      if (pdbentry.getProperty().get("method") != null)
-      {
-        title.append(" Method: ");
-        title.append(pdbentry.getProperty().get("method"));
-      }
-      if (pdbentry.getProperty().get("chains") != null)
-      {
-        title.append(" Chain:");
-        title.append(pdbentry.getProperty().get("chains"));
-      }
+      title.append(" Method: ");
+      title.append(method);
+    }
+    String ch = (String) pdbentry.getProperty("chains");
+    if (ch != null)
+    {
+      title.append(" Chain:");
+      title.append(ch);
     }
     Desktop.addInternalFrame(this, title.toString(), 400, 400);
   }
@@ -151,7 +153,7 @@ public class PDBViewer extends JInternalFrame implements Runnable
     {
       EBIFetchClient ebi = new EBIFetchClient();
       String query = "pdb:" + pdbentry.getId();
-      pdbentry.setFile(ebi.fetchDataAsFile(query, "default", ".xml")
+      pdbentry.setFile(ebi.fetchDataAsFile(query, "default", "xml")
               .getAbsolutePath());
 
       if (pdbentry.getFile() != null)
@@ -275,7 +277,7 @@ public class PDBViewer extends JInternalFrame implements Runnable
         allchains_itemStateChanged(e);
       }
     });
-    zappo.setText(MessageManager.getString("label.zappo"));
+    zappo.setText(MessageManager.getString("label.colourScheme_zappo"));
     zappo.addActionListener(new ActionListener()
     {
       @Override
@@ -284,7 +286,7 @@ public class PDBViewer extends JInternalFrame implements Runnable
         zappo_actionPerformed(e);
       }
     });
-    taylor.setText(MessageManager.getString("label.taylor"));
+    taylor.setText(MessageManager.getString("label.colourScheme_taylor"));
     taylor.addActionListener(new ActionListener()
     {
       @Override
@@ -293,7 +295,8 @@ public class PDBViewer extends JInternalFrame implements Runnable
         taylor_actionPerformed(e);
       }
     });
-    hydro.setText(MessageManager.getString("label.hydrophobicity"));
+    hydro.setText(MessageManager
+            .getString("label.colourScheme_hydrophobic"));
     hydro.addActionListener(new ActionListener()
     {
       @Override
@@ -302,7 +305,8 @@ public class PDBViewer extends JInternalFrame implements Runnable
         hydro_actionPerformed(e);
       }
     });
-    helix.setText(MessageManager.getString("label.helix_propensity"));
+    helix.setText(MessageManager
+            .getString("label.colourScheme_helix_propensity"));
     helix.addActionListener(new ActionListener()
     {
       @Override
@@ -311,7 +315,8 @@ public class PDBViewer extends JInternalFrame implements Runnable
         helix_actionPerformed(e);
       }
     });
-    strand.setText(MessageManager.getString("label.strand_propensity"));
+    strand.setText(MessageManager
+            .getString("label.colourScheme_strand_propensity"));
     strand.addActionListener(new ActionListener()
     {
       @Override
@@ -320,7 +325,8 @@ public class PDBViewer extends JInternalFrame implements Runnable
         strand_actionPerformed(e);
       }
     });
-    turn.setText(MessageManager.getString("label.turn_propensity"));
+    turn.setText(MessageManager
+            .getString("label.colourScheme_turn_propensity"));
     turn.addActionListener(new ActionListener()
     {
       @Override
@@ -329,7 +335,8 @@ public class PDBViewer extends JInternalFrame implements Runnable
         turn_actionPerformed(e);
       }
     });
-    buried.setText(MessageManager.getString("label.buried_index"));
+    buried.setText(MessageManager
+            .getString("label.colourScheme_buried_index"));
     buried.addActionListener(new ActionListener()
     {
       @Override
@@ -400,49 +407,64 @@ public class PDBViewer extends JInternalFrame implements Runnable
     bg.add(buried);
     bg.add(user);
 
-    if (jalview.gui.UserDefinedColours.getUserColourSchemes() != null)
+    Map<String, UserColourScheme> userColourSchemes = UserDefinedColours
+            .getUserColourSchemes();
+    if (userColourSchemes != null)
     {
-      java.util.Enumeration userColours = jalview.gui.UserDefinedColours
-              .getUserColourSchemes().keys();
-
-      while (userColours.hasMoreElements())
+      for (String userColour : userColourSchemes.keySet())
       {
         final JRadioButtonMenuItem radioItem = new JRadioButtonMenuItem(
-                userColours.nextElement().toString());
+                userColour);
         radioItem.setName("USER_DEFINED");
         radioItem.addMouseListener(new MouseAdapter()
         {
           @Override
           public void mousePressed(MouseEvent evt)
           {
-            if (evt.isPopupTrigger())
+            if (evt.isPopupTrigger()) // Mac
             {
-              radioItem.removeActionListener(radioItem.getActionListeners()[0]);
-
-              int option = JOptionPane.showInternalConfirmDialog(
-                      jalview.gui.Desktop.desktop,
-                      MessageManager
-                              .getString("label.remove_from_default_list"),
-                      MessageManager
-                              .getString("label.remove_user_defined_colour"),
-                      JOptionPane.YES_NO_OPTION);
-              if (option == JOptionPane.YES_OPTION)
-              {
-                jalview.gui.UserDefinedColours
-                        .removeColourFromDefaults(radioItem.getText());
-                coloursMenu.remove(radioItem);
-              }
-              else
+              offerRemoval(radioItem);
+            }
+          }
+
+          @Override
+          public void mouseReleased(MouseEvent evt)
+          {
+            if (evt.isPopupTrigger()) // Windows
+            {
+              offerRemoval(radioItem);
+            }
+          }
+
+          /**
+           * @param radioItem
+           */
+          void offerRemoval(final JRadioButtonMenuItem radioItem)
+          {
+            radioItem.removeActionListener(radioItem.getActionListeners()[0]);
+
+            int option = JvOptionPane.showInternalConfirmDialog(
+                    jalview.gui.Desktop.desktop, MessageManager
+                            .getString("label.remove_from_default_list"),
+                    MessageManager
+                            .getString("label.remove_user_defined_colour"),
+                    JvOptionPane.YES_NO_OPTION);
+            if (option == JvOptionPane.YES_OPTION)
+            {
+              jalview.gui.UserDefinedColours
+                      .removeColourFromDefaults(radioItem.getText());
+              coloursMenu.remove(radioItem);
+            }
+            else
+            {
+              radioItem.addActionListener(new ActionListener()
               {
-                radioItem.addActionListener(new ActionListener()
+                @Override
+                public void actionPerformed(ActionEvent evt)
                 {
-                  @Override
-                  public void actionPerformed(ActionEvent evt)
-                  {
-                    user_actionPerformed(evt);
-                  }
-                });
-              }
+                  user_actionPerformed(evt);
+                }
+              });
             }
           }
         });
@@ -707,7 +729,7 @@ public class PDBViewer extends JInternalFrame implements Runnable
     }
     else
     {
-      UserColourScheme udc = (UserColourScheme) UserDefinedColours
+      UserColourScheme udc = UserDefinedColours
               .getUserColourSchemes().get(e.getActionCommand());
 
       pdbcanvas.pdb.setColours(udc);
@@ -718,8 +740,8 @@ public class PDBViewer extends JInternalFrame implements Runnable
 
   public void background_actionPerformed(ActionEvent e)
   {
-    java.awt.Color col = JColorChooser.showDialog(this,
-            MessageManager.getString("label.select_backgroud_colour"),
+    Color col = JColorChooser.showDialog(this,
+            MessageManager.getString("label.select_background_colour"),
             pdbcanvas.backgroundColour);
 
     if (col != null)