- /*
- * scan registered colour schemes (built-in or user-defined
- * and add them to the menu (in the order they were added)
- */
- Iterable<ColourSchemeI> colourSchemes = ColourSchemes.getInstance()
- .getColourSchemes();
- for (ColourSchemeI scheme : colourSchemes)
- {
- /*
- * button text is i18n'd but the name is the canonical name of
- * the colour scheme (inspected in changeColour_actionPerformed)
- */
- final String name = scheme.getSchemeName();
- String label = MessageManager.getStringOrReturn("label.colourScheme_"
- + name.toLowerCase().replace(" ", "_"), name);
- final JRadioButtonMenuItem radioItem = new JRadioButtonMenuItem(label);
- radioItem.setName(name);
- if (scheme instanceof UserColourScheme)
- {
- /*
- * user-defined colour scheme loaded on startup or during the
- * Jalview session; right-click on this offers the option to
- * remove it as a colour choice
- */
- radioItem.addMouseListener(new MouseAdapter()
- {
- @Override
- public void mousePressed(MouseEvent evt)
- {
- if (evt.isPopupTrigger()) // Mac
- {
- offerRemoval();
- }
- }
-
- @Override
- public void mouseReleased(MouseEvent evt)
- {
- if (evt.isPopupTrigger()) // Windows
- {
- offerRemoval();
- }
- }
-
- void offerRemoval()
- {
- ActionListener al = radioItem.getActionListeners()[0];
- radioItem.removeActionListener(al);
- int option = JvOptionPane.showInternalConfirmDialog(
- 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)
- {
- UserDefinedColours.removeColourFromDefaults(radioItem
- .getName());
- ColourSchemes.getInstance().removeColourScheme(
- radioItem.getName());
- colourMenu.remove(radioItem);
- }
- else
- {
- radioItem.addActionListener(al);
- }
- }
- });
- }
- radioItem.addActionListener(new ActionListener()
- {
- @Override
- public void actionPerformed(ActionEvent evt)
- {
- changeColour_actionPerformed(name);
- }
- });
- colourMenu.add(radioItem);
- colours.add(radioItem);
- }
-
- colourMenu.add(userDefinedColour);
- colours.add(userDefinedColour);