Works out exisiting colur of a group
[jalview.git] / src / jalview / gui / PopupMenu.java
1 package jalview.gui;\r
2 \r
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
8 \r
9 \r
10 public class PopupMenu extends JPopupMenu\r
11 {\r
12   JMenu groupMenu = new JMenu();\r
13   JMenuItem copyGroup = new JMenuItem();\r
14   JMenuItem moveGroup = new JMenuItem();\r
15   JMenuItem deleteSequences = new JMenuItem();\r
16   JMenuItem analyze = new JMenuItem();\r
17   JMenu defineMenu = new JMenu();\r
18   JMenuItem groupName = new JMenuItem();\r
19   JMenuItem groupAnnotation = new JMenuItem();\r
20   protected JRadioButtonMenuItem clustalColour = new JRadioButtonMenuItem();\r
21   protected JRadioButtonMenuItem zappoColour = new JRadioButtonMenuItem();\r
22   protected JRadioButtonMenuItem taylorColour = new JRadioButtonMenuItem();\r
23   protected JRadioButtonMenuItem hydrophobicityColour = new JRadioButtonMenuItem();\r
24   protected JRadioButtonMenuItem helixColour = new JRadioButtonMenuItem();\r
25   protected JRadioButtonMenuItem strandColour = new JRadioButtonMenuItem();\r
26   protected JRadioButtonMenuItem turnColour = new JRadioButtonMenuItem();\r
27   protected JRadioButtonMenuItem buriedColour = new JRadioButtonMenuItem();\r
28   protected JCheckBoxMenuItem abovePIDColour = new JCheckBoxMenuItem();\r
29   protected JRadioButtonMenuItem userDefinedColour = new JRadioButtonMenuItem();\r
30   protected JRadioButtonMenuItem PIDColour = new JRadioButtonMenuItem();\r
31   protected JRadioButtonMenuItem BLOSUM62Colour = new JRadioButtonMenuItem();\r
32   JRadioButtonMenuItem noColourmenuItem = new JRadioButtonMenuItem();\r
33   protected JCheckBoxMenuItem conservationMenuItem = new JCheckBoxMenuItem();\r
34 \r
35 \r
36   AlignmentPanel ap;\r
37   JMenu sequenceMenu = new JMenu();\r
38   JMenuItem sequenceName = new JMenuItem();\r
39   JMenu residueMenu = new JMenu();\r
40   JMenuItem annotateResidue = new JMenuItem();\r
41 \r
42   SequenceI sequence;\r
43 \r
44   public PopupMenu(AlignmentPanel ap, SequenceI seq)\r
45   {\r
46     ///////////////////////////////////////////////////////////\r
47     // If this is activated from the sequence panel, the user may want to\r
48     // edit or annotate a particular residue. Therefore display the residue menu\r
49     //\r
50     // If from the IDPanel, we must display the sequence menu\r
51     //////////////////////////////////////////////////////////\r
52 \r
53     this.ap = ap;\r
54     sequence = seq;\r
55 \r
56     ButtonGroup colours = new ButtonGroup();\r
57     colours.add(noColourmenuItem);\r
58     colours.add(clustalColour);\r
59     colours.add(zappoColour);\r
60     colours.add(taylorColour);\r
61     colours.add(hydrophobicityColour);\r
62     colours.add(helixColour);\r
63     colours.add(strandColour);\r
64     colours.add(turnColour);\r
65     colours.add(buriedColour);\r
66     colours.add(abovePIDColour);\r
67     colours.add(userDefinedColour);\r
68     colours.add(PIDColour);\r
69     colours.add(BLOSUM62Colour);\r
70 \r
71     try\r
72     {     jbInit();   }\r
73     catch(Exception e)\r
74     {    e.printStackTrace();    }\r
75 \r
76     SequenceGroup sg = ap.av.getRubberbandGroup();\r
77     if(sg!=null)\r
78     {\r
79       groupName.setText(sg.getName());\r
80       if(sg.cs instanceof ZappoColourScheme)\r
81         zappoColour.setSelected(true);\r
82       else if(sg.cs instanceof TaylorColourScheme)\r
83         taylorColour.setSelected(true);\r
84       else if (sg.cs instanceof PIDColourScheme)\r
85         PIDColour.setSelected(true);\r
86       else if (sg.cs instanceof Blosum62ColourScheme)\r
87         BLOSUM62Colour.setSelected(true);\r
88       else if (sg.cs instanceof UserColourScheme)\r
89         userDefinedColour.setSelected(true);\r
90       else if (sg.cs instanceof HydrophobicColourScheme)\r
91         hydrophobicityColour.setSelected(true);\r
92       else if (sg.cs instanceof HelixColourScheme)\r
93         helixColour.setSelected(true);\r
94       else if (sg.cs instanceof StrandColourScheme)\r
95         strandColour.setSelected(true);\r
96       else if (sg.cs instanceof TurnColourScheme)\r
97         turnColour.setSelected(true);\r
98       else if (sg.cs instanceof BuriedColourScheme)\r
99         buriedColour.setSelected(true);\r
100       else if (sg.cs instanceof ClustalxColourScheme)\r
101         clustalColour.setSelected(true);\r
102       else\r
103         noColourmenuItem.setSelected(true);\r
104 \r
105       if (sg.cs instanceof ConservationColourScheme)\r
106         conservationMenuItem.setSelected(true);\r
107 \r
108     }\r
109 \r
110     if(seq!=null)\r
111     {\r
112       residueMenu.setVisible(false);\r
113       sequenceName.setText( sequence.getName() );\r
114     }\r
115     else\r
116       sequenceMenu.setVisible(false);\r
117 \r
118   }\r
119   private void jbInit() throws Exception\r
120   {\r
121     groupMenu.setText("Group");\r
122     copyGroup.setText("Copy region to new Alignment");\r
123     copyGroup.addActionListener(new java.awt.event.ActionListener()\r
124     {\r
125       public void actionPerformed(ActionEvent e)\r
126       {\r
127         copyGroup_actionPerformed(e);\r
128       }\r
129     });\r
130     moveGroup.setText("Move sequences to new Alignment");\r
131     moveGroup.addActionListener(new java.awt.event.ActionListener()\r
132     {\r
133       public void actionPerformed(ActionEvent e)\r
134       {\r
135         moveGroup_actionPerformed(e);\r
136       }\r
137     });\r
138     deleteSequences.setText("Delete sequences");\r
139     deleteSequences.addActionListener(new java.awt.event.ActionListener()\r
140     {\r
141       public void actionPerformed(ActionEvent e)\r
142       {\r
143         deleteSequences_actionPerformed(e);\r
144       }\r
145     });\r
146     analyze.setText("Analyze");\r
147     analyze.addActionListener(new java.awt.event.ActionListener()\r
148     {\r
149       public void actionPerformed(ActionEvent e)\r
150       {\r
151         analyze_actionPerformed(e);\r
152       }\r
153     });\r
154     defineMenu.setText("Define");\r
155     groupName.setText("Name");\r
156     groupName.addActionListener(new java.awt.event.ActionListener()\r
157     {\r
158       public void actionPerformed(ActionEvent e)\r
159       {\r
160         groupName_actionPerformed(e);\r
161       }\r
162     });\r
163     groupAnnotation.setText("Annotation");\r
164     groupAnnotation.addActionListener(new java.awt.event.ActionListener()\r
165     {\r
166       public void actionPerformed(ActionEvent e)\r
167       {\r
168         groupAnnotation_actionPerformed(e);\r
169       }\r
170     });\r
171     sequenceMenu.setText("Sequence");\r
172     sequenceName.setText("sequenceName");\r
173     sequenceName.addActionListener(new java.awt.event.ActionListener()\r
174     {\r
175       public void actionPerformed(ActionEvent e)\r
176       {\r
177         sequenceName_actionPerformed(e);\r
178       }\r
179     });\r
180     residueMenu.setText("Residue");\r
181     annotateResidue.setText("annotate residue???");\r
182     PIDColour.setFocusPainted(false);\r
183     add(groupMenu);\r
184     this.add(sequenceMenu);\r
185     this.add(residueMenu);\r
186     groupMenu.add(defineMenu);\r
187     groupMenu.addSeparator();\r
188     groupMenu.add(copyGroup);\r
189     groupMenu.add(moveGroup);\r
190     groupMenu.add(deleteSequences);\r
191     groupMenu.addSeparator();\r
192     groupMenu.add(analyze);\r
193     defineMenu.add(groupName);\r
194     defineMenu.add(groupAnnotation);\r
195     defineMenu.addSeparator();\r
196     defineMenu.add(noColourmenuItem);\r
197     defineMenu.add(clustalColour);\r
198     defineMenu.add(zappoColour);\r
199     defineMenu.add(taylorColour);\r
200     defineMenu.add(hydrophobicityColour);\r
201     defineMenu.add(helixColour);\r
202     defineMenu.add(strandColour);\r
203     defineMenu.add(turnColour);\r
204     defineMenu.add(buriedColour);\r
205     defineMenu.add(userDefinedColour);\r
206     defineMenu.add(PIDColour);\r
207     defineMenu.add(BLOSUM62Colour);\r
208     defineMenu.addSeparator();\r
209     defineMenu.add(abovePIDColour);\r
210     defineMenu.add(conservationMenuItem);\r
211 \r
212     sequenceMenu.add(sequenceName);\r
213     residueMenu.add(annotateResidue);\r
214 \r
215     noColourmenuItem.setText("None");\r
216     noColourmenuItem.addActionListener(new java.awt.event.ActionListener()\r
217     {\r
218       public void actionPerformed(ActionEvent e)\r
219       {\r
220         noColourmenuItem_actionPerformed(e);\r
221       }\r
222     });\r
223 \r
224     clustalColour.setText("Clustalx colours");\r
225     clustalColour.addActionListener(new java.awt.event.ActionListener()\r
226     {\r
227       public void actionPerformed(ActionEvent e)\r
228       {\r
229         clustalColour_actionPerformed(e);\r
230       }\r
231     });\r
232     zappoColour.setText("Zappo colour scheme");\r
233     zappoColour.addActionListener(new java.awt.event.ActionListener()\r
234     {\r
235       public void actionPerformed(ActionEvent e)\r
236       {\r
237         zappoColour_actionPerformed(e);\r
238       }\r
239     });\r
240     taylorColour.setText("Taylor colour scheme");\r
241     taylorColour.addActionListener(new java.awt.event.ActionListener()\r
242     {\r
243       public void actionPerformed(ActionEvent e)\r
244       {\r
245         taylorColour_actionPerformed(e);\r
246       }\r
247     });\r
248     hydrophobicityColour.setText("By hydrophobicity");\r
249     hydrophobicityColour.addActionListener(new java.awt.event.ActionListener()\r
250     {\r
251       public void actionPerformed(ActionEvent e)\r
252       {\r
253         hydrophobicityColour_actionPerformed(e);\r
254       }\r
255     });\r
256     helixColour.setText("Helix propensity");\r
257     helixColour.addActionListener(new java.awt.event.ActionListener()\r
258     {\r
259       public void actionPerformed(ActionEvent e)\r
260       {\r
261         helixColour_actionPerformed(e);\r
262       }\r
263     });\r
264     strandColour.setText("Strand propensity");\r
265     strandColour.addActionListener(new java.awt.event.ActionListener()\r
266     {\r
267       public void actionPerformed(ActionEvent e)\r
268       {\r
269         strandColour_actionPerformed(e);\r
270       }\r
271     });\r
272     turnColour.setText("Turn propensity");\r
273     turnColour.addActionListener(new java.awt.event.ActionListener()\r
274     {\r
275       public void actionPerformed(ActionEvent e)\r
276       {\r
277         turnColour_actionPerformed(e);\r
278       }\r
279     });\r
280     buriedColour.setText("Buried index");\r
281     buriedColour.addActionListener(new java.awt.event.ActionListener()\r
282     {\r
283       public void actionPerformed(ActionEvent e)\r
284       {\r
285         buriedColour_actionPerformed(e);\r
286       }\r
287     });\r
288     abovePIDColour.setText("Above PID threshold only");\r
289     abovePIDColour.addActionListener(new java.awt.event.ActionListener()\r
290     {\r
291       public void actionPerformed(ActionEvent e)\r
292       {\r
293         abovePIDColour_actionPerformed(e);\r
294       }\r
295     });\r
296     userDefinedColour.setText("User defined colours");\r
297     userDefinedColour.addActionListener(new java.awt.event.ActionListener()\r
298     {\r
299       public void actionPerformed(ActionEvent e)\r
300       {\r
301         userDefinedColour_actionPerformed(e);\r
302       }\r
303     });\r
304     PIDColour.setText("Percentage Identity");\r
305     PIDColour.addActionListener(new java.awt.event.ActionListener()\r
306     {\r
307       public void actionPerformed(ActionEvent e)\r
308       {\r
309         PIDColour_actionPerformed(e);\r
310       }\r
311     });\r
312     BLOSUM62Colour.setText("BLOSUM62 score");\r
313     BLOSUM62Colour.addActionListener(new java.awt.event.ActionListener()\r
314     {\r
315       public void actionPerformed(ActionEvent e)\r
316       {\r
317         BLOSUM62Colour_actionPerformed(e);\r
318       }\r
319     });\r
320     conservationMenuItem.setText("By conservation");\r
321    conservationMenuItem.addActionListener(new java.awt.event.ActionListener()\r
322    {\r
323      public void actionPerformed(ActionEvent e)\r
324      {\r
325        conservationMenuItem_actionPerformed(e);\r
326      }\r
327    });\r
328 \r
329 \r
330 \r
331   }\r
332 \r
333   void refresh()\r
334   {\r
335     ap.seqPanel.seqCanvas.paintFlag=true;\r
336     ap.seqPanel.repaint();\r
337   }\r
338 \r
339   protected void clustalColour_actionPerformed(ActionEvent e)\r
340   {\r
341     getGroup().cs = new ClustalxColourScheme();\r
342     refresh();\r
343   }\r
344 \r
345   protected void zappoColour_actionPerformed(ActionEvent e)\r
346   {\r
347     getGroup().cs = new ZappoColourScheme();\r
348     refresh();\r
349   }\r
350 \r
351   protected void taylorColour_actionPerformed(ActionEvent e)\r
352   {\r
353     getGroup().cs = new TaylorColourScheme();\r
354     refresh();\r
355   }\r
356 \r
357 \r
358   protected void hydrophobicityColour_actionPerformed(ActionEvent e)\r
359   {\r
360     getGroup().cs = new HydrophobicColourScheme();\r
361     refresh();\r
362   }\r
363 \r
364   protected void helixColour_actionPerformed(ActionEvent e)\r
365   {\r
366     getGroup().cs = new HelixColourScheme();\r
367     refresh();\r
368   }\r
369 \r
370   protected void strandColour_actionPerformed(ActionEvent e)\r
371   {\r
372     getGroup().cs = new StrandColourScheme();\r
373     refresh();\r
374   }\r
375 \r
376   protected void turnColour_actionPerformed(ActionEvent e)\r
377   {\r
378     getGroup().cs = new TurnColourScheme();\r
379     refresh();\r
380   }\r
381 \r
382   protected void buriedColour_actionPerformed(ActionEvent e)\r
383   {\r
384     getGroup().cs = new BuriedColourScheme();\r
385     refresh();\r
386   }\r
387 \r
388 \r
389 /*\r
390 public void conservationColourIncMenuItem_actionPerformed(ActionEvent e)\r
391 {\r
392 ConservationIncrementPanel cip = new ConservationIncrementPanel(viewport, alignPanel);\r
393 JInternalFrame frame = new JInternalFrame();\r
394 frame.setContentPane(cip);\r
395 Desktop.addInternalFrame(frame, "Conservation Colour Increment", 400,90);\r
396 frame.setMaximizable(false);\r
397 \r
398  }*/\r
399 \r
400 \r
401   protected void abovePIDColour_actionPerformed(ActionEvent e)\r
402   {\r
403     SliderPanel sp = new SliderPanel(ap, 70, false, getGroup().cs );\r
404     JInternalFrame frame = new JInternalFrame();\r
405     frame.setContentPane(sp);\r
406     Desktop.addInternalFrame(frame, "Percentage Identity Threshold ("+getGroup().getName()+")" , 400,90);\r
407     frame.setMaximizable(false);\r
408 \r
409   }\r
410 \r
411 \r
412   protected void userDefinedColour_actionPerformed(ActionEvent e)\r
413   {\r
414     JInternalFrame frame = new JInternalFrame();\r
415     UserDefinedColours chooser = new UserDefinedColours( frame, ap, getGroup());\r
416     frame.setContentPane(chooser);\r
417     Desktop.addInternalFrame(frame,"User defined colours ("+getGroup().getName()+")", 450,540 );\r
418     frame.setResizable(false);\r
419     frame.setIconifiable(false);\r
420     frame.setMaximizable(false);\r
421 \r
422   }\r
423 \r
424   protected void PIDColour_actionPerformed(ActionEvent e)\r
425   {\r
426 \r
427   }\r
428 \r
429   protected void BLOSUM62Colour_actionPerformed(ActionEvent e)\r
430   {\r
431     getGroup().cs = new Blosum62ColourScheme(ap.av);\r
432     refresh();\r
433   }\r
434 \r
435 \r
436   protected void noColourmenuItem_actionPerformed(ActionEvent e)\r
437   {\r
438     getGroup().cs = null;\r
439     refresh();\r
440   }\r
441 \r
442   protected  void conservationMenuItem_actionPerformed(ActionEvent e)\r
443   {\r
444     SequenceGroup sg = getGroup();\r
445 \r
446     Conservation c = new Conservation("Group",\r
447                           ResidueProperties.propHash, 3, sg.sequences, sg.getStartRes(),\r
448                           sg.getEndRes() );\r
449 \r
450      c.calculate();\r
451      c.verdict(false, 100);\r
452      ConservationColourScheme ccs = new ConservationColourScheme(c, sg.cs);\r
453 \r
454      sg.cs = ccs;\r
455 \r
456      refresh();\r
457   }\r
458 \r
459 /*\r
460   protected void noColourmenuItem_actionPerformed(ActionEvent e)\r
461   {\r
462     viewport.setGlobalColourScheme( null );\r
463     changeColour();\r
464   }\r
465 \r
466 \r
467   public void clustalColour_actionPerformed(ActionEvent e)\r
468   {\r
469     viewport.setGlobalColourScheme(new ClustalxColourScheme( ));\r
470     conservationMenuItem.setSelected(false);\r
471     abovePIDThreshold.setSelected(false);\r
472     changeColour();\r
473   }\r
474 \r
475   public void zappoColour_actionPerformed(ActionEvent e)\r
476   {\r
477     viewport.setGlobalColourScheme(new ZappoColourScheme() );\r
478     changeColour();\r
479   }\r
480 \r
481   public void taylorColour_actionPerformed(ActionEvent e)\r
482   {\r
483     viewport.setGlobalColourScheme(new TaylorColourScheme() );\r
484     changeColour();\r
485   }\r
486 \r
487 \r
488   public void hydrophobicityColour_actionPerformed(ActionEvent e)\r
489   {\r
490     viewport.setGlobalColourScheme( new HydrophobicColourScheme() );\r
491     changeColour();\r
492   }\r
493 \r
494   public void helixColour_actionPerformed(ActionEvent e)\r
495   {\r
496     viewport.setGlobalColourScheme( new HelixColourScheme()  );\r
497     changeColour();\r
498   }\r
499 \r
500 \r
501   public void strandColour_actionPerformed(ActionEvent e)\r
502   {\r
503     viewport.setGlobalColourScheme(new StrandColourScheme() );\r
504     changeColour();\r
505   }\r
506 \r
507 \r
508   public void turnColour_actionPerformed(ActionEvent e)\r
509   {\r
510     viewport.setGlobalColourScheme(new TurnColourScheme() );\r
511     changeColour();\r
512   }\r
513 \r
514 \r
515   public void buriedColour_actionPerformed(ActionEvent e)\r
516   {\r
517     viewport.setGlobalColourScheme( new BuriedColourScheme() );\r
518     changeColour();\r
519   }\r
520 \r
521   void changeColour()\r
522   {\r
523     if(abovePIDThreshold.isSelected())\r
524       abovePIDThreshold_actionPerformed(null);\r
525     else if(conservationMenuItem.isSelected())\r
526       conservationMenuItem_actionPerformed(null);\r
527 \r
528      alignPanel.seqPanel.seqCanvas.paintFlag = true;\r
529      alignPanel.repaint();\r
530   }\r
531 \r
532   void addConservationOrPIDColour()\r
533   {\r
534     int x=0, y=0, threshold = 70;\r
535 \r
536     if(sliderFrame!=null)\r
537        try\r
538        {\r
539          x = sliderFrame.getX();\r
540          y = sliderFrame.getY();\r
541          SliderPanel sp = (SliderPanel) sliderFrame.getContentPane();\r
542          threshold = sp.getValue();\r
543          sliderFrame.setClosed(true);\r
544        }\r
545        catch (Exception ex)\r
546        {    ex.printStackTrace();   }\r
547 \r
548      ColourSchemeI oldCs = viewport.getGlobalColourScheme();\r
549 \r
550      ConservationColourScheme ccs = null;\r
551      if (oldCs instanceof ConservationColourScheme)\r
552        ccs = (ConservationColourScheme) oldCs;\r
553 \r
554      if(conservationMenuItem.isSelected())\r
555      {\r
556        Alignment al = (Alignment)viewport.alignment;\r
557        Conservation c = new Conservation("All",\r
558                             ResidueProperties.propHash, 3, al.getSequences(), 0,\r
559                             al.getWidth() );\r
560 \r
561        c.calculate();\r
562        c.verdict(false, 100);\r
563 \r
564        if(ccs!=null)\r
565          ccs = new ConservationColourScheme(c, ccs.cs);\r
566        else\r
567          ccs = new ConservationColourScheme(c, oldCs);\r
568 \r
569         viewport.setGlobalColourScheme( ccs );\r
570 \r
571      }\r
572      else if(oldCs instanceof ConservationColourScheme)\r
573      {\r
574        oldCs = ccs.cs;\r
575        viewport.setGlobalColourScheme( oldCs );\r
576      }\r
577 \r
578 \r
579      if( conservationMenuItem.isSelected() || abovePIDThreshold.isSelected() )\r
580      {\r
581        sliderFrame = new JInternalFrame();\r
582        sliderFrame.setMaximizable(false);\r
583        sliderFrame.setResizable(false);\r
584 \r
585        SliderPanel sp = null;\r
586        if (conservationMenuItem.isSelected())\r
587        {\r
588         if(threshold > 50)\r
589           threshold = 30;\r
590         sp = new SliderPanel(alignPanel, threshold, true,ccs);\r
591         Desktop.addInternalFrame(sliderFrame, "Conservation Colour Increment  (Global colour)", 400, 90);\r
592         threshold = 0;\r
593        }\r
594        else if (abovePIDThreshold.isSelected())\r
595        {\r
596          sp = new SliderPanel(alignPanel, threshold, false, oldCs);\r
597          sp.cs = oldCs;\r
598          Desktop.addInternalFrame(sliderFrame, "Percentage Identity Threshold (Global colour)", 400, 90);\r
599        }\r
600 \r
601        sliderFrame.setContentPane(sp);\r
602        if(x!=0 && y!=0)\r
603                sliderFrame.setLocation(x,y);\r
604 \r
605      }\r
606      else\r
607        threshold = 0;\r
608 \r
609 \r
610      if (oldCs instanceof ResidueColourScheme)\r
611      {\r
612        ResidueColourScheme rcs = (ResidueColourScheme) oldCs;\r
613        rcs.setThreshold(threshold);\r
614      }\r
615      else if (oldCs instanceof ScoreColourScheme)\r
616      {\r
617        ScoreColourScheme scs = (ScoreColourScheme) oldCs;\r
618        scs.setThreshold(threshold);\r
619      }\r
620 \r
621      alignPanel.seqPanel.seqCanvas.paintFlag = true;\r
622      alignPanel.repaint();\r
623 \r
624   }\r
625 \r
626   protected  void conservationMenuItem_actionPerformed(ActionEvent e)\r
627   {\r
628    if(abovePIDThreshold.isSelected())\r
629     abovePIDThreshold.setSelected(false);\r
630 \r
631    viewport.setConservationSelected(conservationMenuItem.isSelected());\r
632 \r
633    addConservationOrPIDColour();\r
634   }\r
635 \r
636   JInternalFrame sliderFrame;\r
637   public void abovePIDThreshold_actionPerformed(ActionEvent e)\r
638   {\r
639       if(conservationMenuItem.isSelected())\r
640         conservationMenuItem.setSelected(false);\r
641 \r
642       addConservationOrPIDColour();\r
643   }\r
644 \r
645 \r
646 \r
647   public void userDefinedColour_actionPerformed(ActionEvent e)\r
648   {\r
649     JInternalFrame frame = new JInternalFrame();\r
650     UserDefinedColours chooser = new UserDefinedColours( frame, alignPanel, null);\r
651     frame.setContentPane(chooser);\r
652     Desktop.addInternalFrame(frame,"User defined colours", 450,540 );\r
653     frame.setResizable(false);\r
654     frame.setIconifiable(false);\r
655     frame.setMaximizable(false);\r
656   }\r
657 \r
658   public void PIDColour_actionPerformed(ActionEvent e)\r
659   {\r
660     viewport.setGlobalColourScheme( new PIDColourScheme() );\r
661     alignPanel.setColourScheme( );\r
662   }\r
663 \r
664 \r
665   public void BLOSUM62Colour_actionPerformed(ActionEvent e)\r
666   {\r
667     viewport.setGlobalColourScheme( new Blosum62ColourScheme(viewport)  );\r
668     alignPanel.setColourScheme();\r
669   }\r
670 */\r
671 //////////////////////////////////////\r
672   protected void groupAnnotation_actionPerformed(ActionEvent e)\r
673   {\r
674 \r
675   }\r
676 \r
677   protected void groupName_actionPerformed(ActionEvent e)\r
678   {\r
679     SequenceGroup sg = getGroup();\r
680     String reply = JOptionPane.showInternalInputDialog(Desktop.desktop, "Enter new group name", "Edit group name", JOptionPane.QUESTION_MESSAGE);\r
681     if(reply==null)\r
682       return;\r
683 \r
684     sg.setName(reply);\r
685     groupName.setText(reply);\r
686   }\r
687 \r
688   protected void copyGroup_actionPerformed(ActionEvent e)\r
689   {\r
690     SequenceGroup sg = ap.av.getRubberbandGroup();\r
691 \r
692     SequenceI[] s = new Sequence[sg.sequences.size()];\r
693      for (int i=0; i < sg.sequences.size(); i++)\r
694      {\r
695        s[i] = new Sequence( sg.getSequenceAt(i));\r
696        s[i].setSequence( s[i].getSequence(sg.getStartRes(), sg.getEndRes()+1) );\r
697      }\r
698      AlignFrame af = new AlignFrame(new Alignment(s));\r
699      int newHeight = s.length * af.viewport.getCharHeight() + 200;\r
700      if (newHeight > 500)\r
701        newHeight = 500;\r
702      Desktop.addInternalFrame(af, "Copied sequences", 700, newHeight);\r
703    }\r
704 \r
705   protected  void moveGroup_actionPerformed(ActionEvent e)\r
706   {\r
707     SequenceGroup sg = ap.av.getRubberbandGroup();\r
708 \r
709     SequenceI[] s = new Sequence[sg.sequences.size()];\r
710 \r
711      for (int i=0; i < sg.sequences.size(); i++)\r
712        s[i] = new Sequence( sg.getSequenceAt(i));\r
713 \r
714      AlignFrame af = new AlignFrame(new Alignment(s));\r
715      int newHeight = s.length * af.viewport.getCharHeight() + 200;\r
716      if(newHeight>500)\r
717        newHeight=500;\r
718      Desktop.addInternalFrame(af, "Copied sequences", 700,newHeight);\r
719 \r
720 \r
721      for (int i=0; i < sg.sequences.size(); i++)\r
722        ap.av.alignment.deleteSequence(sg.getSequenceAt(i));\r
723 \r
724 \r
725      ap.av.resetSeqLimits(ap.seqPanel.seqCanvas.getHeight());\r
726      ap.RefreshPanels();\r
727 \r
728 \r
729   }\r
730 \r
731   protected void deleteSequences_actionPerformed(ActionEvent e)\r
732   {\r
733     SequenceGroup sg = ap.av.getRubberbandGroup();\r
734     for (int i=0;i < sg.sequences.size(); i++)\r
735             ap.av.getAlignment().deleteSequence(sg.getSequenceAt(i));\r
736 \r
737     ap.av.alignment.deleteGroup(sg);\r
738     ap.av.resetSeqLimits(ap.seqPanel.seqCanvas.getHeight());\r
739     ap.seqPanel.parent.RefreshPanels();\r
740 \r
741   }\r
742 \r
743   protected void analyze_actionPerformed(ActionEvent e)\r
744   {\r
745      CutAndPasteTransfer cap = new CutAndPasteTransfer(false);\r
746      JInternalFrame frame = new JInternalFrame();\r
747      cap.formatForOutput();\r
748      frame.setContentPane(cap);\r
749      Desktop.addInternalFrame(frame, "Analyze this - ", 400, 300);\r
750      SequenceGroup sg = getGroup();\r
751      StringBuffer sb = new StringBuffer();\r
752 \r
753      for(int i=0; i<sg.sequences.size(); i++)\r
754      {\r
755        Sequence tmp = (Sequence)sg.sequences.get(i);\r
756        sb.append(  tmp.getSequence(sg.getStartRes(), sg.getEndRes()+1));\r
757        sb.append("\n");\r
758      }\r
759 \r
760      sb.append("Something amazing will happen soon");\r
761      cap.setText( sb.toString() );\r
762 \r
763   }\r
764 \r
765   SequenceGroup getGroup()\r
766   {\r
767     SequenceGroup sg = ap.av.getRubberbandGroup();\r
768 \r
769     // this method won't add a new group if it already exists\r
770     ap.av.alignment.addGroup(sg);\r
771     return sg;\r
772   }\r
773 \r
774   void sequenceName_actionPerformed(ActionEvent e)\r
775   {\r
776     String id = sequence.getName();\r
777     String s = (String)JOptionPane.showInternalInputDialog(\r
778                 ap,\r
779                 "Edit sequence name",\r
780                 "Edit sequence name",\r
781                 JOptionPane.PLAIN_MESSAGE,\r
782                 null,\r
783                 null,\r
784                 id);\r
785 \r
786     if(s!=null)\r
787     {\r
788       sequence.setName(s);\r
789       ap.RefreshPanels();\r
790     }\r
791 \r
792   }\r
793 }\r