X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FPopupMenu.java;h=660c651d4cab518002b306b5442c59b5a5e92e3e;hb=f9e86edb330898f638ab3713b9534e9b6364a3d4;hp=ffa8b9c60d67a6b5e188e08fcdf281b55f820e03;hpb=313fff566aa8e673b50c4c4e4b216d2704c5ceae;p=jalview.git diff --git a/src/jalview/gui/PopupMenu.java b/src/jalview/gui/PopupMenu.java index ffa8b9c..660c651 100644 --- a/src/jalview/gui/PopupMenu.java +++ b/src/jalview/gui/PopupMenu.java @@ -39,15 +39,14 @@ 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; import jalview.util.GroupUrlLink; import jalview.util.GroupUrlLink.UrlStringTooLongException; import jalview.util.MessageManager; @@ -87,8 +86,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 +202,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 +412,6 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener add(menuItem); } - } SequenceGroup sg = ap.av.getSelectionGroup(); @@ -421,12 +423,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 +563,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 +986,7 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener sequenceSelectionDetails_actionPerformed(); } }); + unGroupMenuItem .setText(MessageManager.getString("action.remove_group")); unGroupMenuItem.addActionListener(new ActionListener() @@ -1165,12 +1177,7 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener hideInsertions_actionPerformed(e); } }); - /* - * annotationMenuItem.setText("By Annotation"); - * annotationMenuItem.addActionListener(new ActionListener() { public void - * actionPerformed(ActionEvent actionEvent) { - * annotationMenuItem_actionPerformed(actionEvent); } }); - */ + groupMenu.add(sequenceSelDetails); add(groupMenu); add(sequenceMenu); @@ -1224,7 +1231,7 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener jMenu1.add(outline); jMenu1.add(displayNonconserved); } - + /** * Constructs the entries for the colour menu */ @@ -1240,6 +1247,7 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener textColour_actionPerformed(); } }); + abovePIDColour.setText(MessageManager .getString("label.above_identity_threshold")); abovePIDColour.addActionListener(new ActionListener() @@ -1247,7 +1255,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 +1277,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 +1316,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 +1523,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 +1536,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 +1554,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 +1579,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 +1587,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,35 +1596,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(); } - - refresh(); - } - - public void annotationMenuItem_actionPerformed(ActionEvent actionEvent) - { - SequenceGroup sg = getGroup(); - if (sg == null) - { - return; - } - - AnnotationColourGradient acg = new AnnotationColourGradient( - sequence.getAnnotation()[0], null, - AnnotationColourGradient.NO_THRESHOLD); - - acg.setPredefinedColours(true); - sg.cs = acg; + modifyConservation.setEnabled(selected); refresh(); } @@ -1822,7 +1868,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,32 +1976,26 @@ 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) { SequenceGroup sg = getGroup(); - if (ResidueColourScheme.USER_DEFINED.equals(colourSchemeName)) - { - /* - * open a panel to load or configure a user-defined colour scheme - */ - new UserDefinedColours(ap, sg); - } - else + /* + * switch to the chosen colour scheme (or null for None) + */ + ColourSchemeI colourScheme = ColourSchemes.getInstance() + .getColourScheme(colourSchemeName, sg, + ap.av.getHiddenRepSequences()); + sg.setColourScheme(colourScheme); + if (colourScheme instanceof Blosum62ColourScheme + || colourScheme instanceof PIDColourScheme) { - /* - * 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) - { - sg.cs.setConsensus(AAFrequency.calculate( - sg.getSequences(ap.av.getHiddenRepSequences()), - sg.getStartRes(), sg.getEndRes() + 1)); - } + sg.cs.setConsensus(AAFrequency.calculate( + sg.getSequences(ap.av.getHiddenRepSequences()), + sg.getStartRes(), sg.getEndRes() + 1)); } refresh();