3 import jalview.datamodel.*;
\r
4 import jalview.analysis.*;
\r
5 import jalview.schemes.*;
\r
6 import javax.swing.*;
\r
7 import java.awt.event.*;
\r
10 public class PopupMenu extends JPopupMenu
\r
12 JMenuItem residueMenu = new JMenuItem();
\r
13 JMenu groupMenu = new JMenu();
\r
14 JMenuItem copyGroup = new JMenuItem();
\r
15 JMenuItem moveGroup = new JMenuItem();
\r
16 JMenuItem deleteSequences = new JMenuItem();
\r
17 JMenuItem analyze = new JMenuItem();
\r
18 JMenu defineMenu = new JMenu();
\r
19 JMenuItem groupName = new JMenuItem();
\r
20 JMenuItem groupAnnotation = new JMenuItem();
\r
21 protected JRadioButtonMenuItem clustalColour = new JRadioButtonMenuItem();
\r
22 protected JRadioButtonMenuItem zappoColour = new JRadioButtonMenuItem();
\r
23 protected JRadioButtonMenuItem taylorColour = new JRadioButtonMenuItem();
\r
24 protected JRadioButtonMenuItem hydrophobicityColour = new JRadioButtonMenuItem();
\r
25 protected JRadioButtonMenuItem helixColour = new JRadioButtonMenuItem();
\r
26 protected JRadioButtonMenuItem strandColour = new JRadioButtonMenuItem();
\r
27 protected JRadioButtonMenuItem turnColour = new JRadioButtonMenuItem();
\r
28 protected JRadioButtonMenuItem buriedColour = new JRadioButtonMenuItem();
\r
29 protected JRadioButtonMenuItem abovePIDColour = new JRadioButtonMenuItem();
\r
30 protected JRadioButtonMenuItem userDefinedColour = new JRadioButtonMenuItem();
\r
31 protected JRadioButtonMenuItem PIDColour = new JRadioButtonMenuItem();
\r
32 protected JRadioButtonMenuItem BLOSUM62Colour = new JRadioButtonMenuItem();
\r
33 JRadioButtonMenuItem noColourmenuItem = new JRadioButtonMenuItem();
\r
34 protected JMenuItem conservationColourIncMenuItem = new JMenuItem();
\r
35 protected JCheckBoxMenuItem conservationMenuItem = new JCheckBoxMenuItem();
\r
41 public PopupMenu(AlignViewport av, SeqPanel sp)
\r
46 ButtonGroup colours = new ButtonGroup();
\r
47 colours.add(noColourmenuItem);
\r
48 colours.add(clustalColour);
\r
49 colours.add(zappoColour);
\r
50 colours.add(taylorColour);
\r
51 colours.add(hydrophobicityColour);
\r
52 colours.add(helixColour);
\r
53 colours.add(strandColour);
\r
54 colours.add(turnColour);
\r
55 colours.add(buriedColour);
\r
56 colours.add(abovePIDColour);
\r
57 colours.add(userDefinedColour);
\r
58 colours.add(PIDColour);
\r
59 colours.add(BLOSUM62Colour);
\r
67 e.printStackTrace();
\r
70 SequenceGroup sg = av.getRubberbandGroup();
\r
71 groupName.setText( sg.getName() );
\r
73 private void jbInit() throws Exception
\r
75 residueMenu.setText("Residue");
\r
76 groupMenu.setText("Group");
\r
77 copyGroup.setText("Copy region to new Alignment");
\r
78 copyGroup.addActionListener(new java.awt.event.ActionListener()
\r
80 public void actionPerformed(ActionEvent e)
\r
82 copyGroup_actionPerformed(e);
\r
85 moveGroup.setText("Move sequences to new Alignment");
\r
86 moveGroup.addActionListener(new java.awt.event.ActionListener()
\r
88 public void actionPerformed(ActionEvent e)
\r
90 moveGroup_actionPerformed(e);
\r
93 deleteSequences.setText("Delete sequences");
\r
94 deleteSequences.addActionListener(new java.awt.event.ActionListener()
\r
96 public void actionPerformed(ActionEvent e)
\r
98 deleteSequences_actionPerformed(e);
\r
101 analyze.setText("Analyze");
\r
102 analyze.addActionListener(new java.awt.event.ActionListener()
\r
104 public void actionPerformed(ActionEvent e)
\r
106 analyze_actionPerformed(e);
\r
109 defineMenu.setText("Define");
\r
110 groupName.setText("Name");
\r
111 groupName.addActionListener(new java.awt.event.ActionListener()
\r
113 public void actionPerformed(ActionEvent e)
\r
115 groupName_actionPerformed(e);
\r
118 groupAnnotation.setText("Annotation");
\r
119 groupAnnotation.addActionListener(new java.awt.event.ActionListener()
\r
121 public void actionPerformed(ActionEvent e)
\r
123 groupAnnotation_actionPerformed(e);
\r
128 groupMenu.add(defineMenu);
\r
129 groupMenu.addSeparator();
\r
130 groupMenu.add(copyGroup);
\r
131 groupMenu.add(moveGroup);
\r
132 groupMenu.add(deleteSequences);
\r
133 groupMenu.addSeparator();
\r
134 groupMenu.add(analyze);
\r
135 defineMenu.add(groupName);
\r
136 defineMenu.add(groupAnnotation);
\r
137 defineMenu.addSeparator();
\r
138 defineMenu.add(noColourmenuItem);
\r
139 defineMenu.add(clustalColour);
\r
140 defineMenu.add(zappoColour);
\r
141 defineMenu.add(taylorColour);
\r
142 defineMenu.add(hydrophobicityColour);
\r
143 defineMenu.add(helixColour);
\r
144 defineMenu.add(strandColour);
\r
145 defineMenu.add(turnColour);
\r
146 defineMenu.add(buriedColour);
\r
147 defineMenu.add(userDefinedColour);
\r
148 defineMenu.addSeparator();
\r
149 defineMenu.add(conservationMenuItem);
\r
150 defineMenu.add(conservationColourIncMenuItem);
\r
151 defineMenu.addSeparator();
\r
152 defineMenu.add(abovePIDColour);
\r
153 defineMenu.add(PIDColour);
\r
154 defineMenu.add(BLOSUM62Colour);
\r
156 noColourmenuItem.setText("None");
\r
157 noColourmenuItem.setSelected(true);
\r
158 noColourmenuItem.addActionListener(new java.awt.event.ActionListener()
\r
160 public void actionPerformed(ActionEvent e)
\r
162 noColourmenuItem_actionPerformed(e);
\r
166 clustalColour.setEnabled(false);
\r
167 clustalColour.setSelected(false);
\r
168 clustalColour.setText("Clustalx colours");
\r
169 clustalColour.addActionListener(new java.awt.event.ActionListener()
\r
171 public void actionPerformed(ActionEvent e)
\r
173 clustalColour_actionPerformed(e);
\r
176 zappoColour.setText("Zappo colour scheme");
\r
177 zappoColour.addActionListener(new java.awt.event.ActionListener()
\r
179 public void actionPerformed(ActionEvent e)
\r
181 zappoColour_actionPerformed(e);
\r
184 taylorColour.setText("Taylor colour scheme");
\r
185 taylorColour.addActionListener(new java.awt.event.ActionListener()
\r
187 public void actionPerformed(ActionEvent e)
\r
189 taylorColour_actionPerformed(e);
\r
192 hydrophobicityColour.setText("By hydrophobicity");
\r
193 hydrophobicityColour.addActionListener(new java.awt.event.ActionListener()
\r
195 public void actionPerformed(ActionEvent e)
\r
197 hydrophobicityColour_actionPerformed(e);
\r
200 helixColour.setText("Helix propensity");
\r
201 helixColour.addActionListener(new java.awt.event.ActionListener()
\r
203 public void actionPerformed(ActionEvent e)
\r
205 helixColour_actionPerformed(e);
\r
208 strandColour.setText("Strand propensity");
\r
209 strandColour.addActionListener(new java.awt.event.ActionListener()
\r
211 public void actionPerformed(ActionEvent e)
\r
213 strandColour_actionPerformed(e);
\r
216 turnColour.setText("Turn propensity");
\r
217 turnColour.addActionListener(new java.awt.event.ActionListener()
\r
219 public void actionPerformed(ActionEvent e)
\r
221 turnColour_actionPerformed(e);
\r
224 buriedColour.setText("Buried index");
\r
225 buriedColour.addActionListener(new java.awt.event.ActionListener()
\r
227 public void actionPerformed(ActionEvent e)
\r
229 buriedColour_actionPerformed(e);
\r
232 abovePIDColour.setEnabled(false);
\r
233 abovePIDColour.setText("Above PID threshold only");
\r
234 abovePIDColour.addActionListener(new java.awt.event.ActionListener()
\r
236 public void actionPerformed(ActionEvent e)
\r
238 abovePIDColour_actionPerformed(e);
\r
241 userDefinedColour.setText("User defined colours");
\r
242 userDefinedColour.addActionListener(new java.awt.event.ActionListener()
\r
244 public void actionPerformed(ActionEvent e)
\r
246 userDefinedColour_actionPerformed(e);
\r
249 PIDColour.setEnabled(false);
\r
250 PIDColour.setText("By PID");
\r
251 PIDColour.addActionListener(new java.awt.event.ActionListener()
\r
253 public void actionPerformed(ActionEvent e)
\r
255 PIDColour_actionPerformed(e);
\r
258 BLOSUM62Colour.setText("By BLOSUM62 score");
\r
259 BLOSUM62Colour.addActionListener(new java.awt.event.ActionListener()
\r
261 public void actionPerformed(ActionEvent e)
\r
263 BLOSUM62Colour_actionPerformed(e);
\r
266 conservationMenuItem.setText("By conservation");
\r
267 conservationMenuItem.addActionListener(new java.awt.event.ActionListener()
\r
269 public void actionPerformed(ActionEvent e)
\r
271 conservationMenuItem_actionPerformed(e);
\r
275 conservationColourIncMenuItem.setEnabled(false);
\r
276 conservationColourIncMenuItem.setText("Conservation Colour Increment");
\r
277 conservationColourIncMenuItem.addActionListener(new java.awt.event.ActionListener()
\r
279 public void actionPerformed(ActionEvent e)
\r
281 conservationColourIncMenuItem_actionPerformed(e);
\r
290 seqPanel.seqCanvas.paintFlag=true;
\r
291 seqPanel.repaint();
\r
294 protected void clustalColour_actionPerformed(ActionEvent e)
\r
299 protected void zappoColour_actionPerformed(ActionEvent e)
\r
301 getGroup().cs = new ZappoColourScheme();
\r
305 protected void taylorColour_actionPerformed(ActionEvent e)
\r
307 getGroup().cs = new TaylorColourScheme();
\r
312 protected void hydrophobicityColour_actionPerformed(ActionEvent e)
\r
314 getGroup().cs = new HydrophobicColourScheme();
\r
318 protected void helixColour_actionPerformed(ActionEvent e)
\r
320 getGroup().cs = new HelixColourScheme();
\r
324 protected void strandColour_actionPerformed(ActionEvent e)
\r
326 getGroup().cs = new StrandColourScheme();
\r
330 protected void turnColour_actionPerformed(ActionEvent e)
\r
332 getGroup().cs = new TurnColourScheme();
\r
336 protected void buriedColour_actionPerformed(ActionEvent e)
\r
338 getGroup().cs = new BuriedColourScheme();
\r
343 protected void conservationColourIncMenuItem_actionPerformed(ActionEvent e)
\r
348 public void conservationColourIncMenuItem_actionPerformed(ActionEvent e)
\r
350 ConservationIncrementPanel cip = new ConservationIncrementPanel(viewport, alignPanel);
\r
351 JInternalFrame frame = new JInternalFrame();
\r
352 frame.setContentPane(cip);
\r
353 Desktop.addInternalFrame(frame, "Conservation Colour Increment", 400,90);
\r
354 frame.setMaximizable(false);
\r
359 protected void abovePIDColour_actionPerformed(ActionEvent e)
\r
365 protected void userDefinedColour_actionPerformed(ActionEvent e)
\r
367 JInternalFrame frame = new JInternalFrame();
\r
368 UserDefinedColours chooser = new UserDefinedColours( frame, seqPanel.parent, getGroup());
\r
369 frame.setContentPane(chooser);
\r
370 Desktop.addInternalFrame(frame,"User defined colours", 450,540 );
\r
371 frame.setResizable(false);
\r
372 frame.setIconifiable(false);
\r
373 frame.setMaximizable(false);
\r
377 protected void PIDColour_actionPerformed(ActionEvent e)
\r
382 protected void BLOSUM62Colour_actionPerformed(ActionEvent e)
\r
384 getGroup().cs = new Blosum62ColourScheme(av);
\r
389 protected void noColourmenuItem_actionPerformed(ActionEvent e)
\r
391 getGroup().cs = null;
\r
395 protected void conservationMenuItem_actionPerformed(ActionEvent e)
\r
397 SequenceGroup sg = getGroup();
\r
399 Conservation c = new Conservation("Group",
\r
400 ResidueProperties.propHash, 3, sg.sequences, sg.getStartRes(),
\r
404 c.verdict(false, 100);
\r
405 ConservationColourScheme ccs = new ConservationColourScheme(c, sg.cs);
\r
412 protected void groupAnnotation_actionPerformed(ActionEvent e)
\r
417 protected void groupName_actionPerformed(ActionEvent e)
\r
419 SequenceGroup sg = getGroup();
\r
420 String reply = JOptionPane.showInternalInputDialog(Desktop.desktop, "Enter new group name", "Edit group name", JOptionPane.QUESTION_MESSAGE);
\r
425 groupName.setText(reply);
\r
427 /* public void deleteSelectedMenuItem_actionPerformed(ActionEvent e)
\r
429 addHistoryItem("delete selection");
\r
431 for (int i=0;i < viewport.getSelection().size(); i++)
\r
432 viewport.getAlignment().deleteSequence(viewport.getSelection().sequenceAt(i));
\r
434 viewport.getSelection().clear();
\r
435 viewport.resetSeqLimits(alignPanel.seqPanel.seqCanvas.getHeight());
\r
436 alignPanel.RefreshPanels();
\r
439 public void moveSelectedMenuItem_actionPerformed(ActionEvent e)
\r
441 copySelectedMenuItem_actionPerformed(null);
\r
442 deleteSelectedMenuItem_actionPerformed(null);
\r
443 alignPanel.repaint();
\r
446 public void copySelectedMenuItem_actionPerformed(ActionEvent e)
\r
448 if(viewport.getSelection().size()==0)
\r
451 SequenceI[] s = new Sequence[viewport.getSelection().size()];
\r
452 for (int i=0; i < viewport.getSelection().size(); i++) {
\r
453 s[i] = new Sequence(viewport.getSelection().sequenceAt(i));
\r
455 AlignFrame af = new AlignFrame(new Alignment(s));
\r
456 int newHeight = s.length * af.viewport.getCharHeight() + 200;
\r
459 Desktop.addInternalFrame(af, "Copied sequences", 700,newHeight);
\r
462 protected void copyGroup_actionPerformed(ActionEvent e)
\r
464 SequenceGroup sg = av.getRubberbandGroup();
\r
466 SequenceI[] s = new Sequence[sg.sequences.size()];
\r
467 for (int i=0; i < sg.sequences.size(); i++)
\r
469 s[i] = new Sequence( sg.getSequenceAt(i));
\r
470 s[i].setSequence( s[i].getSequence(sg.getStartRes(), sg.getEndRes()+1) );
\r
472 AlignFrame af = new AlignFrame(new Alignment(s));
\r
473 int newHeight = s.length * af.viewport.getCharHeight() + 200;
\r
474 if (newHeight > 500)
\r
476 Desktop.addInternalFrame(af, "Copied sequences", 700, newHeight);
\r
479 protected void moveGroup_actionPerformed(ActionEvent e)
\r
484 protected void deleteSequences_actionPerformed(ActionEvent e)
\r
486 SequenceGroup sg = av.getRubberbandGroup();
\r
487 for (int i=0;i < sg.sequences.size(); i++)
\r
488 av.getAlignment().deleteSequence(sg.getSequenceAt(i));
\r
490 av.alignment.deleteGroup(sg);
\r
491 av.resetSeqLimits(seqPanel.seqCanvas.getHeight());
\r
492 seqPanel.parent.RefreshPanels();
\r
496 protected void analyze_actionPerformed(ActionEvent e)
\r
498 CutAndPasteTransfer cap = new CutAndPasteTransfer(false);
\r
499 JInternalFrame frame = new JInternalFrame();
\r
500 cap.formatForOutput();
\r
501 frame.setContentPane(cap);
\r
502 Desktop.addInternalFrame(frame, "Analyze this - ", 400, 300);
\r
503 SequenceGroup sg = getGroup();
\r
504 StringBuffer sb = new StringBuffer();
\r
506 for(int i=0; i<sg.sequences.size(); i++)
\r
508 Sequence tmp = (Sequence)sg.sequences.get(i);
\r
509 sb.append( tmp.getSequence(sg.getStartRes(), sg.getEndRes()+1));
\r
513 sb.append("Something amazing will happen soon");
\r
514 cap.setText( sb.toString() );
\r
518 SequenceGroup getGroup()
\r
520 SequenceGroup sg = av.getRubberbandGroup();
\r
522 // this method won't add a new group if it already exists
\r
523 av.alignment.addGroup(sg);
\r