JAL-2361 select colour menu item by matching its name to colour scheme
[jalview.git] / src / jalview / jbgui / GAlignFrame.java
index b38fab4..fba0efa 100755 (executable)
@@ -37,6 +37,7 @@ import jalview.util.Platform;
 
 import java.awt.BorderLayout;
 import java.awt.Color;
+import java.awt.Component;
 import java.awt.GridLayout;
 import java.awt.Toolkit;
 import java.awt.event.ActionEvent;
@@ -67,8 +68,6 @@ import javax.swing.event.MenuListener;
 
 public class GAlignFrame extends JInternalFrame
 {
-  protected static final String USER_DEFINED_COLOUR_SCHEME = "USER_DEFINED";
-
   protected JMenuBar alignFrameMenuBar = new JMenuBar();
 
   protected JMenuItem closeMenuItem = new JMenuItem();
@@ -290,69 +289,35 @@ public class GAlignFrame extends JInternalFrame
     }
   }
 
-  public void setColourSelected(String defaultColour)
+  /**
+   * Marks as selected the colour menu item matching the given name, or the
+   * first item ('None') if no match is found
+   * 
+   * @param colourName
+   */
+  protected void setColourSelected(String colourName)
   {
-    JalviewColourScheme scheme = JalviewColourScheme.forName(defaultColour);
-    if (scheme == null)
+    noColourmenuItem.setSelected(true);
+    if (colourName == null)
     {
-      noColourmenuItem.setSelected(true);
       return;
     }
-    switch (scheme)
-    {
-
-    case Clustal:
-        clustalColour.setSelected(true);
-        break;
-    case Blosum62:
-        BLOSUM62Colour.setSelected(true);
-        break;
-    case PID:
-        PIDColour.setSelected(true);
-        break;
-    case Zappo:
-        zappoColour.setSelected(true);
-        break;
-    case Taylor:
-        taylorColour.setSelected(true);
-        break;
-    case Hydrophobic:
-        hydrophobicityColour.setSelected(true);
-        break;
-    case Helix:
-        helixColour.setSelected(true);
-        break;
-    case Strand:
-        strandColour.setSelected(true);
-        break;
-    case Turn:
-        turnColour.setSelected(true);
-        break;
-    case Buried:
-        buriedColour.setSelected(true);
-        break;
-    case Nucleotide:
-        nucleotideColour.setSelected(true);
-        break;
-    case TCoffee:
-        tcoffeeColour.setSelected(true);
-        break;
-    case PurinePyrimidine:
-        purinePyrimidineColour.setSelected(true);
-        break;
-    // case RNAInteraction:
-    // RNAInteractionColour.setSelected(true);
-    // break;
-    case RNAHelices:
-      rnahelicesColour.setSelected(true);
-      break;
-    case UserDefined:
-        userDefinedColour.setSelected(true);
-        break;
-      default:
-        noColourmenuItem.setSelected(true);
-        break;
+
+    /*
+     * look for a radio button with a name that matches the colour name
+     * (note the button text may not as it may be internationalised)
+     */
+    for (Component menuItem : colourMenu.getMenuComponents())
+    {
+      if (menuItem instanceof JRadioButtonMenuItem)
+      {
+        if (colourName.equals(((JRadioButtonMenuItem) menuItem).getName()))
+        {
+          ((JRadioButtonMenuItem) menuItem).setSelected(true);
+          return;
+        }
       }
+    }
   }
 
   private void jbInit() throws Exception
@@ -2056,7 +2021,7 @@ public class GAlignFrame extends JInternalFrame
       {
         final JRadioButtonMenuItem radioItem = new JRadioButtonMenuItem(
                 userColour);
-        radioItem.setName(USER_DEFINED_COLOUR_SCHEME);
+        radioItem.setName(userColour);
         radioItem.addMouseListener(new MouseAdapter()
         {
           @Override
@@ -2148,7 +2113,7 @@ public class GAlignFrame extends JInternalFrame
     colours.add(purinePyrimidineColour);
     // colours.add(covariationColour);
     colours.add(tcoffeeColour);
-    colours.add(RNAInteractionColour);
+    // colours.add(RNAInteractionColour);
     setColourSelected(Cache.getDefault(Preferences.DEFAULT_COLOUR,
             ResidueColourScheme.NONE));
 
@@ -2156,7 +2121,9 @@ public class GAlignFrame extends JInternalFrame
 
   /**
    * Constructs the entries on the Colour menu (but does not add them to the
-   * menu)
+   * menu). The 'name' property of each item is set to the canonical name of the
+   * corresponding colour scheme (may not match the display name), to allow
+   * selection of items by colour scheme name.
    */
   protected void initColourMenu()
   {
@@ -2183,6 +2150,7 @@ public class GAlignFrame extends JInternalFrame
     });
     clustalColour = new JRadioButtonMenuItem(
             MessageManager.getString("label.clustalx"));
+    clustalColour.setName(JalviewColourScheme.Clustal.toString());
     clustalColour.addActionListener(new ActionListener()
     {
       @Override
@@ -2193,6 +2161,7 @@ public class GAlignFrame extends JInternalFrame
     });
     zappoColour = new JRadioButtonMenuItem(
             MessageManager.getString("label.zappo"));
+    zappoColour.setName(JalviewColourScheme.Zappo.toString());
     zappoColour.addActionListener(new ActionListener()
     {
       @Override
@@ -2203,6 +2172,7 @@ public class GAlignFrame extends JInternalFrame
     });
     taylorColour = new JRadioButtonMenuItem(
             MessageManager.getString("label.taylor"));
+    taylorColour.setName(JalviewColourScheme.Taylor.toString());
     taylorColour.addActionListener(new ActionListener()
     {
       @Override
@@ -2214,6 +2184,8 @@ public class GAlignFrame extends JInternalFrame
     hydrophobicityColour = new JRadioButtonMenuItem(
             MessageManager
             .getString("label.hydrophobicity"));
+    hydrophobicityColour
+            .setName(JalviewColourScheme.Hydrophobic.toString());
     hydrophobicityColour.addActionListener(new ActionListener()
     {
       @Override
@@ -2224,6 +2196,7 @@ public class GAlignFrame extends JInternalFrame
     });
     helixColour = new JRadioButtonMenuItem(
             MessageManager.getString("label.helix_propensity"));
+    helixColour.setName(JalviewColourScheme.Helix.toString());
     helixColour.addActionListener(new ActionListener()
     {
       @Override
@@ -2235,6 +2208,7 @@ public class GAlignFrame extends JInternalFrame
     strandColour = new JRadioButtonMenuItem(
             MessageManager
             .getString("label.strand_propensity"));
+    strandColour.setName(JalviewColourScheme.Strand.toString());
     strandColour.addActionListener(new ActionListener()
     {
       @Override
@@ -2245,6 +2219,7 @@ public class GAlignFrame extends JInternalFrame
     });
     turnColour = new JRadioButtonMenuItem(
             MessageManager.getString("label.turn_propensity"));
+    turnColour.setName(JalviewColourScheme.Turn.toString());
     turnColour.addActionListener(new ActionListener()
     {
       @Override
@@ -2255,6 +2230,7 @@ public class GAlignFrame extends JInternalFrame
     });
     buriedColour = new JRadioButtonMenuItem(
             MessageManager.getString("label.buried_index"));
+    buriedColour.setName(JalviewColourScheme.Buried.toString());
     buriedColour.addActionListener(new ActionListener()
     {
       @Override
@@ -2266,6 +2242,7 @@ public class GAlignFrame extends JInternalFrame
     userDefinedColour = new JRadioButtonMenuItem(
             MessageManager
             .getString("action.user_defined"));
+    userDefinedColour.setName(JalviewColourScheme.UserDefined.toString());
     userDefinedColour.addActionListener(new ActionListener()
     {
       @Override
@@ -2276,6 +2253,7 @@ public class GAlignFrame extends JInternalFrame
     });
     PIDColour = new JRadioButtonMenuItem(
             MessageManager.getString("label.percentage_identity"));
+    PIDColour.setName(JalviewColourScheme.PID.toString());
     PIDColour.addActionListener(new ActionListener()
     {
       @Override
@@ -2286,6 +2264,7 @@ public class GAlignFrame extends JInternalFrame
     });
     BLOSUM62Colour = new JRadioButtonMenuItem(
             MessageManager.getString("label.blosum62_score"));
+    BLOSUM62Colour.setName(JalviewColourScheme.Blosum62.toString());
     BLOSUM62Colour.addActionListener(new ActionListener()
     {
       @Override
@@ -2296,6 +2275,7 @@ public class GAlignFrame extends JInternalFrame
     });
     nucleotideColour = new JRadioButtonMenuItem(
             MessageManager.getString("label.nucleotide"));
+    nucleotideColour.setName(JalviewColourScheme.Nucleotide.toString());
     nucleotideColour.addActionListener(new ActionListener()
     {
       @Override
@@ -2306,6 +2286,7 @@ public class GAlignFrame extends JInternalFrame
     });
     purinePyrimidineColour = new JRadioButtonMenuItem(
             MessageManager.getString("label.purine_pyrimidine"));
+    purinePyrimidineColour.setName(JalviewColourScheme.PurinePyrimidine.toString());
     purinePyrimidineColour.addActionListener(new ActionListener()
     {
       @Override
@@ -2317,6 +2298,7 @@ public class GAlignFrame extends JInternalFrame
 
     tcoffeeColour = new JRadioButtonMenuItem(
             MessageManager.getString("label.tcoffee_scores"));
+    tcoffeeColour.setName(JalviewColourScheme.TCoffee.toString());
     tcoffeeColour.setEnabled(false);
     tcoffeeColour.addActionListener(new ActionListener()
     {
@@ -2328,15 +2310,16 @@ public class GAlignFrame extends JInternalFrame
       }
     });
 
-    RNAInteractionColour = new JRadioButtonMenuItem("RNA Interaction type");
-    RNAInteractionColour.addActionListener(new ActionListener()
-    {
-      @Override
-      public void actionPerformed(ActionEvent e)
-      {
-        RNAInteractionColour_actionPerformed();
-      }
-    });
+    // RNAInteractionColour = new JRadioButtonMenuItem("RNA Interaction type");
+    // RNAInteractionColour.setName("RNA Interaction");
+    // RNAInteractionColour.addActionListener(new ActionListener()
+    // {
+    // @Override
+    // public void actionPerformed(ActionEvent e)
+    // {
+    // RNAInteractionColour_actionPerformed();
+    // }
+    // });
     /*
      * covariationColour = new JRadioButtonMenuItem("Covariation");
      * covariationColour.addActionListener(new ActionListener() { public void
@@ -2356,6 +2339,7 @@ public class GAlignFrame extends JInternalFrame
     });
     noColourmenuItem = new JRadioButtonMenuItem(
             MessageManager.getString("label.none"));
+    noColourmenuItem.setName("None");
     noColourmenuItem.addActionListener(new ActionListener()
     {
       @Override