X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FAPopupMenu.java;h=fe1700b904f9ee46a3200f9a0bf6e6c10f568aec;hb=2b2e4f5da97889b83c6f8b0fbe41f163feca7e82;hp=a56f76dcb2e437a13a9d459cc0bb2a0db2b01ea7;hpb=811fb76382f3601b35dc08b8c0ceabed049c3326;p=jalview.git diff --git a/src/jalview/appletgui/APopupMenu.java b/src/jalview/appletgui/APopupMenu.java index a56f76d..fe1700b 100755 --- a/src/jalview/appletgui/APopupMenu.java +++ b/src/jalview/appletgui/APopupMenu.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6) - * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7) + * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle * * This file is part of Jalview. * @@ -28,6 +28,7 @@ import jalview.datamodel.*; import jalview.schemes.*; import jalview.util.UrlLink; import jalview.io.AppletFormatAdapter; +import jalview.io.SequenceAnnotationReport; public class APopupMenu extends java.awt.PopupMenu implements ActionListener, ItemListener @@ -107,7 +108,11 @@ public class APopupMenu extends java.awt.PopupMenu implements MenuItem sequenceFeature = new MenuItem("Create Sequence Feature"); MenuItem editSequence = new MenuItem("Edit Sequence"); + + MenuItem sequenceDetails = new MenuItem("Sequence Details ..."); + MenuItem selSeqDetails = new MenuItem("Sequence Details ..."); + Sequence seq; MenuItem revealAll = new MenuItem(); @@ -152,12 +157,12 @@ public class APopupMenu extends java.awt.PopupMenu implements if (sg != null && sg.getSize() > 0) { - editGroupName.setLabel(sg.getName()); + editGroupName.setLabel("Name: "+sg.getName()); showText.setState(sg.getDisplayText()); showColourText.setState(sg.getColourText()); showBoxes.setState(sg.getDisplayBoxes()); displayNonconserved.setState(sg.getShowNonconserved()); - if (!ap.av.alignment.getGroups().contains(sg)) + if (!ap.av.getAlignment().getGroups().contains(sg)) { groupMenu.remove(unGroupMenuItem); } @@ -185,7 +190,7 @@ public class APopupMenu extends java.awt.PopupMenu implements final String target = urlLink.getTarget(); // link.substring(0, // link.indexOf("|")); final String label = urlLink.getLabel(); - if (urlLink.isDynamic()) + if (seq!=null && urlLink.isDynamic()) { // collect matching db-refs @@ -300,12 +305,12 @@ public class APopupMenu extends java.awt.PopupMenu implements remove(seqMenu); } - if (!ap.av.hasHiddenRows) + if (!ap.av.hasHiddenRows()) { remove(revealAll); remove(revealSeq); } else { - final int index = ap.av.alignment.findIndex(seq); + final int index = ap.av.getAlignment().findIndex(seq); if (ap.av.adjustForHiddenSeqs(index) - ap.av.adjustForHiddenSeqs(index - 1) > 1) @@ -450,6 +455,14 @@ public class APopupMenu extends java.awt.PopupMenu implements { editName(); } + else if (source == sequenceDetails) + { + showSequenceDetails(); + } + else if (source == selSeqDetails) + { + showSequenceSelectionDetails(); + } else if (source == pdb) { addPDB(); @@ -513,8 +526,8 @@ public class APopupMenu extends java.awt.PopupMenu implements EditCommand editCommand = new EditCommand("Edit Sequences", EditCommand.REPLACE, dialog.getName().replace(' ', ap.av.getGapCharacter()), - sg.getSequencesAsArray(ap.av.hiddenRepSequences), - sg.getStartRes(), sg.getEndRes() + 1, ap.av.alignment); + sg.getSequencesAsArray(ap.av.getHiddenRepSequences()), + sg.getStartRes(), sg.getEndRes() + 1, ap.av.getAlignment()); ap.alignFrame.addHistoryItem(editCommand); @@ -529,44 +542,8 @@ public class APopupMenu extends java.awt.PopupMenu implements Vector regions = new Vector(); if (sg != null) { - int start = sg.getStartRes(); - int end = sg.getEndRes() + 1; - - do - { - if (ap.av.hasHiddenColumns) - { - if (start == 0) - { - start = ap.av.colSel.adjustForHiddenColumns(start); - } - - end = ap.av.colSel.getHiddenBoundaryRight(start); - if (start == end) - { - end = sg.getEndRes() + 1; - } - if (end > sg.getEndRes()) - { - end = sg.getEndRes() + 1; - } - } - - regions.addElement(new int[] - { start, end }); - - if (ap.av.hasHiddenColumns) - { - start = ap.av.colSel.adjustForHiddenColumns(end); - start = ap.av.colSel.getHiddenBoundaryLeft(start) + 1; - } - } while (end < sg.getEndRes()); - - int[][] startEnd = new int[regions.size()][2]; - for (int i = 0; i < regions.size(); i++) - { - startEnd[i] = (int[]) regions.elementAt(i); - } + int[][] startEnd = ap.av.getVisibleRegionBoundaries(sg.getStartRes(), + sg.getEndRes() + 1); String description; int caseChange; @@ -588,7 +565,7 @@ public class APopupMenu extends java.awt.PopupMenu implements } ChangeCaseCommand caseCommand = new ChangeCaseCommand(description, - sg.getSequencesAsArray(ap.av.hiddenRepSequences), startEnd, + sg.getSequencesAsArray(ap.av.getHiddenRepSequences()), startEnd, caseChange); ap.alignFrame.addHistoryItem(caseCommand); @@ -644,6 +621,7 @@ public class APopupMenu extends java.awt.PopupMenu implements } + void outputText(ActionEvent e) { CutAndPasteTransfer cap = new CutAndPasteTransfer(true, ap.alignFrame); @@ -652,6 +630,8 @@ public class APopupMenu extends java.awt.PopupMenu implements frame.add(cap); jalview.bin.JalviewLite.addFrame(frame, "Selection output - " + e.getActionCommand(), 600, 500); + // JBPNote: getSelectionAsNewSequence behaviour has changed - this method now returns a full copy of sequence data + // TODO consider using getSequenceSelection instead here cap.setText(new jalview.io.AppletFormatAdapter().formatSequences( e.getActionCommand(), @@ -659,6 +639,41 @@ public class APopupMenu extends java.awt.PopupMenu implements ap.av.showJVSuffix)); } + protected void showSequenceSelectionDetails() + { + createSequenceDetailsReport(ap.av.getSequenceSelection()); + } + + protected void showSequenceDetails() + { + createSequenceDetailsReport(new SequenceI[]{seq}); + } + public void createSequenceDetailsReport(SequenceI[] sequences) + { + + CutAndPasteTransfer cap = new CutAndPasteTransfer(false, ap.alignFrame); + + StringBuffer contents = new StringBuffer(); + for (SequenceI seq:sequences) + { + contents.append("

Annotation for "+seq.getDisplayId(true)+"

"); + new SequenceAnnotationReport(null) + .createSequenceAnnotationReport( + contents, + seq, + true, + true,false, + (ap.seqPanel.seqCanvas.fr != null) ? ap.seqPanel.seqCanvas.fr.minmax + : null); + contents.append("

"); + } + Frame frame = new Frame(); + frame.add(cap); + jalview.bin.JalviewLite.addFrame(frame, + "Sequence Details for " + (sequences.length==1 ? sequences[0].getDisplayId(true) : "Selection") + , 600, 500); + cap.setText("" + contents.toString() + ""); + } void editName() { @@ -696,7 +711,7 @@ public class APopupMenu extends java.awt.PopupMenu implements cap.setPDBImport(seq); Frame frame = new Frame(); frame.add(cap); - jalview.bin.JalviewLite.addFrame(frame, "Paste PDB file ", 400, 300); + jalview.bin.JalviewLite.addFrame(frame, "Paste PDB file for sequence "+seq.getName(), 400, 300); } } @@ -719,6 +734,8 @@ public class APopupMenu extends java.awt.PopupMenu implements showBoxes.setState(true); showBoxes.addItemListener(this); sequenceName.addActionListener(this); + sequenceDetails.addActionListener(this); + selSeqDetails.addActionListener(this); displayNonconserved.setLabel("Show Nonconserved"); displayNonconserved.setState(false); displayNonconserved.addItemListener(this); @@ -739,6 +756,7 @@ public class APopupMenu extends java.awt.PopupMenu implements this.add(hideSeqs); this.add(revealSeq); this.add(revealAll); + // groupMenu.add(selSeqDetails); groupMenu.add(editGroupName); groupMenu.add(editMenu); groupMenu.add(outputmenu); @@ -805,7 +823,12 @@ public class APopupMenu extends java.awt.PopupMenu implements toLower.addActionListener(this); editMenu.add(toggleCase); seqMenu.add(sequenceName); - seqMenu.add(pdb); + // seqMenu.add(sequenceDetails); + + if (!ap.av.applet.useXtrnalSviewer) + { + seqMenu.add(pdb); + } seqMenu.add(repGroup); menu1.add(unGroupMenuItem); menu1.add(colourMenu); @@ -830,8 +853,7 @@ public class APopupMenu extends java.awt.PopupMenu implements { SequenceGroup sg = getGroup(); sg.cs = new ClustalxColourScheme( - sg.getSequences(ap.av.hiddenRepSequences), - ap.av.alignment.getWidth()); + sg,ap.av.getHiddenRepSequences()); refresh(); } @@ -894,8 +916,8 @@ public class APopupMenu extends java.awt.PopupMenu implements if (abovePIDColour.getState()) { sg.cs.setConsensus(AAFrequency.calculate( - sg.getSequences(ap.av.hiddenRepSequences), 0, - ap.av.alignment.getWidth())); + sg.getSequences(ap.av.getHiddenRepSequences()), 0, + ap.av.getAlignment().getWidth())); int threshold = SliderPanel.setPIDSliderSource(ap, sg.cs, getGroup() .getName()); @@ -924,8 +946,8 @@ public class APopupMenu extends java.awt.PopupMenu implements SequenceGroup sg = getGroup(); sg.cs = new PIDColourScheme(); sg.cs.setConsensus(AAFrequency.calculate( - sg.getSequences(ap.av.hiddenRepSequences), 0, - ap.av.alignment.getWidth())); + sg.getSequences(ap.av.getHiddenRepSequences()), 0, + ap.av.getAlignment().getWidth())); refresh(); } @@ -936,8 +958,8 @@ public class APopupMenu extends java.awt.PopupMenu implements sg.cs = new Blosum62ColourScheme(); sg.cs.setConsensus(AAFrequency.calculate( - sg.getSequences(ap.av.hiddenRepSequences), 0, - ap.av.alignment.getWidth())); + sg.getSequences(ap.av.getHiddenRepSequences()), 0, + ap.av.getAlignment().getWidth())); refresh(); } @@ -959,16 +981,11 @@ public class APopupMenu extends java.awt.PopupMenu implements if (conservationMenuItem.getState()) { - Conservation c = new Conservation("Group", + sg.cs.setConservation(Conservation.calculateConservation("Group", ResidueProperties.propHash, 3, - sg.getSequences(ap.av.hiddenRepSequences), 0, - ap.av.alignment.getWidth()); - - c.calculate(); - c.verdict(false, ap.av.ConsPercGaps); - - sg.cs.setConservation(c); - + sg.getSequences(ap.av.getHiddenRepSequences()), 0, + ap.av.getAlignment().getWidth(), + false, ap.av.getConsPercGaps(),false)); SliderPanel.setConservationSlider(ap, sg.cs, sg.getName()); SliderPanel.showConservationSlider(); } @@ -988,7 +1005,7 @@ public class APopupMenu extends java.awt.PopupMenu implements // this method won't add a new group if it already exists if (sg != null) { - ap.av.alignment.addGroup(sg); + ap.av.getAlignment().addGroup(sg); } return sg; @@ -997,7 +1014,7 @@ public class APopupMenu extends java.awt.PopupMenu implements void unGroupMenuItem_actionPerformed() { SequenceGroup sg = ap.av.getSelectionGroup(); - ap.av.alignment.deleteGroup(sg); + ap.av.getAlignment().deleteGroup(sg); ap.av.setSelectionGroup(null); ap.paintAlignment(true); }