X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FColourMenuHelper.java;fp=src%2Fjalview%2Fgui%2FColourMenuHelper.java;h=b2b95748106511d3666391a955740cbfe67ccf68;hb=8e9cee1be3194bacb353d94a2166fff1afe8029b;hp=801615ccef8a3728690993e29776e09300e20a38;hpb=1ddaca03529cd2b02502a1dae10c18582164972d;p=jalview.git diff --git a/src/jalview/gui/ColourMenuHelper.java b/src/jalview/gui/ColourMenuHelper.java index 801615c..b2b9574 100644 --- a/src/jalview/gui/ColourMenuHelper.java +++ b/src/jalview/gui/ColourMenuHelper.java @@ -23,6 +23,12 @@ public class ColourMenuHelper { public interface ColourChangeListener { + /** + * Change colour scheme to the selected scheme + * + * @param name + * the registered (unique) name of a colour scheme + */ void changeColour_actionPerformed(String name); } @@ -37,7 +43,7 @@ public class ColourMenuHelper *
  • Clustal
  • *
  • ...other 'built-in' colours
  • *
  • ...any user-defined colours
  • - *
  • User Defined..
  • + *
  • User Defined..(only for AlignFrame menu)
  • * * * @param colourMenu @@ -77,7 +83,7 @@ public class ColourMenuHelper } /* - * scan registered colour schemes (built-in or user-defined + * scan registered colour schemes (built-in or user-defined) * and add them to the menu (in the order they were registered) */ Iterable colourSchemes = ColourSchemes.getInstance() @@ -171,6 +177,7 @@ public class ColourMenuHelper final String label = MessageManager.getString("action.user_defined"); JRadioButtonMenuItem userDefinedColour = new JRadioButtonMenuItem( label); + userDefinedColour.setName(ResidueColourScheme.USER_DEFINED); userDefinedColour.addActionListener(new ActionListener() { @Override @@ -187,20 +194,22 @@ public class ColourMenuHelper } /** - * Marks as selected the colour menu item matching the given name, or the - * first item ('None') if no match is found + * Marks as selected the colour menu item matching the given colour scheme, or + * the first item ('None') if no match is found. If the colour scheme is a + * user defined scheme, but not in the menu (this arises if a new scheme is + * defined and applied but not saved to file), then menu option + * "User Defined.." is selected. * * @param colourMenu - * @param colourName + * @param cs */ - public static void setColourSelected(JMenu colourMenu, String colourName) + public static void setColourSelected(JMenu colourMenu, ColourSchemeI cs) { - if (colourName == null) - { - return; - } + String colourName = cs == null ? ResidueColourScheme.NONE : cs + .getSchemeName(); JRadioButtonMenuItem none = null; + JRadioButtonMenuItem userDefined = null; /* * select the radio button whose name matches the colour name @@ -210,38 +219,39 @@ public class ColourMenuHelper { if (menuItem instanceof JRadioButtonMenuItem) { - String buttonName = ((JRadioButtonMenuItem) menuItem).getName(); - if (colourName.equals(buttonName)) + JRadioButtonMenuItem radioButton = (JRadioButtonMenuItem) menuItem; + String buttonName = radioButton.getName(); + if (buttonName.equals(colourName)) { - ((JRadioButtonMenuItem) menuItem).setSelected(true); + radioButton.setSelected(true); return; } if (ResidueColourScheme.NONE.equals(buttonName)) { - none = (JRadioButtonMenuItem) menuItem; + none = radioButton; + } + if (ResidueColourScheme.USER_DEFINED.equals(buttonName)) + { + userDefined = radioButton; } } } - if (none != null) + + /* + * no match by name; select User Defined.. if current scheme is a + * user defined one, else select None + */ + if (cs instanceof UserColourScheme && userDefined != null) + { + userDefined.setSelected(true); + } + else if (none != null) { none.setSelected(true); } } /** - * Marks as selected the colour menu item matching the given colour scheme, or - * the first item ('None') if no match is found - * - * @param colourMenu - * @param cs - */ - public static void setColourSelected(JMenu colourMenu, ColourSchemeI cs) - { - setColourSelected(colourMenu, cs == null ? ResidueColourScheme.NONE - : cs.getSchemeName()); - } - - /** * Updates the USER_DEFINE_COLOURS preference to remove any de-registered * colour scheme */