X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FPopupMenu.java;h=81c3d4f8eb4e65a687303cd127117a0aac60609a;hb=529dfc85c7c4f85717d9778e49b2e61b5dfddd85;hp=ffa8b9c60d67a6b5e188e08fcdf281b55f820e03;hpb=313fff566aa8e673b50c4c4e4b216d2704c5ceae;p=jalview.git diff --git a/src/jalview/gui/PopupMenu.java b/src/jalview/gui/PopupMenu.java index ffa8b9c..81c3d4f 100644 --- a/src/jalview/gui/PopupMenu.java +++ b/src/jalview/gui/PopupMenu.java @@ -39,12 +39,13 @@ import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; import jalview.gui.ColourMenuHelper.ColourChangeListener; -import jalview.io.FileFormat; import jalview.io.FileFormatI; +import jalview.io.FileFormats; import jalview.io.FormatAdapter; import jalview.io.SequenceAnnotationReport; import jalview.schemes.AnnotationColourGradient; import jalview.schemes.Blosum62ColourScheme; +import jalview.schemes.ColourSchemeI; import jalview.schemes.ColourSchemes; import jalview.schemes.PIDColourScheme; import jalview.schemes.ResidueColourScheme; @@ -87,8 +88,12 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener protected JCheckBoxMenuItem abovePIDColour = new JCheckBoxMenuItem(); + protected JMenuItem modifyPID = new JMenuItem(); + protected JCheckBoxMenuItem conservationMenuItem = new JCheckBoxMenuItem(); + protected JMenuItem modifyConservation = new JMenuItem(); + AlignmentPanel ap; JMenu sequenceMenu = new JMenu(); @@ -199,7 +204,7 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener this.ap = ap; sequence = seq; - for (String ff : FileFormat.getWritableFormats(true)) + for (String ff : FileFormats.getInstance().getWritableFormats(true)) { JMenuItem item = new JMenuItem(ff); @@ -409,7 +414,6 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener add(menuItem); } - } SequenceGroup sg = ap.av.getSelectionGroup(); @@ -421,12 +425,23 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener groupName.setText(MessageManager .getString("label.edit_name_and_description_current_group")); - ColourMenuHelper.setColourSelected(colourMenu, sg.cs); + ColourMenuHelper.setColourSelected(colourMenu, sg.getColourScheme()); - if (sg.cs != null && sg.cs.conservationApplied()) + conservationMenuItem.setEnabled(!sg.isNucleotide()); + + if (sg.cs != null) { - conservationMenuItem.setSelected(true); + if (sg.cs.conservationApplied()) + { + conservationMenuItem.setSelected(true); + } + if (sg.cs.getThreshold() > 0) + { + abovePIDColour.setSelected(true); + } } + modifyConservation.setEnabled(conservationMenuItem.isSelected()); + modifyPID.setEnabled(abovePIDColour.isSelected()); displayNonconserved.setSelected(sg.getShowNonconserved()); showText.setSelected(sg.getDisplayText()); showColourText.setSelected(sg.getColourText()); @@ -550,8 +565,6 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener } - - /** * Add annotation types to 'Show annotations' and/or 'Hide annotations' menus. * "All" is added first, followed by a separator. Then add any annotation @@ -975,6 +988,7 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener sequenceSelectionDetails_actionPerformed(); } }); + unGroupMenuItem .setText(MessageManager.getString("action.remove_group")); unGroupMenuItem.addActionListener(new ActionListener() @@ -1224,7 +1238,7 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener jMenu1.add(outline); jMenu1.add(displayNonconserved); } - + /** * Constructs the entries for the colour menu */ @@ -1240,6 +1254,7 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener textColour_actionPerformed(); } }); + abovePIDColour.setText(MessageManager .getString("label.above_identity_threshold")); abovePIDColour.addActionListener(new ActionListener() @@ -1247,7 +1262,18 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener @Override public void actionPerformed(ActionEvent e) { - abovePIDColour_actionPerformed(); + abovePIDColour_actionPerformed(abovePIDColour.isSelected()); + } + }); + + modifyPID.setText(MessageManager + .getString("label.modify_identity_threshold")); + modifyPID.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + modifyPID_actionPerformed(); } }); @@ -1258,7 +1284,19 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener @Override public void actionPerformed(ActionEvent e) { - conservationMenuItem_actionPerformed(); + conservationMenuItem_actionPerformed(conservationMenuItem + .isSelected()); + } + }); + + modifyConservation.setText(MessageManager + .getString("label.modify_conservation_threshold")); + modifyConservation.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + modifyConservation_actionPerformed(); } }); } @@ -1285,7 +1323,33 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener colourMenu.addSeparator(); colourMenu.add(conservationMenuItem); + colourMenu.add(modifyConservation); colourMenu.add(abovePIDColour); + colourMenu.add(modifyPID); + } + + protected void modifyConservation_actionPerformed() + { + SequenceGroup sg = getGroup(); + if (sg.cs != null) + { + SliderPanel.setConservationSlider(ap, sg.cs, sg.getName()); + SliderPanel.showConservationSlider(); + } + } + + protected void modifyPID_actionPerformed() + { + SequenceGroup sg = getGroup(); + if (sg.cs != null) + { + // int threshold = SliderPanel.setPIDSliderSource(ap, sg.cs, getGroup() + // .getName()); + // sg.cs.setThreshold(threshold, ap.av.isIgnoreGapsConsensus()); + SliderPanel.setPIDSliderSource(ap, sg.cs, getGroup() + .getName()); + SliderPanel.showPIDSlider(); + } } /** @@ -1466,10 +1530,12 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener /** * DOCUMENT ME! * + * @param selected + * * @param e * DOCUMENT ME! */ - protected void abovePIDColour_actionPerformed() + public void abovePIDColour_actionPerformed(boolean selected) { SequenceGroup sg = getGroup(); if (sg.cs == null) @@ -1477,13 +1543,14 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener return; } - if (abovePIDColour.isSelected()) + if (selected) { sg.cs.setConsensus(AAFrequency.calculate( sg.getSequences(ap.av.getHiddenRepSequences()), sg.getStartRes(), sg.getEndRes() + 1)); - int threshold = SliderPanel.setPIDSliderSource(ap, sg.cs, getGroup() + int threshold = SliderPanel.setPIDSliderSource(ap, + sg.getGroupColourScheme(), getGroup() .getName()); sg.cs.setThreshold(threshold, ap.av.isIgnoreGapsConsensus()); @@ -1494,7 +1561,9 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener // remove PIDColouring { sg.cs.setThreshold(0, ap.av.isIgnoreGapsConsensus()); + SliderPanel.hidePIDSlider(); } + modifyPID.setEnabled(selected); refresh(); } @@ -1517,7 +1586,7 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener * @param e * DOCUMENT ME! */ - protected void conservationMenuItem_actionPerformed() + public void conservationMenuItem_actionPerformed(boolean selected) { SequenceGroup sg = getGroup(); if (sg.cs == null) @@ -1525,7 +1594,7 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener return; } - if (conservationMenuItem.isSelected()) + if (selected) { // JBPNote: Conservation name shouldn't be i18n translated Conservation c = new Conservation("Group", sg.getSequences(ap.av @@ -1534,17 +1603,19 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener c.calculate(); c.verdict(false, ap.av.getConsPercGaps()); - sg.cs.setConservation(c); - SliderPanel.setConservationSlider(ap, sg.cs, sg.getName()); + SliderPanel.setConservationSlider(ap, sg.getGroupColourScheme(), + sg.getName()); SliderPanel.showConservationSlider(); } else // remove ConservationColouring { sg.cs.setConservation(null); + SliderPanel.hideConservationSlider(); } + modifyConservation.setEnabled(selected); refresh(); } @@ -1562,7 +1633,7 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener AnnotationColourGradient.NO_THRESHOLD); acg.setPredefinedColours(true); - sg.cs = acg; + sg.setColourScheme(acg); refresh(); } @@ -1822,7 +1893,7 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener // or we simply trust the user wants // wysiwig behaviour - FileFormatI fileFormat = FileFormat.forName(e.getActionCommand()); + FileFormatI fileFormat = FileFormats.getInstance().forName(e.getActionCommand()); cap.setText(new FormatAdapter(ap).formatSequences(fileFormat, ap, true)); } @@ -1930,6 +2001,8 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener /** * Action on user selecting an item from the colour menu (that does not have * its bespoke action handler) + * + * @return */ @Override public void changeColour_actionPerformed(String colourSchemeName) @@ -1947,10 +2020,11 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener /* * switch to the chosen colour scheme (or null for None) */ - sg.cs = ColourSchemes.getInstance().getColourScheme(colourSchemeName, - sg, ap.av.getHiddenRepSequences()); - if (sg.cs instanceof Blosum62ColourScheme - || sg.cs instanceof PIDColourScheme) + ColourSchemeI colourScheme = ColourSchemes.getInstance().getColourScheme( + colourSchemeName, sg, ap.av.getHiddenRepSequences()); + sg.setColourScheme(colourScheme); + if (colourScheme instanceof Blosum62ColourScheme + || colourScheme instanceof PIDColourScheme) { sg.cs.setConsensus(AAFrequency.calculate( sg.getSequences(ap.av.getHiddenRepSequences()),