import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
+import jalview.gui.ColourMenuHelper.ColourChangeListener;
import jalview.gui.ViewSelectionMenu.ViewSetProvider;
import jalview.io.AlignmentProperties;
import jalview.io.AnnotationFile;
import jalview.io.TCoffeeScoreFile;
import jalview.jbgui.GAlignFrame;
import jalview.schemes.ColourSchemeI;
-import jalview.schemes.ColourSchemeProperty;
import jalview.schemes.ColourSchemes;
import jalview.schemes.ResidueColourScheme;
import jalview.schemes.ResidueProperties;
import jalview.schemes.TCoffeeColourScheme;
-import jalview.schemes.UserColourScheme;
import jalview.util.MessageManager;
import jalview.viewmodel.AlignmentViewport;
import jalview.ws.DBRefFetcher;
import java.awt.event.ItemListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
-import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.print.PageFormat;
import java.awt.print.PrinterJob;
import java.util.List;
import java.util.Vector;
-import javax.swing.ButtonGroup;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JEditorPane;
import javax.swing.JInternalFrame;
import javax.swing.JLayeredPane;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
-import javax.swing.JRadioButtonMenuItem;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
* @version $Revision$
*/
public class AlignFrame extends GAlignFrame implements DropTargetListener,
- IProgressIndicator, AlignViewControllerGuiI
+ IProgressIndicator, AlignViewControllerGuiI, ColourChangeListener
{
public static final int DEFAULT_WIDTH = 700;
*/
public void setGUINucleotide()
{
- boolean nucleotide = viewport.getAlignment().isNucleotide();
+ AlignmentI al = getViewport().getAlignment();
+ boolean nucleotide = al.isNucleotide();
showTranslation.setVisible(nucleotide);
showReverse.setVisible(nucleotide);
modifyConservation.setEnabled(!nucleotide);
showGroupConservation.setEnabled(!nucleotide);
- AlignmentI al = getViewport().getAlignment();
-
- /*
- * enable / disable colour schemes by querying whether they
- * are applicable to the alignment data (for example, peptide or
- * nucleotide specific, or require certain annotation present)
- */
- for (Component menuItem : colourMenu.getMenuComponents())
- {
- if (menuItem instanceof JRadioButtonMenuItem)
- {
- String colourName = ((JRadioButtonMenuItem) menuItem).getName();
- ColourSchemeI cs = ColourSchemes.getInstance().getColourScheme(
- colourName, viewport);
- if (cs != null)
- {
- ((JRadioButtonMenuItem) menuItem).setEnabled(cs
- .isApplicableTo(al));
- }
- }
- }
-
showComplementMenuItem.setText(nucleotide ? MessageManager
.getString("label.protein") : MessageManager
.getString("label.nucleotide"));
-
- String selectedColourScheme = Cache.getDefault(
- nucleotide ? Preferences.DEFAULT_COLOUR_NUC
- : Preferences.DEFAULT_COLOUR_PROT,
- ResidueColourScheme.NONE);
- setColourSelected(selectedColourScheme);
}
/**
showSequenceLogo.setSelected(av.isShowSequenceLogo());
normaliseSequenceLogo.setSelected(av.isNormaliseSequenceLogo());
- setColourSelected(ColourSchemeProperty.getColourName(av
- .getGlobalColourScheme()));
+ ColourMenuHelper.setColourSelected(colourMenu,
+ av.getGlobalColourScheme());
showSeqFeatures.setSelected(av.isShowSequenceFeatures());
hiddenMarkers.setState(av.getShowHiddenMarkers());
new TextColourChooser().chooseColour(alignPanel, null);
}
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- @Override
- protected void noColourmenuItem_actionPerformed()
- {
- changeColour(null);
- }
-
/*
* public void covariationColour_actionPerformed() {
* changeColour(new
* @param name
* the name (not the menu item label!) of the colour scheme
*/
+ @Override
public void changeColour_actionPerformed(String name)
{
+ /*
+ * 'User Defined' opens a panel to configure or load a
+ * user-defined colour scheme
+ */
+ if (ResidueColourScheme.USER_DEFINED.equals(name))
+ {
+ new UserDefinedColours(alignPanel, null);
+ return;
+ }
+
+ /*
+ * otherwise set the chosen colour scheme (or null for 'None')
+ */
ColourSchemeI cs = ColourSchemes.getInstance().getColourScheme(name,
- viewport);
+ viewport.getAlignment(), viewport.getHiddenRepSequences());
changeColour(cs);
}
// TODO: pull up to controller method
if (cs != null)
{
- setColourSelected(cs.getSchemeName());
+ ColourMenuHelper.setColourSelected(colourMenu, cs.getSchemeName());
// Make sure viewport is up to date w.r.t. any sliders
if (viewport.getAbovePIDThreshold())
{
}
/**
- * Action on the user selecting the option "User Defined" to create or load a
- * new colour scheme
- *
- * @param e
- */
- @Override
- public void userDefinedColour_actionPerformed(ActionEvent e)
- {
- new UserDefinedColours(alignPanel, null);
- }
-
- /**
* DOCUMENT ME!
*
* @param e
{
if (tcf.annotateAlignment(viewport.getAlignment(), true))
{
- // tcoffeeColour.setEnabled(true);
- // tcoffeeColour.setSelected(true);
- for (Component menuItem : colourMenu.getMenuComponents())
- {
- if (menuItem instanceof JRadioButtonMenuItem
- && ((JRadioButtonMenuItem) menuItem).getText()
- .equals("T-Coffee Scores"))
- {
- ((JRadioButtonMenuItem) menuItem).setSelected(true);
- }
- }
buildColourMenu();
changeColour(new TCoffeeColourScheme(viewport.getAlignment()));
isAnnotation = true;
{
colourMenu.removeAll();
- /*
- * ButtonGroup groups those items whose
- * selection is mutually exclusive
- */
- ButtonGroup colours = new ButtonGroup();
-
colourMenu.add(applyToAllGroups);
colourMenu.add(textColour);
colourMenu.addSeparator();
- colourMenu.add(noColourmenuItem);
- colours.add(noColourmenuItem);
-
- /*
- * 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);
+ ColourMenuHelper
+ .addMenuItems(colourMenu, this, viewport.getAlignment());
colourMenu.addSeparator();
colourMenu.add(conservationMenuItem);
colourMenu.add(modifyPID);
colourMenu.add(annotationColour);
- setColourSelected(Cache.getDefault(Preferences.DEFAULT_COLOUR,
- ResidueColourScheme.NONE));
+ /*
+ * select the default colour for the alignment (this may be
+ * overridden later)
+ */
+ boolean nucleotide = viewport.getAlignment().isNucleotide();
+ String defaultColourScheme = Cache.getDefault(
+ nucleotide ? Preferences.DEFAULT_COLOUR_NUC
+ : Preferences.DEFAULT_COLOUR_PROT,
+ ResidueColourScheme.NONE);
- setGUINucleotide();
+ ColourMenuHelper.setColourSelected(colourMenu, defaultColourScheme);
}
}