import jalview.io.NewickFile;
import jalview.io.TCoffeeScoreFile;
import jalview.jbgui.GAlignFrame;
-import jalview.schemes.Blosum62ColourScheme;
-import jalview.schemes.BuriedColourScheme;
-import jalview.schemes.ClustalxColourScheme;
import jalview.schemes.ColourSchemeI;
import jalview.schemes.ColourSchemeProperty;
-import jalview.schemes.HelixColourScheme;
-import jalview.schemes.HydrophobicColourScheme;
-import jalview.schemes.NucleotideColourScheme;
-import jalview.schemes.PIDColourScheme;
-import jalview.schemes.PurinePyrimidineColourScheme;
-import jalview.schemes.RNAHelicesColourChooser;
+import jalview.schemes.ColourSchemes;
+import jalview.schemes.ResidueColourScheme;
import jalview.schemes.ResidueProperties;
-import jalview.schemes.StrandColourScheme;
import jalview.schemes.TCoffeeColourScheme;
-import jalview.schemes.TaylorColourScheme;
-import jalview.schemes.TurnColourScheme;
import jalview.schemes.UserColourScheme;
-import jalview.schemes.ZappoColourScheme;
import jalview.util.MessageManager;
import jalview.viewmodel.AlignmentViewport;
import jalview.ws.DBRefFetcher;
import java.util.List;
import java.util.Vector;
+import javax.swing.ButtonGroup;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JEditorPane;
import javax.swing.JInternalFrame;
alignPanel);
if (viewport.getAlignmentConservationAnnotation() == null)
{
- BLOSUM62Colour.setEnabled(false);
+ // BLOSUM62Colour.setEnabled(false);
conservationMenuItem.setEnabled(false);
modifyConservation.setEnabled(false);
// PIDColour.setEnabled(false);
sortPairwiseMenuItem_actionPerformed(null);
}
- if (Desktop.desktop != null)
- {
- this.setDropTarget(new java.awt.dnd.DropTarget(this, this));
- addServiceListeners();
- setGUINucleotide(viewport.getAlignment().isNucleotide());
- }
-
this.alignPanel.av
.setShowAutocalculatedAbove(isShowAutoCalculatedAbove());
setMenusFromViewport(viewport);
buildSortByAnnotationScoresMenu();
buildTreeMenu();
+ buildColourMenu();
+
+ if (Desktop.desktop != null)
+ {
+ this.setDropTarget(new java.awt.dnd.DropTarget(this, this));
+ addServiceListeners();
+ setGUINucleotide();
+ }
if (viewport.getWrapAlignment())
{
/**
* Configure menu items that vary according to whether the alignment is
* nucleotide or protein
- *
- * @param nucleotide
*/
- public void setGUINucleotide(boolean nucleotide)
+ public void setGUINucleotide()
{
+ boolean nucleotide = viewport.getAlignment().isNucleotide();
+
showTranslation.setVisible(nucleotide);
showReverse.setVisible(nucleotide);
showReverseComplement.setVisible(nucleotide);
conservationMenuItem.setEnabled(!nucleotide);
modifyConservation.setEnabled(!nucleotide);
showGroupConservation.setEnabled(!nucleotide);
- rnahelicesColour.setEnabled(nucleotide);
- purinePyrimidineColour.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"));
- setColourSelected(jalview.bin.Cache.getDefault(
+
+ String selectedColourScheme = Cache.getDefault(
nucleotide ? Preferences.DEFAULT_COLOUR_NUC
- : Preferences.DEFAULT_COLOUR_PROT, "None"));
+ : Preferences.DEFAULT_COLOUR_PROT,
+ ResidueColourScheme.NONE);
+ setColourSelected(selectedColourScheme);
}
/**
autoCalculate.setSelected(av.autoCalculateConsensus);
sortByTree.setSelected(av.sortByTree);
listenToViewSelections.setSelected(av.followSelection);
- rnahelicesColour.setEnabled(av.getAlignment().hasRNAStructure());
- rnahelicesColour
- .setSelected(av.getGlobalColourScheme() instanceof jalview.schemes.RNAHelicesColour);
showProducts.setEnabled(canShowProducts());
setGroovyEnabled(Desktop.getGroovyConsole() != null);
@Override
public void saveAs_actionPerformed(ActionEvent e)
{
+ String format = currentFileFormat == null ? null : currentFileFormat
+ .toString();
JalviewFileChooser chooser = JalviewFileChooser.forWrite(
- Cache.getProperty("LAST_DIRECTORY"),
- // AppletFormatAdapter.WRITABLE_EXTENSIONS,
- // AppletFormatAdapter.WRITABLE_FNAMES,
- currentFileFormat.toString(), false);
+ Cache.getProperty("LAST_DIRECTORY"), format);
chooser.setFileView(new JalviewFileView());
chooser.setDialogTitle(MessageManager
}
@Override
- public void textColour_actionPerformed(ActionEvent e)
+ public void textColour_actionPerformed()
{
new TextColourChooser().chooseColour(alignPanel, null);
}
* DOCUMENT ME!
*/
@Override
- protected void noColourmenuItem_actionPerformed(ActionEvent e)
+ protected void noColourmenuItem_actionPerformed()
{
changeColour(null);
}
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- @Override
- public void clustalColour_actionPerformed(ActionEvent e)
- {
- changeColour(new ClustalxColourScheme(viewport.getAlignment(),
- viewport.getHiddenRepSequences()));
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- @Override
- public void zappoColour_actionPerformed(ActionEvent e)
- {
- changeColour(new ZappoColourScheme());
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- @Override
- public void taylorColour_actionPerformed(ActionEvent e)
- {
- changeColour(new TaylorColourScheme());
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- @Override
- public void hydrophobicityColour_actionPerformed(ActionEvent e)
- {
- changeColour(new HydrophobicColourScheme());
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- @Override
- public void helixColour_actionPerformed(ActionEvent e)
- {
- changeColour(new HelixColourScheme());
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- @Override
- public void strandColour_actionPerformed(ActionEvent e)
- {
- changeColour(new StrandColourScheme());
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- @Override
- public void turnColour_actionPerformed(ActionEvent e)
- {
- changeColour(new TurnColourScheme());
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- @Override
- public void buriedColour_actionPerformed(ActionEvent e)
- {
- changeColour(new BuriedColourScheme());
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- @Override
- public void nucleotideColour_actionPerformed(ActionEvent e)
- {
- changeColour(new NucleotideColourScheme());
- }
-
- @Override
- public void purinePyrimidineColour_actionPerformed(ActionEvent e)
- {
- changeColour(new PurinePyrimidineColourScheme());
- }
-
/*
- * public void covariationColour_actionPerformed(ActionEvent e) {
+ * public void covariationColour_actionPerformed() {
* changeColour(new
* CovariationColourScheme(viewport.getAlignment().getAlignmentAnnotation
* ()[0])); }
*/
@Override
- public void annotationColour_actionPerformed(ActionEvent e)
+ public void annotationColour_actionPerformed()
{
new AnnotationColourChooser(viewport, alignPanel);
}
new AnnotationColumnChooser(viewport, alignPanel);
}
+ /**
+ * Action on the user checking or unchecking the option to apply the selected
+ * colour scheme to all groups. If unchecked, groups may have their own
+ * independent colour schemes.
+ *
+ */
@Override
- public void rnahelicesColour_actionPerformed(ActionEvent e)
+ protected void applyToAllGroups_actionPerformed()
{
- new RNAHelicesColourChooser(viewport, alignPanel);
+ viewport.setColourAppliesToAllGroups(applyToAllGroups.isSelected());
}
/**
- * DOCUMENT ME!
+ * Action on user selecting a colour from the colour menu
*
- * @param e
- * DOCUMENT ME!
+ * @param name
+ * the name (not the menu item label!) of the colour scheme
*/
- @Override
- protected void applyToAllGroups_actionPerformed(ActionEvent e)
+ public void changeColour_actionPerformed(String name)
{
- viewport.setColourAppliesToAllGroups(applyToAllGroups.isSelected());
+ ColourSchemeI cs = ColourSchemes.getInstance().getColourScheme(name,
+ viewport);
+ changeColour(cs);
}
/**
- * DOCUMENT ME!
+ * Actions on setting or changing the alignment colour scheme
*
* @param cs
- * DOCUMENT ME!
*/
@Override
public void changeColour(ColourSchemeI cs)
{
// TODO: pull up to controller method
-
if (cs != null)
{
+ setColourSelected(cs.getSchemeName());
// Make sure viewport is up to date w.r.t. any sliders
if (viewport.getAbovePIDThreshold())
{
cs.setConservationInc(SliderPanel.setConservationSlider(alignPanel,
cs, "Background"));
}
- if (cs instanceof TCoffeeColourScheme)
- {
- tcoffeeColour.setEnabled(true);
- tcoffeeColour.setSelected(true);
- }
}
viewport.setGlobalColourScheme(cs);
* DOCUMENT ME!
*/
@Override
- protected void modifyPID_actionPerformed(ActionEvent e)
+ protected void modifyPID_actionPerformed()
{
if (viewport.getAbovePIDThreshold()
&& viewport.getGlobalColourScheme() != null)
* DOCUMENT ME!
*/
@Override
- protected void modifyConservation_actionPerformed(ActionEvent e)
+ protected void modifyConservation_actionPerformed()
{
if (viewport.getConservationSelected()
&& viewport.getGlobalColourScheme() != null)
* DOCUMENT ME!
*/
@Override
- protected void conservationMenuItem_actionPerformed(ActionEvent e)
+ protected void conservationMenuItem_actionPerformed()
{
viewport.setConservationSelected(conservationMenuItem.isSelected());
changeColour(viewport.getGlobalColourScheme());
- modifyConservation_actionPerformed(null);
+ modifyConservation_actionPerformed();
}
/**
* DOCUMENT ME!
*/
@Override
- public void abovePIDThreshold_actionPerformed(ActionEvent e)
+ public void abovePIDThreshold_actionPerformed()
{
viewport.setAbovePIDThreshold(abovePIDThreshold.isSelected());
changeColour(viewport.getGlobalColourScheme());
- modifyPID_actionPerformed(null);
+ modifyPID_actionPerformed();
}
/**
- * DOCUMENT ME!
+ * Action on the user selecting the option "User Defined" to create or load a
+ * new colour scheme
*
* @param e
- * DOCUMENT ME!
*/
@Override
public void userDefinedColour_actionPerformed(ActionEvent e)
{
- if (e.getActionCommand().equals(
- MessageManager.getString("action.user_defined")))
- {
- new UserDefinedColours(alignPanel, null);
- }
- else
- {
- UserColourScheme udc = (UserColourScheme) UserDefinedColours
- .getUserColourSchemes().get(e.getActionCommand());
-
- changeColour(udc);
- }
- }
-
- public void updateUserColourMenu()
- {
-
- Component[] menuItems = colourMenu.getMenuComponents();
- int iSize = menuItems.length;
- for (int i = 0; i < iSize; i++)
- {
- if (menuItems[i].getName() != null
- && menuItems[i].getName().equals("USER_DEFINED"))
- {
- colourMenu.remove(menuItems[i]);
- iSize--;
- }
- }
- if (jalview.gui.UserDefinedColours.getUserColourSchemes() != null)
- {
- java.util.Enumeration userColours = jalview.gui.UserDefinedColours
- .getUserColourSchemes().keys();
-
- while (userColours.hasMoreElements())
- {
- final JRadioButtonMenuItem radioItem = new JRadioButtonMenuItem(
- userColours.nextElement().toString());
- radioItem.setName("USER_DEFINED");
- radioItem.addMouseListener(new MouseAdapter()
- {
- @Override
- public void mousePressed(MouseEvent evt)
- {
- if (evt.isPopupTrigger()) // Mac
- {
- 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());
- colourMenu.remove(radioItem);
- }
- else
- {
- radioItem.addActionListener(new ActionListener()
- {
- @Override
- public void actionPerformed(ActionEvent evt)
- {
- userDefinedColour_actionPerformed(evt);
- }
- });
- }
- }
- });
- radioItem.addActionListener(new ActionListener()
- {
- @Override
- public void actionPerformed(ActionEvent evt)
- {
- userDefinedColour_actionPerformed(evt);
- }
- });
-
- colourMenu.insert(radioItem, 15);
- colours.add(radioItem);
- }
- }
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- @Override
- public void PIDColour_actionPerformed(ActionEvent e)
- {
- changeColour(new PIDColourScheme());
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
- */
- @Override
- public void BLOSUM62Colour_actionPerformed(ActionEvent e)
- {
- changeColour(new Blosum62ColourScheme());
+ new UserDefinedColours(alignPanel, null);
}
/**
}
}
- @Override
- protected void tcoffeeColorScheme_actionPerformed(ActionEvent e)
- {
- changeColour(new TCoffeeColourScheme(alignPanel.getAlignment()));
- }
-
public TreePanel ShowNewickTree(NewickFile nf, String title)
{
return ShowNewickTree(nf, title, 600, 500, 4, 5);
{
if (tcf.annotateAlignment(viewport.getAlignment(), true))
{
- tcoffeeColour.setEnabled(true);
- tcoffeeColour.setSelected(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;
statusBar
}
AlignmentI cdna = new Alignment(cdnaSeqs.toArray(new SequenceI[cdnaSeqs
.size()]));
- AlignFrame alignFrame = new AlignFrame(cdna, AlignFrame.DEFAULT_WIDTH,
+ GAlignFrame alignFrame = new AlignFrame(cdna, AlignFrame.DEFAULT_WIDTH,
AlignFrame.DEFAULT_HEIGHT);
cdna.alignAs(alignment);
String newtitle = "cDNA " + MessageManager.getString("label.for") + " "
true,
(actionEvent.getModifiers() & (ActionEvent.META_MASK | ActionEvent.CTRL_MASK)) != 0);
}
+
+ /**
+ * Rebuilds the Colour menu, including any user-defined colours which have
+ * been loaded either on startup or during the session
+ */
+ public void buildColourMenu()
+ {
+ 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.getString("label.colourScheme_"
+ + name.toLowerCase().replace(" ", "_"));
+ 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.setText(((UserColourScheme) scheme).getName());
+ 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);
+
+ colourMenu.addSeparator();
+ colourMenu.add(conservationMenuItem);
+ colourMenu.add(modifyConservation);
+ colourMenu.add(abovePIDThreshold);
+ colourMenu.add(modifyPID);
+ colourMenu.add(annotationColour);
+
+ setColourSelected(Cache.getDefault(Preferences.DEFAULT_COLOUR,
+ ResidueColourScheme.NONE));
+
+ setGUINucleotide();
+ }
}
class PrintThread extends Thread