X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FPopupMenu.java;h=09e32634388715ad008fbb94e3bfa535a26e5ab8;hb=633ae27e1786a9e4da2238e75807de3a276dee43;hp=50da2728f9df69836a730b695f6276b12b80cedf;hpb=8e1be43e250107a4d86898bd554cf03098fa5957;p=jalview.git diff --git a/src/jalview/gui/PopupMenu.java b/src/jalview/gui/PopupMenu.java index 50da272..09e3263 100644 --- a/src/jalview/gui/PopupMenu.java +++ b/src/jalview/gui/PopupMenu.java @@ -31,24 +31,22 @@ import jalview.commands.EditCommand.Action; import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; import jalview.datamodel.Annotation; -import jalview.datamodel.ColumnSelection; import jalview.datamodel.DBRefEntry; +import jalview.datamodel.HiddenColumns; import jalview.datamodel.PDBEntry; import jalview.datamodel.Sequence; 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; @@ -57,6 +55,7 @@ import jalview.util.UrlLink; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; @@ -88,8 +87,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(); @@ -200,7 +203,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); @@ -410,7 +413,6 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener add(menuItem); } - } SequenceGroup sg = ap.av.getSelectionGroup(); @@ -424,10 +426,21 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener 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()); @@ -551,8 +564,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 @@ -976,6 +987,7 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener sequenceSelectionDetails_actionPerformed(); } }); + unGroupMenuItem .setText(MessageManager.getString("action.remove_group")); unGroupMenuItem.addActionListener(new ActionListener() @@ -1166,12 +1178,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); @@ -1225,7 +1232,7 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener jMenu1.add(outline); jMenu1.add(displayNonconserved); } - + /** * Constructs the entries for the colour menu */ @@ -1241,6 +1248,7 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener textColour_actionPerformed(); } }); + abovePIDColour.setText(MessageManager .getString("label.above_identity_threshold")); abovePIDColour.addActionListener(new ActionListener() @@ -1248,7 +1256,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(); } }); @@ -1259,7 +1278,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(); } }); } @@ -1286,7 +1317,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(); + } } /** @@ -1389,13 +1446,21 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener { if (sequence != null) { - ColumnSelection cs = ap.av.getColumnSelection(); - if (cs == null) + /* ColumnSelection cs = ap.av.getColumnSelection(); + if (cs == null) + { + cs = new ColumnSelection(); + } + cs.hideInsertionsFor(sequence); + ap.av.setColumnSelection(cs);*/ + + HiddenColumns hidden = ap.av.getAlignment().getHiddenColumns(); + if (hidden == null) { - cs = new ColumnSelection(); + hidden = new HiddenColumns(); } - cs.hideInsertionsFor(sequence); - ap.av.setColumnSelection(cs); + hidden.hideInsertionsFor(sequence); + ap.av.getAlignment().setHiddenColumns(hidden); } refresh(); } @@ -1467,10 +1532,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) @@ -1478,7 +1545,7 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener return; } - if (abovePIDColour.isSelected()) + if (selected) { sg.cs.setConsensus(AAFrequency.calculate( sg.getSequences(ap.av.getHiddenRepSequences()), @@ -1496,7 +1563,9 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener // remove PIDColouring { sg.cs.setThreshold(0, ap.av.isIgnoreGapsConsensus()); + SliderPanel.hidePIDSlider(); } + modifyPID.setEnabled(selected); refresh(); } @@ -1519,7 +1588,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) @@ -1527,7 +1596,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 @@ -1546,25 +1615,9 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener // 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.setColourScheme(acg); + modifyConservation.setEnabled(selected); refresh(); } @@ -1824,7 +1877,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)); } @@ -1836,30 +1889,28 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener return; } - int rsize = 0, gSize = sg.getSize(); - SequenceI[] rseqs, seqs = new SequenceI[gSize]; - SequenceFeature[] tfeatures, features = new SequenceFeature[gSize]; + List seqs = new ArrayList(); + List features = new ArrayList(); + /* + * assemble dataset sequences, and template new sequence features, + * for the amend features dialog + */ + int gSize = sg.getSize(); for (int i = 0; i < gSize; i++) { int start = sg.getSequenceAt(i).findPosition(sg.getStartRes()); int end = sg.findEndRes(sg.getSequenceAt(i)); if (start <= end) { - seqs[rsize] = sg.getSequenceAt(i).getDatasetSequence(); - features[rsize] = new SequenceFeature(null, null, null, start, end, - "Jalview"); - rsize++; + seqs.add(sg.getSequenceAt(i).getDatasetSequence()); + features.add(new SequenceFeature(null, null, null, start, end, + "Jalview")); } } - rseqs = new SequenceI[rsize]; - tfeatures = new SequenceFeature[rsize]; - System.arraycopy(seqs, 0, rseqs, 0, rsize); - System.arraycopy(features, 0, tfeatures, 0, rsize); - features = tfeatures; - seqs = rseqs; + if (ap.getSeqPanel().seqCanvas.getFeatureRenderer().amendFeatures(seqs, - features, true, ap)) + features, true, ap, null)) { ap.alignFrame.setShowSeqFeatures(true); ap.highlightSearchResults(null); @@ -1932,33 +1983,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) - */ - 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()), - sg.getStartRes(), sg.getEndRes() + 1)); - } + sg.cs.setConsensus(AAFrequency.calculate( + sg.getSequences(ap.av.getHiddenRepSequences()), + sg.getStartRes(), sg.getEndRes() + 1)); } refresh();