1 package jalview.appletgui;
\r
3 import jalview.datamodel.*;
\r
4 import jalview.analysis.*;
\r
5 import jalview.schemes.*;
\r
7 import java.awt.event.*;
\r
9 public class APopupMenu extends java.awt.PopupMenu
\r
11 Menu groupMenu = new Menu();
\r
12 Menu analyze = new Menu();
\r
13 Menu defineMenu = new Menu();
\r
14 Menu groupName = new Menu();
\r
15 Menu groupAnnotation = new Menu();
\r
16 protected MenuItem clustalColour = new MenuItem();
\r
17 protected MenuItem zappoColour = new MenuItem();
\r
18 protected MenuItem taylorColour = new MenuItem();
\r
19 protected MenuItem hydrophobicityColour = new MenuItem();
\r
20 protected MenuItem helixColour = new MenuItem();
\r
21 protected MenuItem strandColour = new MenuItem();
\r
22 protected MenuItem turnColour = new MenuItem();
\r
23 protected MenuItem buriedColour = new MenuItem();
\r
24 protected CheckboxMenuItem abovePIDColour = new CheckboxMenuItem();
\r
25 protected MenuItem userDefinedColour = new MenuItem();
\r
26 protected MenuItem PIDColour = new MenuItem();
\r
27 protected MenuItem BLOSUM62Colour = new MenuItem();
\r
28 MenuItem noColourmenuItem = new MenuItem();
\r
29 protected CheckboxMenuItem conservationMenuItem = new CheckboxMenuItem();
\r
33 Menu sequenceMenu = new Menu();
\r
34 MenuItem sequenceName = new MenuItem();
\r
35 Menu residueMenu = new Menu();
\r
36 MenuItem annotateResidue = new MenuItem();
\r
39 MenuItem unGroupMenuItem = new MenuItem();
\r
40 MenuItem outline = new MenuItem();
\r
41 MenuItem nucleotideMenuItem = new MenuItem();
\r
43 public APopupMenu(AlignmentPanel ap, Sequence seq)
\r
45 ///////////////////////////////////////////////////////////
\r
46 // If this is activated from the sequence panel, the user may want to
\r
47 // edit or annotate a particular residue. Therefore display the residue menu
\r
49 // If from the IDPanel, we must display the sequence menu
\r
50 //////////////////////////////////////////////////////////
\r
58 { e.printStackTrace(); }
\r
62 residueMenu.setEnabled(false);
\r
64 sequenceMenu.setEnabled(false);
\r
67 private void jbInit() throws Exception
\r
69 groupMenu.setLabel("Group");
\r
70 analyze.setLabel("Analyze");
\r
71 analyze.addActionListener(new java.awt.event.ActionListener()
\r
73 public void actionPerformed(ActionEvent e)
\r
75 analyze_actionPerformed(e);
\r
78 defineMenu.setLabel("Define");
\r
79 groupName.setLabel("Name");
\r
80 groupName.addActionListener(new java.awt.event.ActionListener()
\r
82 public void actionPerformed(ActionEvent e)
\r
84 groupName_actionPerformed(e);
\r
87 groupAnnotation.setEnabled(false);
\r
88 groupAnnotation.setLabel("Annotation");
\r
89 groupAnnotation.addActionListener(new java.awt.event.ActionListener()
\r
91 public void actionPerformed(ActionEvent e)
\r
93 groupAnnotation_actionPerformed(e);
\r
96 sequenceMenu.setLabel("Sequence");
\r
97 sequenceName.setLabel("Edit name");
\r
98 sequenceName.addActionListener(new java.awt.event.ActionListener()
\r
100 public void actionPerformed(ActionEvent e)
\r
102 sequenceName_actionPerformed(e);
\r
105 residueMenu.setLabel("Residue");
\r
106 annotateResidue.setEnabled(false);
\r
107 annotateResidue.setActionCommand("annotate residue");
\r
108 annotateResidue.setLabel("annotate residue???");
\r
109 unGroupMenuItem.setLabel("Remove Group");
\r
110 unGroupMenuItem.addActionListener(new java.awt.event.ActionListener()
\r
112 public void actionPerformed(ActionEvent e)
\r
114 unGroupMenuItem_actionPerformed(e);
\r
118 outline.setLabel("Border colour");
\r
119 outline.addActionListener(new java.awt.event.ActionListener()
\r
121 public void actionPerformed(ActionEvent e)
\r
123 outline_actionPerformed(e);
\r
126 nucleotideMenuItem.setLabel("Nucleotide");
\r
127 nucleotideMenuItem.addActionListener(new ActionListener()
\r
129 public void actionPerformed(ActionEvent e)
\r
131 nucleotideMenuItem_actionPerformed(e);
\r
136 this.add(sequenceMenu);
\r
137 this.add(residueMenu);
\r
138 groupMenu.add(defineMenu);
\r
139 groupMenu.add(unGroupMenuItem);
\r
140 groupMenu.addSeparator();
\r
141 groupMenu.add(analyze);
\r
142 defineMenu.add(groupName);
\r
143 defineMenu.add(groupAnnotation);
\r
144 defineMenu.addSeparator();
\r
145 defineMenu.add(outline);
\r
146 defineMenu.addSeparator();
\r
147 defineMenu.add(noColourmenuItem);
\r
148 defineMenu.add(clustalColour);
\r
149 defineMenu.add(BLOSUM62Colour);
\r
150 defineMenu.add(PIDColour);
\r
152 defineMenu.add(zappoColour);
\r
153 defineMenu.add(taylorColour);
\r
154 defineMenu.add(hydrophobicityColour);
\r
155 defineMenu.add(helixColour);
\r
156 defineMenu.add(strandColour);
\r
157 defineMenu.add(turnColour);
\r
158 defineMenu.add(buriedColour);
\r
159 defineMenu.add(nucleotideMenuItem);
\r
161 defineMenu.add(userDefinedColour);
\r
163 defineMenu.addSeparator();
\r
164 defineMenu.add(abovePIDColour);
\r
165 defineMenu.add(conservationMenuItem);
\r
167 sequenceMenu.add(sequenceName);
\r
168 residueMenu.add(annotateResidue);
\r
170 noColourmenuItem.setLabel("None");
\r
171 noColourmenuItem.addActionListener(new java.awt.event.ActionListener()
\r
173 public void actionPerformed(ActionEvent e)
\r
175 noColourmenuItem_actionPerformed(e);
\r
179 clustalColour.setLabel("Clustalx colours");
\r
180 clustalColour.addActionListener(new java.awt.event.ActionListener()
\r
182 public void actionPerformed(ActionEvent e)
\r
184 clustalColour_actionPerformed(e);
\r
187 zappoColour.setLabel("Zappo");
\r
188 zappoColour.addActionListener(new java.awt.event.ActionListener()
\r
190 public void actionPerformed(ActionEvent e)
\r
192 zappoColour_actionPerformed(e);
\r
195 taylorColour.setLabel("Taylor");
\r
196 taylorColour.addActionListener(new java.awt.event.ActionListener()
\r
198 public void actionPerformed(ActionEvent e)
\r
200 taylorColour_actionPerformed(e);
\r
203 hydrophobicityColour.setLabel("Hydrophobicity");
\r
204 hydrophobicityColour.addActionListener(new java.awt.event.ActionListener()
\r
206 public void actionPerformed(ActionEvent e)
\r
208 hydrophobicityColour_actionPerformed(e);
\r
211 helixColour.setLabel("Helix propensity");
\r
212 helixColour.addActionListener(new java.awt.event.ActionListener()
\r
214 public void actionPerformed(ActionEvent e)
\r
216 helixColour_actionPerformed(e);
\r
219 strandColour.setLabel("Strand propensity");
\r
220 strandColour.addActionListener(new java.awt.event.ActionListener()
\r
222 public void actionPerformed(ActionEvent e)
\r
224 strandColour_actionPerformed(e);
\r
227 turnColour.setLabel("Turn propensity");
\r
228 turnColour.addActionListener(new java.awt.event.ActionListener()
\r
230 public void actionPerformed(ActionEvent e)
\r
232 turnColour_actionPerformed(e);
\r
235 buriedColour.setLabel("Buried Index");
\r
236 buriedColour.addActionListener(new java.awt.event.ActionListener()
\r
238 public void actionPerformed(ActionEvent e)
\r
240 buriedColour_actionPerformed(e);
\r
243 abovePIDColour.setLabel("Above % Identity");
\r
244 abovePIDColour.addActionListener(new java.awt.event.ActionListener()
\r
246 public void actionPerformed(ActionEvent e)
\r
248 abovePIDColour_actionPerformed(e);
\r
251 userDefinedColour.setLabel("User Defined");
\r
252 userDefinedColour.addActionListener(new java.awt.event.ActionListener()
\r
254 public void actionPerformed(ActionEvent e)
\r
256 userDefinedColour_actionPerformed(e);
\r
259 PIDColour.setLabel("Percentage Identity");
\r
260 PIDColour.addActionListener(new java.awt.event.ActionListener()
\r
262 public void actionPerformed(ActionEvent e)
\r
264 PIDColour_actionPerformed(e);
\r
267 BLOSUM62Colour.setLabel("BLOSUM62");
\r
268 BLOSUM62Colour.addActionListener(new java.awt.event.ActionListener()
\r
270 public void actionPerformed(ActionEvent e)
\r
272 BLOSUM62Colour_actionPerformed(e);
\r
275 conservationMenuItem.setLabel("Conservation");
\r
276 conservationMenuItem.addActionListener(new java.awt.event.ActionListener()
\r
278 public void actionPerformed(ActionEvent e)
\r
280 conservationMenuItem_actionPerformed(e);
\r
290 SequenceGroup sg = getGroup();
\r
291 SuperGroup superG = ap.av.alignment.getSuperGroup( sg );
\r
293 superG.setSuperGroupProperties( sg );
\r
295 ap.seqPanel.repaint();
\r
298 protected void clustalColour_actionPerformed(ActionEvent e)
\r
300 SequenceGroup sg = getGroup();
\r
301 sg.cs = new ClustalxColourScheme(sg.sequences, ap.av.alignment.getWidth());
\r
305 protected void zappoColour_actionPerformed(ActionEvent e)
\r
307 getGroup().cs = new ZappoColourScheme();
\r
311 protected void taylorColour_actionPerformed(ActionEvent e)
\r
313 getGroup().cs = new TaylorColourScheme();
\r
318 protected void hydrophobicityColour_actionPerformed(ActionEvent e)
\r
320 getGroup().cs = new HydrophobicColourScheme();
\r
324 protected void helixColour_actionPerformed(ActionEvent e)
\r
326 getGroup().cs = new HelixColourScheme();
\r
330 protected void strandColour_actionPerformed(ActionEvent e)
\r
332 getGroup().cs = new StrandColourScheme();
\r
336 protected void turnColour_actionPerformed(ActionEvent e)
\r
338 getGroup().cs = new TurnColourScheme();
\r
342 protected void buriedColour_actionPerformed(ActionEvent e)
\r
344 getGroup().cs = new BuriedColourScheme();
\r
348 public void nucleotideMenuItem_actionPerformed(ActionEvent e)
\r
350 getGroup().cs = new NucleotideColourScheme();
\r
356 protected void abovePIDColour_actionPerformed(ActionEvent e)
\r
358 SequenceGroup sg = getGroup();
\r
359 if (abovePIDColour.getState())
\r
361 sg.cs.setConsensus(AAFrequency.calculate(sg.sequences, 0,
\r
362 ap.av.alignment.getWidth()));
\r
363 int threshold = SliderPanel.setPIDSliderSource(ap, sg.cs, getGroup().getName());
\r
364 if (sg.cs instanceof ResidueColourScheme)
\r
365 ( (ResidueColourScheme)sg. cs).setThreshold(threshold);
\r
366 else if (sg.cs instanceof ScoreColourScheme)
\r
367 ( (ScoreColourScheme) sg.cs).setThreshold(threshold);
\r
369 SliderPanel.showPIDSlider();
\r
373 else // remove PIDColouring
\r
375 ResidueColourScheme rcs = (ResidueColourScheme) sg.cs;
\r
376 rcs.setThreshold(0);
\r
385 protected void userDefinedColour_actionPerformed(ActionEvent e)
\r
387 UserDefinedColours chooser = new UserDefinedColours( ap, getGroup());
\r
390 protected void PIDColour_actionPerformed(ActionEvent e)
\r
395 protected void BLOSUM62Colour_actionPerformed(ActionEvent e)
\r
397 SequenceGroup sg = getGroup();
\r
399 sg.cs = new Blosum62ColourScheme();
\r
401 sg.cs.setConsensus(AAFrequency.calculate(sg.sequences, 0,
\r
402 ap.av.alignment.getWidth()));
\r
408 protected void noColourmenuItem_actionPerformed(ActionEvent e)
\r
410 getGroup().cs = null;
\r
414 protected void conservationMenuItem_actionPerformed(ActionEvent e)
\r
416 SequenceGroup sg = getGroup();
\r
418 if(conservationMenuItem.getState())
\r
421 Conservation c = new Conservation("Group",
\r
422 ResidueProperties.propHash, 3,
\r
424 ap.av.alignment.getWidth());
\r
427 c.verdict(false, ap.av.ConsPercGaps);
\r
428 ConservationColourScheme ccs = new ConservationColourScheme(c, sg.cs);
\r
433 SliderPanel.setConservationSlider(ap, ccs, sg.getName());
\r
434 SliderPanel.showConservationSlider();
\r
436 else // remove ConservationColouring
\r
438 ConservationColourScheme ccs = (ConservationColourScheme)sg.cs;
\r
445 protected void groupAnnotation_actionPerformed(ActionEvent e)
\r
450 protected void groupName_actionPerformed(ActionEvent e)
\r
452 /* SequenceGroup sg = getGroup();
\r
453 String reply = JOptionPane.showInternalInputDialog(Desktop.desktop, "Enter new group name", "Edit group name", JOptionPane.QUESTION_MESSAGE);
\r
458 groupName.setLabel(reply);*/
\r
462 protected void analyze_actionPerformed(ActionEvent e)
\r
464 CutAndPasteTransfer cap = new CutAndPasteTransfer(false);
\r
465 Frame frame = new Frame();
\r
467 jalview.bin.JalviewLite.addFrame(frame, "Analyze this - ", 400, 300);
\r
468 SequenceGroup sg = getGroup();
\r
469 StringBuffer sb = new StringBuffer();
\r
471 for(int i=0; i<sg.sequences.size(); i++)
\r
473 Sequence tmp = (Sequence)sg.sequences.elementAt(i);
\r
474 sb.append( tmp.getSequence(sg.getStartRes(), sg.getEndRes()+1));
\r
478 sb.append("Something amazing will happen soon");
\r
479 cap.setText( sb.toString() );
\r
483 SequenceGroup getGroup()
\r
485 SequenceGroup sg = ap.av.getSelectionGroup();
\r
487 // this method won't add a new group if it already exists
\r
488 ap.av.alignment.addGroup(sg);
\r
493 void sequenceName_actionPerformed(ActionEvent e)
\r
495 /* String id = sequence.getName();
\r
496 String s = (String)JOptionPane.showInternalInputDialog(
\r
498 "Edit sequence name",
\r
499 "Edit sequence name ("+sequence.getName()+")",
\r
500 JOptionPane.PLAIN_MESSAGE,
\r
507 sequence.setName(s);
\r
513 void unGroupMenuItem_actionPerformed(ActionEvent e)
\r
515 SequenceGroup sg = ap.av.getSelectionGroup();
\r
516 ap.av.alignment.deleteGroup(sg);
\r
517 ap.av.setSelectionGroup(null);
\r
522 protected void outline_actionPerformed(ActionEvent e)
\r
524 /* SequenceGroup sg = getGroup();
\r
525 Color col = JColorChooser.showDialog(this, "Select Outline Colour", Color.BLUE);
\r
527 sg.setOutlineColour(col);*/
\r