X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=29a160ccca04744003394c30a2613ed57b1b54e9;hb=92bd4313e2f23a65df1eb965e836d178c1eacdd1;hp=512734256139983624d2277ef654d61f378cf557;hpb=8eb830995e6e2bf47d5e0a5e355faaf7a72d3711;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index 5127342..29a160c 100644 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -59,6 +59,7 @@ import jalview.datamodel.SeqCigar; 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; @@ -78,12 +79,10 @@ import jalview.io.NewickFile; 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; @@ -114,7 +113,6 @@ import java.awt.event.ItemEvent; 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; @@ -129,14 +127,12 @@ import java.util.Hashtable; 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; @@ -147,7 +143,7 @@ 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; @@ -839,7 +835,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, */ public void setGUINucleotide() { - boolean nucleotide = viewport.getAlignment().isNucleotide(); + AlignmentI al = getViewport().getAlignment(); + boolean nucleotide = al.isNucleotide(); showTranslation.setVisible(nucleotide); showReverse.setVisible(nucleotide); @@ -848,37 +845,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, 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); } /** @@ -930,8 +899,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, 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()); @@ -3315,18 +3284,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, new TextColourChooser().chooseColour(alignPanel, null); } - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - @Override - protected void noColourmenuItem_actionPerformed() - { - changeColour(null); - } - /* * public void covariationColour_actionPerformed() { * changeColour(new @@ -3363,10 +3320,24 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @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); } @@ -3381,7 +3352,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // 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()) { @@ -3477,18 +3448,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } /** - * 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 @@ -4787,17 +4746,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { 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; @@ -5737,101 +5685,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { 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 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); @@ -5840,10 +5699,17 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, 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); } }