X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fappletgui%2FAPopupMenu.java;h=0226349aef00c59cbbf260bd5a96cfec91c765c6;hb=a3a196ed2104760ffeeebbca65fc03c361d29b17;hp=a932d66fc4ab8208f50bd23665e12cfd94ff18b8;hpb=6d6d6bc08bca95676a8175c634c03c163fb88684;p=jalview.git diff --git a/src/jalview/appletgui/APopupMenu.java b/src/jalview/appletgui/APopupMenu.java index a932d66..0226349 100755 --- a/src/jalview/appletgui/APopupMenu.java +++ b/src/jalview/appletgui/APopupMenu.java @@ -1,490 +1,999 @@ -package jalview.appletgui; - -import jalview.datamodel.*; -import jalview.analysis.*; -import jalview.schemes.*; -import java.awt.*; -import java.awt.event.*; - -public class APopupMenu extends java.awt.PopupMenu -{ - Menu groupMenu = new Menu(); - protected MenuItem clustalColour = new MenuItem(); - protected MenuItem zappoColour = new MenuItem(); - protected MenuItem taylorColour = new MenuItem(); - protected MenuItem hydrophobicityColour = new MenuItem(); - protected MenuItem helixColour = new MenuItem(); - protected MenuItem strandColour = new MenuItem(); - protected MenuItem turnColour = new MenuItem(); - protected MenuItem buriedColour = new MenuItem(); - protected CheckboxMenuItem abovePIDColour = new CheckboxMenuItem(); - protected MenuItem userDefinedColour = new MenuItem(); - protected MenuItem PIDColour = new MenuItem(); - protected MenuItem BLOSUM62Colour = new MenuItem(); - MenuItem noColourmenuItem = new MenuItem(); - protected CheckboxMenuItem conservationMenuItem = new CheckboxMenuItem(); - - - AlignmentPanel ap; - Menu sequenceMenu = new Menu(); - MenuItem sequenceName = new MenuItem(); - Sequence sequence; - MenuItem unGroupMenuItem = new MenuItem(); - MenuItem nucleotideMenuItem = new MenuItem(); - Menu colourMenu = new Menu(); - CheckboxMenuItem showBoxes = new CheckboxMenuItem(); - CheckboxMenuItem showText = new CheckboxMenuItem(); - CheckboxMenuItem showColourText = new CheckboxMenuItem(); - - public APopupMenu(AlignmentPanel ap, Sequence seq) - { - /////////////////////////////////////////////////////////// - // If this is activated from the sequence panel, the user may want to - // edit or annotate a particular residue. Therefore display the residue menu - // - // If from the IDPanel, we must display the sequence menu - ////////////////////////////////////////////////////////// - - this.ap = ap; - sequence = seq; - - try - { jbInit(); } - catch(Exception e) - { e.printStackTrace(); } - - - SequenceGroup sg = ap.av.getSelectionGroup(); - if(sg!=null) - { - showText.setState(sg.getDisplayText()); - showColourText.setState(sg.getColourText()); - showBoxes.setState(sg.getDisplayBoxes()); - } - - if( !ap.av.alignment.getGroups().contains(sg)) - groupMenu.remove(unGroupMenuItem); - - if(seq==null) - remove(sequenceMenu); - - - } - private void jbInit() throws Exception - { - groupMenu.setLabel("Group"); - groupMenu.setLabel("Define"); - - sequenceMenu.setLabel("Sequence"); - sequenceName.setLabel("Edit name"); - unGroupMenuItem.setLabel("Remove Group"); - unGroupMenuItem.addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - unGroupMenuItem_actionPerformed(e); - } - }); - - - nucleotideMenuItem.setLabel("Nucleotide"); - nucleotideMenuItem.addActionListener(new ActionListener() - { - public void actionPerformed(ActionEvent e) - { - nucleotideMenuItem_actionPerformed(e); - } - }); - conservationMenuItem.addItemListener(new ItemListener() - { - public void itemStateChanged(ItemEvent itemEvent) - { - conservationMenuItem_itemStateChanged(itemEvent); - } - }); - abovePIDColour.addItemListener(new ItemListener() - { - public void itemStateChanged(ItemEvent itemEvent) - { - abovePIDColour_itemStateChanged(itemEvent); - } - }); - colourMenu.setLabel("Group Colour"); - showBoxes.setLabel("Boxes"); - showBoxes.setState(true); - showBoxes.addItemListener(new ItemListener() - { - public void itemStateChanged(ItemEvent itemEvent) - { - showBoxes_itemStateChanged(itemEvent); - } - }); - - showText.setLabel("Text"); - showText.addItemListener(new ItemListener() - { - public void itemStateChanged(ItemEvent itemEvent) - { - showText_itemStateChanged(itemEvent); - } - }); - showColourText.setLabel("Colour Text"); - showColourText.addItemListener(new ItemListener() - { - public void itemStateChanged(ItemEvent itemEvent) - { - showColourText_itemStateChanged(itemEvent); - } - }); - - add(groupMenu); - this.add(sequenceMenu); - groupMenu.add(unGroupMenuItem); - groupMenu.add(colourMenu); - groupMenu.addSeparator(); - groupMenu.add(showBoxes); - groupMenu.add(showText); - groupMenu.add(showColourText); - sequenceMenu.add(sequenceName); - colourMenu.add(noColourmenuItem); - colourMenu.add(clustalColour); - colourMenu.add(BLOSUM62Colour); - colourMenu.add(PIDColour); - colourMenu.add(zappoColour); - colourMenu.add(taylorColour); - colourMenu.add(hydrophobicityColour); - colourMenu.add(helixColour); - colourMenu.add(strandColour); - colourMenu.add(turnColour); - colourMenu.add(buriedColour); - colourMenu.add(nucleotideMenuItem); - colourMenu.add(userDefinedColour); - colourMenu.addSeparator(); - colourMenu.add(abovePIDColour); - colourMenu.add(conservationMenuItem); - - noColourmenuItem.setLabel("None"); - noColourmenuItem.addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - noColourmenuItem_actionPerformed(e); - } - }); - - clustalColour.setLabel("Clustalx colours"); - clustalColour.addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - clustalColour_actionPerformed(e); - } - }); - zappoColour.setLabel("Zappo"); - zappoColour.addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - zappoColour_actionPerformed(e); - } - }); - taylorColour.setLabel("Taylor"); - taylorColour.addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - taylorColour_actionPerformed(e); - } - }); - hydrophobicityColour.setLabel("Hydrophobicity"); - hydrophobicityColour.addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - hydrophobicityColour_actionPerformed(e); - } - }); - helixColour.setLabel("Helix propensity"); - helixColour.addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - helixColour_actionPerformed(e); - } - }); - strandColour.setLabel("Strand propensity"); - strandColour.addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - strandColour_actionPerformed(e); - } - }); - turnColour.setLabel("Turn propensity"); - turnColour.addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - turnColour_actionPerformed(e); - } - }); - buriedColour.setLabel("Buried Index"); - buriedColour.addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - buriedColour_actionPerformed(e); - } - }); - abovePIDColour.setLabel("Above % Identity"); - - userDefinedColour.setLabel("User Defined"); - userDefinedColour.addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - userDefinedColour_actionPerformed(e); - } - }); - PIDColour.setLabel("Percentage Identity"); - PIDColour.addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - PIDColour_actionPerformed(e); - } - }); - BLOSUM62Colour.setLabel("BLOSUM62"); - BLOSUM62Colour.addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - BLOSUM62Colour_actionPerformed(e); - } - }); - conservationMenuItem.setLabel("Conservation"); - - - } - - void refresh() - { - SequenceGroup sg = getGroup(); - SuperGroup superG = ap.av.alignment.getSuperGroup( sg ); - if( superG !=null) - superG.setSuperGroupProperties( sg ); - - ap.seqPanel.seqCanvas.repaint(); - } - - protected void clustalColour_actionPerformed(ActionEvent e) - { - SequenceGroup sg = getGroup(); - sg.cs = new ClustalxColourScheme(sg.sequences, ap.av.alignment.getWidth()); - refresh(); - } - - protected void zappoColour_actionPerformed(ActionEvent e) - { - getGroup().cs = new ZappoColourScheme(); - refresh(); - } - - protected void taylorColour_actionPerformed(ActionEvent e) - { - getGroup().cs = new TaylorColourScheme(); - refresh(); - } - - - protected void hydrophobicityColour_actionPerformed(ActionEvent e) - { - getGroup().cs = new HydrophobicColourScheme(); - refresh(); - } - - protected void helixColour_actionPerformed(ActionEvent e) - { - getGroup().cs = new HelixColourScheme(); - refresh(); - } - - protected void strandColour_actionPerformed(ActionEvent e) - { - getGroup().cs = new StrandColourScheme(); - refresh(); - } - - protected void turnColour_actionPerformed(ActionEvent e) - { - getGroup().cs = new TurnColourScheme(); - refresh(); - } - - protected void buriedColour_actionPerformed(ActionEvent e) - { - getGroup().cs = new BuriedColourScheme(); - refresh(); - } - - public void nucleotideMenuItem_actionPerformed(ActionEvent e) - { - getGroup().cs = new NucleotideColourScheme(); - refresh(); - } - - - - protected void abovePIDColour_itemStateChanged(ItemEvent ie) - { - SequenceGroup sg = getGroup(); - if (abovePIDColour.getState()) - { - sg.cs.setConsensus(AAFrequency.calculate(sg.sequences, 0, - ap.av.alignment.getWidth())); - int threshold = SliderPanel.setPIDSliderSource(ap, sg.cs, getGroup().getName()); - if (sg.cs instanceof ResidueColourScheme) - ( (ResidueColourScheme)sg. cs).setThreshold(threshold); - else if (sg.cs instanceof ScoreColourScheme) - ( (ScoreColourScheme) sg.cs).setThreshold(threshold); - - SliderPanel.showPIDSlider(); - - - } - else // remove PIDColouring - { - ResidueColourScheme rcs = (ResidueColourScheme) sg.cs; - rcs.setThreshold(0); - sg.cs = rcs; - } - - refresh(); - - } - - - protected void userDefinedColour_actionPerformed(ActionEvent e) - { - new UserDefinedColours( ap, getGroup()); - } - - protected void PIDColour_actionPerformed(ActionEvent e) - { - SequenceGroup sg = getGroup(); - sg.cs = new PIDColourScheme(); - sg.cs.setConsensus(AAFrequency.calculate(sg.sequences, 0, - ap.av.alignment.getWidth())); - refresh(); - } - - protected void BLOSUM62Colour_actionPerformed(ActionEvent e) - { - SequenceGroup sg = getGroup(); - - sg.cs = new Blosum62ColourScheme(); - - sg.cs.setConsensus(AAFrequency.calculate(sg.sequences, 0, - ap.av.alignment.getWidth())); - - refresh(); - } - - - protected void noColourmenuItem_actionPerformed(ActionEvent e) - { - getGroup().cs = null; - refresh(); - } - - protected void conservationMenuItem_itemStateChanged(ItemEvent ie) - { - SequenceGroup sg = getGroup(); - - if(conservationMenuItem.getState()) - { - - Conservation c = new Conservation("Group", - ResidueProperties.propHash, 3, - sg.sequences, 0, - ap.av.alignment.getWidth()); - - c.calculate(); - c.verdict(false, ap.av.ConsPercGaps); - ConservationColourScheme ccs = new ConservationColourScheme(c, sg.cs); - - - sg.cs = ccs; - - SliderPanel.setConservationSlider(ap, ccs, sg.getName()); - SliderPanel.showConservationSlider(); - } - else // remove ConservationColouring - { - ConservationColourScheme ccs = (ConservationColourScheme)sg.cs; - sg.cs = ccs.cs; - } - - refresh(); - } - - - protected void analyze_actionPerformed(ActionEvent e) - { - CutAndPasteTransfer cap = new CutAndPasteTransfer(false); - Frame frame = new Frame(); - frame.add(cap); - jalview.bin.JalviewLite.addFrame(frame, "Analyze this - ", 400, 300); - SequenceGroup sg = getGroup(); - StringBuffer sb = new StringBuffer(); - - for(int i=0; i 0) + { + editGroupName.setLabel(sg.getName()); + showText.setState(sg.getDisplayText()); + showColourText.setState(sg.getColourText()); + showBoxes.setState(sg.getDisplayBoxes()); + if (!ap.av.alignment.getGroups().contains(sg)) + { + groupMenu.remove(unGroupMenuItem); + } + + } + else + { + remove(hideSeqs); + remove(groupMenu); + } + + if (links != null && links.size() > 0) + { + Menu linkMenu = new Menu("Link"); + String link; + for (int i = 0; i < links.size(); i++) + { + link = links.elementAt(i).toString(); + UrlLink urlLink = new UrlLink(link); + if (!urlLink.isValid()) + { + System.err.println(urlLink.getInvalidMessage()); + continue; + } + final String target = urlLink.getTarget(); // link.substring(0, + // link.indexOf("|")); + final String label = urlLink.getLabel(); + if (urlLink.isDynamic()) + { + + // collect matching db-refs + DBRefEntry[] dbr = jalview.util.DBRefUtils.selectRefs(seq + .getDBRef(), new String[] + { target }); + // collect id string too + String id = seq.getName(); + if (dbr != null) + { + for (int r = 0; r < dbr.length; r++) + { + if (id != null && dbr[r].getAccessionId().equals(id)) + { + // suppress duplicate link creation for the bare sequence ID + // string with this link + id = null; + } + // create Bare ID link for this RUL + String[] urls = urlLink.makeUrls(dbr[r].getAccessionId(), + true); + if (urls != null) + { + for (int u = 0; u < urls.length; u += 2) + { + addshowLink(linkMenu, label + "|" + urls[u], urls[u + 1]); + } + } + } + } + if (id != null) + { + // create Bare ID link for this RUL + String[] urls = urlLink.makeUrls(id, true); + if (urls != null) + { + for (int u = 0; u < urls.length; u += 2) + { + addshowLink(linkMenu, label, urls[u + 1]); + } + } + // addshowLink(linkMenu, target, url_pref + id + url_suff); + } + } + else + { + addshowLink(linkMenu, target, urlLink.getUrl_prefix()); // link.substring(link.lastIndexOf("|")+1)); + } + /* + * final String url; + * + * if (link.indexOf("$SEQUENCE_ID$") > -1) { // Substitute SEQUENCE_ID + * string and any matching database reference accessions String url_pref = + * link.substring(link.indexOf("|") + 1, link.indexOf("$SEQUENCE_ID$")); + * + * String url_suff = link.substring(link.indexOf("$SEQUENCE_ID$") + 13); + * // collect matching db-refs DBRefEntry[] dbr = + * jalview.util.DBRefUtils.selectRefs(seq.getDBRef(), new + * String[]{target}); // collect id string too String id = + * seq.getName(); if (id.indexOf("|") > -1) { id = + * id.substring(id.lastIndexOf("|") + 1); } if (dbr!=null) { for (int + * r=0;r 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); + } + + String description; + int caseChange; + + if (source == toggleCase) + { + description = "Toggle Case"; + caseChange = ChangeCaseCommand.TOGGLE_CASE; + } + else if (source == toUpper) + { + description = "To Upper Case"; + caseChange = ChangeCaseCommand.TO_UPPER; + } + else + { + description = "To Lower Case"; + caseChange = ChangeCaseCommand.TO_LOWER; + } + + ChangeCaseCommand caseCommand = new ChangeCaseCommand(description, + sg.getSequencesAsArray(ap.av.hiddenRepSequences), startEnd, + caseChange); + + ap.alignFrame.addHistoryItem(caseCommand); + + ap.av.firePropertyChange("alignment", null, ap.av.getAlignment() + .getSequences()); + + } + } + else if (source == sequenceFeature) + { + SequenceGroup sg = ap.av.getSelectionGroup(); + if (sg == null) + { + return; + } + int rsize=0,gSize = sg.getSize(); + SequenceI[] rseqs,seqs = new SequenceI[gSize]; + SequenceFeature[] tfeatures,features = new SequenceFeature[gSize]; + + 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); + features[rsize] = new SequenceFeature(null, null, null, start, end, + "Jalview"); + rsize++; + } + } + 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.seqPanel.seqCanvas.getFeatureRenderer().amendFeatures(seqs, + features, true, ap)) + { + ap.alignFrame.sequenceFeatures.setState(true); + ap.av.showSequenceFeatures(true); + ap.highlightSearchResults(null); + } + } + else + { + outputText(evt); + } + + } + + void outputText(ActionEvent e) + { + CutAndPasteTransfer cap = new CutAndPasteTransfer(true, ap.alignFrame); + + Frame frame = new Frame(); + frame.add(cap); + jalview.bin.JalviewLite.addFrame(frame, "Selection output - " + + e.getActionCommand(), 600, 500); + + cap.setText(new jalview.io.AppletFormatAdapter().formatSequences(e + .getActionCommand(), new Alignment(ap.av + .getSelectionAsNewSequence()), ap.av.showJVSuffix)); + + } + + void editName() + { + EditNameDialog dialog = new EditNameDialog(seq.getName(), seq + .getDescription(), " Sequence Name", + "Sequence Description", ap.alignFrame, + "Edit Sequence Name / Description", 500, 100, true); + + if (dialog.accept) + { + seq.setName(dialog.getName()); + seq.setDescription(dialog.getDescription()); + ap.paintAlignment(false); + } + } + + void addPDB() + { + if (seq.getPDBId() != null) + { + PDBEntry entry = (PDBEntry) seq.getPDBId().firstElement(); + + if (ap.av.applet.jmolAvailable) + new jalview.appletgui.AppletJmol(entry, new Sequence[] + { seq }, null, ap, AppletFormatAdapter.URL); + else + new MCview.AppletPDBViewer(entry, new Sequence[] + { seq }, null, ap, AppletFormatAdapter.URL); + + } + else + { + CutAndPasteTransfer cap = new CutAndPasteTransfer(true, ap.alignFrame); + cap.setText("Paste your PDB file here."); + cap.setPDBImport(seq); + Frame frame = new Frame(); + frame.add(cap); + jalview.bin.JalviewLite.addFrame(frame, "Paste PDB file ", 400, 300); + } + } + + private void jbInit() throws Exception + { + groupMenu.setLabel("Group"); + groupMenu.setLabel("Selection"); + sequenceFeature.addActionListener(this); + + editGroupName.addActionListener(this); + unGroupMenuItem.setLabel("Remove Group"); + unGroupMenuItem.addActionListener(this); + + nucleotideMenuItem.setLabel("Nucleotide"); + nucleotideMenuItem.addActionListener(this); + conservationMenuItem.addItemListener(this); + abovePIDColour.addItemListener(this); + colourMenu.setLabel("Group Colour"); + showBoxes.setLabel("Boxes"); + showBoxes.setState(true); + showBoxes.addItemListener(this); + sequenceName.addActionListener(this); + + showText.setLabel("Text"); + showText.addItemListener(this); + showColourText.setLabel("Colour Text"); + showColourText.addItemListener(this); + outputmenu.setLabel("Output to Textbox..."); + seqMenu.setLabel("Sequence"); + pdb.setLabel("View PDB Structure"); + hideSeqs.setLabel("Hide Sequences"); + repGroup.setLabel("Represent Group with"); + revealAll.setLabel("Reveal All"); + menu1.setLabel("Group"); + add(groupMenu); + this.add(seqMenu); + this.add(hideSeqs); + this.add(revealAll); + groupMenu.add(editGroupName); + groupMenu.add(editMenu); + groupMenu.add(outputmenu); + groupMenu.add(sequenceFeature); + groupMenu.add(menu1); + + colourMenu.add(noColourmenuItem); + colourMenu.add(clustalColour); + colourMenu.add(BLOSUM62Colour); + colourMenu.add(PIDColour); + colourMenu.add(zappoColour); + colourMenu.add(taylorColour); + colourMenu.add(hydrophobicityColour); + colourMenu.add(helixColour); + colourMenu.add(strandColour); + colourMenu.add(turnColour); + colourMenu.add(buriedColour); + colourMenu.add(nucleotideMenuItem); + colourMenu.add(userDefinedColour); + colourMenu.addSeparator(); + colourMenu.add(abovePIDColour); + colourMenu.add(conservationMenuItem); + + noColourmenuItem.setLabel("None"); + noColourmenuItem.addActionListener(this); + + clustalColour.setLabel("Clustalx colours"); + clustalColour.addActionListener(this); + zappoColour.setLabel("Zappo"); + zappoColour.addActionListener(this); + taylorColour.setLabel("Taylor"); + taylorColour.addActionListener(this); + hydrophobicityColour.setLabel("Hydrophobicity"); + hydrophobicityColour.addActionListener(this); + helixColour.setLabel("Helix propensity"); + helixColour.addActionListener(this); + strandColour.setLabel("Strand propensity"); + strandColour.addActionListener(this); + turnColour.setLabel("Turn propensity"); + turnColour.addActionListener(this); + buriedColour.setLabel("Buried Index"); + buriedColour.addActionListener(this); + abovePIDColour.setLabel("Above % Identity"); + + userDefinedColour.setLabel("User Defined"); + userDefinedColour.addActionListener(this); + PIDColour.setLabel("Percentage Identity"); + PIDColour.addActionListener(this); + BLOSUM62Colour.setLabel("BLOSUM62"); + BLOSUM62Colour.addActionListener(this); + conservationMenuItem.setLabel("Conservation"); + + editMenu.add(copy); + copy.addActionListener(this); + editMenu.add(cut); + cut.addActionListener(this); + + editMenu.add(editSequence); + editSequence.addActionListener(this); + + editMenu.add(toUpper); + toUpper.addActionListener(this); + editMenu.add(toLower); + toLower.addActionListener(this); + editMenu.add(toggleCase); + seqMenu.add(sequenceName); + seqMenu.add(pdb); + seqMenu.add(repGroup); + menu1.add(unGroupMenuItem); + menu1.add(colourMenu); + menu1.add(showBoxes); + menu1.add(showText); + menu1.add(showColourText); + toggleCase.addActionListener(this); + pdb.addActionListener(this); + hideSeqs.addActionListener(this); + repGroup.addActionListener(this); + revealAll.addActionListener(this); + } + + void refresh() + { + ap.paintAlignment(true); + } + + protected void clustalColour_actionPerformed() + { + SequenceGroup sg = getGroup(); + sg.cs = new ClustalxColourScheme(sg + .getSequences(ap.av.hiddenRepSequences), ap.av.alignment + .getWidth()); + refresh(); + } + + protected void zappoColour_actionPerformed() + { + getGroup().cs = new ZappoColourScheme(); + refresh(); + } + + protected void taylorColour_actionPerformed() + { + getGroup().cs = new TaylorColourScheme(); + refresh(); + } + + protected void hydrophobicityColour_actionPerformed() + { + getGroup().cs = new HydrophobicColourScheme(); + refresh(); + } + + protected void helixColour_actionPerformed() + { + getGroup().cs = new HelixColourScheme(); + refresh(); + } + + protected void strandColour_actionPerformed() + { + getGroup().cs = new StrandColourScheme(); + refresh(); + } + + protected void turnColour_actionPerformed() + { + getGroup().cs = new TurnColourScheme(); + refresh(); + } + + protected void buriedColour_actionPerformed() + { + getGroup().cs = new BuriedColourScheme(); + refresh(); + } + + public void nucleotideMenuItem_actionPerformed() + { + getGroup().cs = new NucleotideColourScheme(); + refresh(); + } + + protected void abovePIDColour_itemStateChanged() + { + SequenceGroup sg = getGroup(); + if (sg.cs == null) + { + return; + } + + if (abovePIDColour.getState()) + { + sg.cs.setConsensus(AAFrequency.calculate(sg + .getSequences(ap.av.hiddenRepSequences), 0, ap.av.alignment + .getWidth())); + int threshold = SliderPanel.setPIDSliderSource(ap, sg.cs, getGroup() + .getName()); + + sg.cs.setThreshold(threshold, ap.av.getIgnoreGapsConsensus()); + + SliderPanel.showPIDSlider(); + + } + else + // remove PIDColouring + { + sg.cs.setThreshold(0, ap.av.getIgnoreGapsConsensus()); + } + + refresh(); + + } + + protected void userDefinedColour_actionPerformed() + { + new UserDefinedColours(ap, getGroup()); + } + + protected void PIDColour_actionPerformed() + { + SequenceGroup sg = getGroup(); + sg.cs = new PIDColourScheme(); + sg.cs.setConsensus(AAFrequency.calculate(sg + .getSequences(ap.av.hiddenRepSequences), 0, ap.av.alignment + .getWidth())); + refresh(); + } + + protected void BLOSUM62Colour_actionPerformed() + { + SequenceGroup sg = getGroup(); + + sg.cs = new Blosum62ColourScheme(); + + sg.cs.setConsensus(AAFrequency.calculate(sg + .getSequences(ap.av.hiddenRepSequences), 0, ap.av.alignment + .getWidth())); + + refresh(); + } + + protected void noColourmenuItem_actionPerformed() + { + getGroup().cs = null; + refresh(); + } + + protected void conservationMenuItem_itemStateChanged() + { + SequenceGroup sg = getGroup(); + if (sg.cs == null) + { + return; + } + + if (conservationMenuItem.getState()) + { + + Conservation c = new Conservation("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); + + SliderPanel.setConservationSlider(ap, sg.cs, sg.getName()); + SliderPanel.showConservationSlider(); + } + else + // remove ConservationColouring + { + sg.cs.setConservation(null); + } + + refresh(); + } + + SequenceGroup getGroup() + { + SequenceGroup sg = ap.av.getSelectionGroup(); + + // this method won't add a new group if it already exists + if (sg != null) + { + ap.av.alignment.addGroup(sg); + } + + return sg; + } + + void unGroupMenuItem_actionPerformed() + { + SequenceGroup sg = ap.av.getSelectionGroup(); + ap.av.alignment.deleteGroup(sg); + ap.av.setSelectionGroup(null); + ap.paintAlignment(true); + } + + public void showColourText_itemStateChanged() + { + getGroup().setColourText(showColourText.getState()); + refresh(); + } + + public void showText_itemStateChanged() + { + getGroup().setDisplayText(showText.getState()); + refresh(); + } + + public void showBoxes_itemStateChanged() + { + getGroup().setDisplayBoxes(showBoxes.getState()); + refresh(); + } + + void hideSequences(boolean representGroup) + { + SequenceGroup sg = ap.av.getSelectionGroup(); + if (sg == null || sg.getSize() < 1) + { + ap.av.hideSequence(new SequenceI[] + { seq }); + return; + } + + ap.av.setSelectionGroup(null); + + if (representGroup) + { + ap.av.hideRepSequences(seq, sg); + + return; + } + + int gsize = sg.getSize(); + SequenceI[] hseqs; + + hseqs = new SequenceI[gsize]; + + int index = 0; + for (int i = 0; i < gsize; i++) + { + hseqs[index++] = sg.getSequenceAt(i); + } + + ap.av.hideSequence(hseqs); + } + +}