JAL-2383 restore PID colour threshold from project; enable/disable
[jalview.git] / src / jalview / jbgui / GAlignFrame.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3  * Copyright (C) $$Year-Rel$$ The Jalview Authors
4  * 
5  * This file is part of Jalview.
6  * 
7  * Jalview is free software: you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License 
9  * as published by the Free Software Foundation, either version 3
10  * of the License, or (at your option) any later version.
11  *  
12  * Jalview is distributed in the hope that it will be useful, but 
13  * WITHOUT ANY WARRANTY; without even the implied warranty 
14  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
15  * PURPOSE.  See the GNU General Public License for more details.
16  * 
17  * You should have received a copy of the GNU General Public License
18  * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
19  * The Jalview Authors are detailed in the 'AUTHORS' file.
20  */
21 package jalview.jbgui;
22
23 import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder;
24 import jalview.api.SplitContainerI;
25 import jalview.bin.Cache;
26 import jalview.gui.JvOptionPane;
27 import jalview.gui.JvSwingUtils;
28 import jalview.gui.Preferences;
29 import jalview.io.FileFormats;
30 import jalview.schemes.ColourSchemeProperty;
31 import jalview.util.MessageManager;
32
33 import java.awt.BorderLayout;
34 import java.awt.Color;
35 import java.awt.GridLayout;
36 import java.awt.Toolkit;
37 import java.awt.event.ActionEvent;
38 import java.awt.event.ActionListener;
39 import java.awt.event.FocusAdapter;
40 import java.awt.event.FocusEvent;
41 import java.awt.event.KeyEvent;
42 import java.awt.event.MouseAdapter;
43 import java.awt.event.MouseEvent;
44 import java.util.HashMap;
45 import java.util.Map;
46
47 import javax.swing.BorderFactory;
48 import javax.swing.ButtonGroup;
49 import javax.swing.JCheckBoxMenuItem;
50 import javax.swing.JInternalFrame;
51 import javax.swing.JLabel;
52 import javax.swing.JMenu;
53 import javax.swing.JMenuBar;
54 import javax.swing.JMenuItem;
55 import javax.swing.JPanel;
56 import javax.swing.JRadioButtonMenuItem;
57 import javax.swing.JTabbedPane;
58 import javax.swing.KeyStroke;
59 import javax.swing.event.ChangeEvent;
60 import javax.swing.event.MenuEvent;
61 import javax.swing.event.MenuListener;
62
63 public class GAlignFrame extends JInternalFrame
64 {
65   protected JMenuBar alignFrameMenuBar = new JMenuBar();
66
67   protected JMenuItem closeMenuItem = new JMenuItem();
68
69   protected JMenu colourMenu = new JMenu();
70
71   protected JMenu webService = new JMenu();
72
73   protected JMenuItem webServiceNoServices;
74
75   public JCheckBoxMenuItem viewBoxesMenuItem = new JCheckBoxMenuItem();
76
77   public JCheckBoxMenuItem viewTextMenuItem = new JCheckBoxMenuItem();
78
79   protected JMenu sortByAnnotScore = new JMenu();
80
81   public JLabel statusBar = new JLabel();
82
83   protected JMenu outputTextboxMenu = new JMenu();
84
85   protected JRadioButtonMenuItem clustalColour = new JRadioButtonMenuItem();
86
87   protected JRadioButtonMenuItem zappoColour = new JRadioButtonMenuItem();
88
89   protected JRadioButtonMenuItem taylorColour = new JRadioButtonMenuItem();
90
91   protected JRadioButtonMenuItem hydrophobicityColour = new JRadioButtonMenuItem();
92
93   protected JRadioButtonMenuItem helixColour = new JRadioButtonMenuItem();
94
95   protected JRadioButtonMenuItem strandColour = new JRadioButtonMenuItem();
96
97   protected JRadioButtonMenuItem turnColour = new JRadioButtonMenuItem();
98
99   protected JRadioButtonMenuItem buriedColour = new JRadioButtonMenuItem();
100
101   protected JRadioButtonMenuItem userDefinedColour = new JRadioButtonMenuItem();
102
103   protected JRadioButtonMenuItem PIDColour = new JRadioButtonMenuItem();
104
105   protected JRadioButtonMenuItem BLOSUM62Colour = new JRadioButtonMenuItem();
106
107   protected JRadioButtonMenuItem nucleotideColour = new JRadioButtonMenuItem();
108
109   protected JRadioButtonMenuItem purinePyrimidineColour = new JRadioButtonMenuItem();
110
111   protected JRadioButtonMenuItem RNAInteractionColour = new JRadioButtonMenuItem();
112
113   // protected JRadioButtonMenuItem covariationColour = new
114   // JRadioButtonMenuItem();
115
116   protected JRadioButtonMenuItem tcoffeeColour = new JRadioButtonMenuItem();
117
118   public JCheckBoxMenuItem annotationPanelMenuItem = new JCheckBoxMenuItem();
119
120   public JCheckBoxMenuItem colourTextMenuItem = new JCheckBoxMenuItem();
121
122   public JCheckBoxMenuItem showNonconservedMenuItem = new JCheckBoxMenuItem();
123
124   protected JMenuItem undoMenuItem = new JMenuItem();
125
126   protected JMenuItem redoMenuItem = new JMenuItem();
127
128   public JCheckBoxMenuItem conservationMenuItem = new JCheckBoxMenuItem();
129
130   JRadioButtonMenuItem noColourmenuItem = new JRadioButtonMenuItem();
131
132   public JCheckBoxMenuItem wrapMenuItem = new JCheckBoxMenuItem();
133
134   public JCheckBoxMenuItem renderGapsMenuItem = new JCheckBoxMenuItem();
135
136   public JCheckBoxMenuItem abovePIDThreshold = new JCheckBoxMenuItem();
137
138   public JCheckBoxMenuItem showSeqFeatures = new JCheckBoxMenuItem();
139
140   JMenuItem copy = new JMenuItem();
141
142   JMenuItem cut = new JMenuItem();
143
144   JMenu pasteMenu = new JMenu();
145
146   public JCheckBoxMenuItem applyToAllGroups = new JCheckBoxMenuItem();
147
148   public JCheckBoxMenuItem seqLimits = new JCheckBoxMenuItem();
149
150   public JCheckBoxMenuItem scaleAbove = new JCheckBoxMenuItem();
151
152   public JCheckBoxMenuItem scaleLeft = new JCheckBoxMenuItem();
153
154   public JCheckBoxMenuItem scaleRight = new JCheckBoxMenuItem();
155
156   protected JMenuItem modifyConservation = new JMenuItem();
157
158   protected JMenuItem modifyPID = new JMenuItem();
159
160   protected JMenu sortByTreeMenu = new JMenu();
161
162   protected JMenu sort = new JMenu();
163
164   protected JMenu calculateTree = new JMenu();
165
166   protected JCheckBoxMenuItem padGapsMenuitem = new JCheckBoxMenuItem();
167
168   protected JCheckBoxMenuItem showNpFeatsMenuitem = new JCheckBoxMenuItem();
169
170   protected JCheckBoxMenuItem showDbRefsMenuitem = new JCheckBoxMenuItem();
171
172   protected ButtonGroup colours = new ButtonGroup();
173
174   protected JMenuItem showTranslation = new JMenuItem();
175
176   protected JMenuItem showReverse = new JMenuItem();
177
178   protected JMenuItem showReverseComplement = new JMenuItem();
179
180   protected JMenu showProducts = new JMenu();
181
182   protected JMenuItem runGroovy = new JMenuItem();
183
184   protected JMenuItem rnahelicesColour = new JMenuItem();
185
186   protected JCheckBoxMenuItem autoCalculate = new JCheckBoxMenuItem();
187
188   protected JCheckBoxMenuItem sortByTree = new JCheckBoxMenuItem();
189
190   protected JCheckBoxMenuItem listenToViewSelections = new JCheckBoxMenuItem();
191
192   protected JPanel statusPanel = new JPanel();
193
194   protected JMenuItem showAllSeqAnnotations = new JMenuItem();
195
196   protected JMenuItem hideAllSeqAnnotations = new JMenuItem();
197
198   protected JMenuItem showAllAlAnnotations = new JMenuItem();
199
200   protected JMenuItem hideAllAlAnnotations = new JMenuItem();
201
202   protected JCheckBoxMenuItem showComplementMenuItem = new JCheckBoxMenuItem();
203
204   protected JCheckBoxMenuItem hiddenMarkers = new JCheckBoxMenuItem();
205
206   protected JTabbedPane tabbedPane = new JTabbedPane();
207
208   protected JMenuItem reload = new JMenuItem();
209
210   protected JMenu formatMenu = new JMenu();
211
212   protected JCheckBoxMenuItem idRightAlign = new JCheckBoxMenuItem();
213
214   protected JCheckBoxMenuItem centreColumnLabelsMenuItem = new JCheckBoxMenuItem();
215
216   protected JCheckBoxMenuItem followHighlightMenuItem = new JCheckBoxMenuItem();
217
218   protected JMenuItem gatherViews = new JMenuItem();
219
220   protected JMenuItem expandViews = new JMenuItem();
221
222   protected JCheckBoxMenuItem showGroupConsensus = new JCheckBoxMenuItem();
223
224   protected JCheckBoxMenuItem showGroupConservation = new JCheckBoxMenuItem();
225
226   protected JCheckBoxMenuItem showConsensusHistogram = new JCheckBoxMenuItem();
227
228   protected JCheckBoxMenuItem showSequenceLogo = new JCheckBoxMenuItem();
229
230   protected JCheckBoxMenuItem normaliseSequenceLogo = new JCheckBoxMenuItem();
231
232   protected JCheckBoxMenuItem applyAutoAnnotationSettings = new JCheckBoxMenuItem();
233
234   private SequenceAnnotationOrder annotationSortOrder;
235
236   private boolean showAutoCalculatedAbove = false;
237
238   private Map<KeyStroke, JMenuItem> accelerators = new HashMap<KeyStroke, JMenuItem>();
239
240   private SplitContainerI splitFrame;
241
242   public GAlignFrame()
243   {
244     try
245     {
246       jbInit();
247       setJMenuBar(alignFrameMenuBar);
248
249       // dynamically fill save as menu with available formats
250       for (String ff : FileFormats.getInstance().getWritableFormats(true))
251       {
252         JMenuItem item = new JMenuItem(ff);
253
254         item.addActionListener(new ActionListener()
255         {
256           @Override
257           public void actionPerformed(ActionEvent e)
258           {
259             outputText_actionPerformed(e);
260           }
261         });
262
263         outputTextboxMenu.add(item);
264       }
265     } catch (Exception e)
266     {
267       System.err.println(e.toString());
268     }
269
270     if (!jalview.util.Platform.isAMac())
271     {
272       closeMenuItem.setMnemonic('C');
273       outputTextboxMenu.setMnemonic('T');
274       undoMenuItem.setMnemonic('Z');
275       redoMenuItem.setMnemonic('0');
276       copy.setMnemonic('C');
277       cut.setMnemonic('U');
278       pasteMenu.setMnemonic('P');
279       reload.setMnemonic('R');
280     }
281
282     if (jalview.gui.UserDefinedColours.getUserColourSchemes() != null)
283     {
284       java.util.Enumeration userColours = jalview.gui.UserDefinedColours
285               .getUserColourSchemes().keys();
286
287       while (userColours.hasMoreElements())
288       {
289         final JRadioButtonMenuItem radioItem = new JRadioButtonMenuItem(
290                 userColours.nextElement().toString());
291         radioItem.setName("USER_DEFINED");
292         radioItem.addMouseListener(new MouseAdapter()
293         {
294           @Override
295           public void mousePressed(MouseEvent evt)
296           {
297             if (evt.isPopupTrigger()) // Mac
298             {
299               offerRemoval(radioItem);
300             }
301           }
302
303           @Override
304           public void mouseReleased(MouseEvent evt)
305           {
306             if (evt.isPopupTrigger()) // Windows
307             {
308               offerRemoval(radioItem);
309             }
310           }
311
312           /**
313            * @param radioItem
314            */
315           void offerRemoval(final JRadioButtonMenuItem radioItem)
316           {
317             radioItem.removeActionListener(radioItem.getActionListeners()[0]);
318
319             int option = JvOptionPane.showInternalConfirmDialog(
320                     jalview.gui.Desktop.desktop, MessageManager
321                             .getString("label.remove_from_default_list"),
322                     MessageManager
323                             .getString("label.remove_user_defined_colour"),
324                     JvOptionPane.YES_NO_OPTION);
325             if (option == JvOptionPane.YES_OPTION)
326             {
327               jalview.gui.UserDefinedColours
328                       .removeColourFromDefaults(radioItem.getText());
329               colourMenu.remove(radioItem);
330             }
331             else
332             {
333               radioItem.addActionListener(new ActionListener()
334               {
335                 @Override
336                 public void actionPerformed(ActionEvent evt)
337                 {
338                   userDefinedColour_actionPerformed(evt);
339                 }
340               });
341             }
342           }
343         });
344         radioItem.addActionListener(new ActionListener()
345         {
346           @Override
347           public void actionPerformed(ActionEvent evt)
348           {
349             userDefinedColour_actionPerformed(evt);
350           }
351         });
352         colourMenu.insert(radioItem, 15);
353         colours.add(radioItem);
354       }
355     }
356     colours.add(noColourmenuItem);
357     colours.add(clustalColour);
358     colours.add(zappoColour);
359     colours.add(taylorColour);
360     colours.add(hydrophobicityColour);
361     colours.add(helixColour);
362     colours.add(strandColour);
363     colours.add(turnColour);
364     colours.add(buriedColour);
365     colours.add(userDefinedColour);
366     colours.add(PIDColour);
367     colours.add(BLOSUM62Colour);
368     colours.add(nucleotideColour);
369     colours.add(purinePyrimidineColour);
370     // colours.add(covariationColour);
371     colours.add(tcoffeeColour);
372     colours.add(RNAInteractionColour);
373     setColourSelected(jalview.bin.Cache.getDefault(
374             Preferences.DEFAULT_COLOUR, "None"));
375   }
376
377   public void setColourSelected(String defaultColour)
378   {
379
380     if (defaultColour != null)
381     {
382       int index = ColourSchemeProperty
383               .getColourIndexFromName(defaultColour);
384
385       switch (index)
386       {
387       case ColourSchemeProperty.CLUSTAL:
388         clustalColour.setSelected(true);
389
390         break;
391
392       case ColourSchemeProperty.BLOSUM:
393         BLOSUM62Colour.setSelected(true);
394
395         break;
396
397       case ColourSchemeProperty.PID:
398         PIDColour.setSelected(true);
399
400         break;
401
402       case ColourSchemeProperty.ZAPPO:
403         zappoColour.setSelected(true);
404
405         break;
406
407       case ColourSchemeProperty.TAYLOR:
408         taylorColour.setSelected(true);
409         break;
410
411       case ColourSchemeProperty.HYDROPHOBIC:
412         hydrophobicityColour.setSelected(true);
413
414         break;
415
416       case ColourSchemeProperty.HELIX:
417         helixColour.setSelected(true);
418
419         break;
420
421       case ColourSchemeProperty.STRAND:
422         strandColour.setSelected(true);
423
424         break;
425
426       case ColourSchemeProperty.TURN:
427         turnColour.setSelected(true);
428
429         break;
430
431       case ColourSchemeProperty.BURIED:
432         buriedColour.setSelected(true);
433
434         break;
435
436       case ColourSchemeProperty.NUCLEOTIDE:
437         nucleotideColour.setSelected(true);
438
439         break;
440
441       case ColourSchemeProperty.TCOFFEE:
442         tcoffeeColour.setSelected(true);
443         break;
444
445       case ColourSchemeProperty.PURINEPYRIMIDINE:
446         purinePyrimidineColour.setSelected(true);
447
448         break;
449
450       case ColourSchemeProperty.RNAINTERACTION:
451         RNAInteractionColour.setSelected(true);
452
453         break;
454       /*
455        * case ColourSchemeProperty.COVARIATION:
456        * covariationColour.setSelected(true);
457        * 
458        * break;
459        */
460       case ColourSchemeProperty.USER_DEFINED:
461         userDefinedColour.setSelected(true);
462
463         break;
464       case ColourSchemeProperty.NONE:
465       default:
466         noColourmenuItem.setSelected(true);
467         break;
468
469       }
470     }
471
472   }
473
474   private void jbInit() throws Exception
475   {
476     JMenuItem saveAs = new JMenuItem(
477             MessageManager.getString("action.save_as"));
478     ActionListener al = new ActionListener()
479     {
480       @Override
481       public void actionPerformed(ActionEvent e)
482       {
483         saveAs_actionPerformed(e);
484       }
485     };
486     KeyStroke keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_S, Toolkit
487             .getDefaultToolkit().getMenuShortcutKeyMask()
488             | KeyEvent.SHIFT_MASK, false);
489     addMenuActionAndAccelerator(keyStroke, saveAs, al);
490
491     closeMenuItem.setText(MessageManager.getString("action.close"));
492     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_W, Toolkit
493             .getDefaultToolkit().getMenuShortcutKeyMask(), false);
494     al = new ActionListener()
495     {
496       @Override
497       public void actionPerformed(ActionEvent e)
498       {
499         closeMenuItem_actionPerformed(false);
500       }
501     };
502     addMenuActionAndAccelerator(keyStroke, closeMenuItem, al);
503
504     JMenu editMenu = new JMenu(MessageManager.getString("action.edit"));
505     JMenu viewMenu = new JMenu(MessageManager.getString("action.view"));
506     JMenu annotationsMenu = new JMenu(
507             MessageManager.getString("action.annotations"));
508     JMenu showMenu = new JMenu(MessageManager.getString("action.show"));
509     colourMenu.setText(MessageManager.getString("action.colour"));
510     JMenu calculateMenu = new JMenu(
511             MessageManager.getString("action.calculate"));
512     webService.setText(MessageManager.getString("action.web_service"));
513     JMenuItem selectAllSequenceMenuItem = new JMenuItem(
514             MessageManager.getString("action.select_all"));
515     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_A, Toolkit
516             .getDefaultToolkit().getMenuShortcutKeyMask(), false);
517     al = new ActionListener()
518     {
519       @Override
520       public void actionPerformed(ActionEvent e)
521       {
522         selectAllSequenceMenuItem_actionPerformed(e);
523       }
524     };
525     addMenuActionAndAccelerator(keyStroke, selectAllSequenceMenuItem, al);
526
527     JMenuItem deselectAllSequenceMenuItem = new JMenuItem(
528             MessageManager.getString("action.deselect_all"));
529     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, false);
530     al = new ActionListener()
531     {
532       @Override
533       public void actionPerformed(ActionEvent e)
534       {
535         deselectAllSequenceMenuItem_actionPerformed(e);
536       }
537     };
538     addMenuActionAndAccelerator(keyStroke, deselectAllSequenceMenuItem, al);
539
540     JMenuItem invertSequenceMenuItem = new JMenuItem(
541             MessageManager.getString("action.invert_sequence_selection"));
542     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_I, Toolkit
543             .getDefaultToolkit().getMenuShortcutKeyMask(), false);
544     al = new ActionListener()
545     {
546       @Override
547       public void actionPerformed(ActionEvent e)
548       {
549         invertSequenceMenuItem_actionPerformed(e);
550       }
551     };
552     addMenuActionAndAccelerator(keyStroke, invertSequenceMenuItem, al);
553
554     JMenuItem grpsFromSelection = new JMenuItem(
555             MessageManager.getString("action.make_groups_selection"));
556     grpsFromSelection.addActionListener(new ActionListener()
557     {
558       @Override
559       public void actionPerformed(ActionEvent e)
560       {
561         makeGrpsFromSelection_actionPerformed(e);
562       }
563     });
564     JMenuItem expandAlignment = new JMenuItem(
565             MessageManager.getString("action.view_flanking_regions"));
566     expandAlignment.setToolTipText(MessageManager
567             .getString("label.view_flanking_regions"));
568     expandAlignment.addActionListener(new ActionListener()
569     {
570       @Override
571       public void actionPerformed(ActionEvent e)
572       {
573         expand_newalign(e);
574       }
575     });
576     JMenuItem remove2LeftMenuItem = new JMenuItem(
577             MessageManager.getString("action.remove_left"));
578     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_L, Toolkit
579             .getDefaultToolkit().getMenuShortcutKeyMask(), false);
580     al = new ActionListener()
581     {
582       @Override
583       public void actionPerformed(ActionEvent e)
584       {
585         remove2LeftMenuItem_actionPerformed(e);
586       }
587     };
588     addMenuActionAndAccelerator(keyStroke, remove2LeftMenuItem, al);
589
590     JMenuItem remove2RightMenuItem = new JMenuItem(
591             MessageManager.getString("action.remove_right"));
592     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_R, Toolkit
593             .getDefaultToolkit().getMenuShortcutKeyMask(), false);
594     al = new ActionListener()
595     {
596       @Override
597       public void actionPerformed(ActionEvent e)
598       {
599         remove2RightMenuItem_actionPerformed(e);
600       }
601     };
602     addMenuActionAndAccelerator(keyStroke, remove2RightMenuItem, al);
603
604     JMenuItem removeGappedColumnMenuItem = new JMenuItem(
605             MessageManager.getString("action.remove_empty_columns"));
606     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_E, Toolkit
607             .getDefaultToolkit().getMenuShortcutKeyMask(), false);
608     al = new ActionListener()
609     {
610       @Override
611       public void actionPerformed(ActionEvent e)
612       {
613         removeGappedColumnMenuItem_actionPerformed(e);
614       }
615     };
616     addMenuActionAndAccelerator(keyStroke, removeGappedColumnMenuItem, al);
617
618     JMenuItem removeAllGapsMenuItem = new JMenuItem(
619             MessageManager.getString("action.remove_all_gaps"));
620     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_E, Toolkit
621             .getDefaultToolkit().getMenuShortcutKeyMask()
622             | KeyEvent.SHIFT_MASK, false);
623     al = new ActionListener()
624     {
625       @Override
626       public void actionPerformed(ActionEvent e)
627       {
628         removeAllGapsMenuItem_actionPerformed(e);
629       }
630     };
631     addMenuActionAndAccelerator(keyStroke, removeAllGapsMenuItem, al);
632
633     JMenuItem justifyLeftMenuItem = new JMenuItem(
634             MessageManager.getString("action.left_justify_alignment"));
635     justifyLeftMenuItem.addActionListener(new ActionListener()
636     {
637       @Override
638       public void actionPerformed(ActionEvent e)
639       {
640         justifyLeftMenuItem_actionPerformed(e);
641       }
642     });
643     JMenuItem justifyRightMenuItem = new JMenuItem(
644             MessageManager.getString("action.right_justify_alignment"));
645     justifyRightMenuItem.addActionListener(new ActionListener()
646     {
647       @Override
648       public void actionPerformed(ActionEvent e)
649       {
650         justifyRightMenuItem_actionPerformed(e);
651       }
652     });
653     viewBoxesMenuItem.setText(MessageManager.getString("action.boxes"));
654     viewBoxesMenuItem.setState(true);
655     viewBoxesMenuItem.addActionListener(new ActionListener()
656     {
657       @Override
658       public void actionPerformed(ActionEvent e)
659       {
660         viewBoxesMenuItem_actionPerformed(e);
661       }
662     });
663     viewTextMenuItem.setText(MessageManager.getString("action.text"));
664     viewTextMenuItem.setState(true);
665     viewTextMenuItem.addActionListener(new ActionListener()
666     {
667       @Override
668       public void actionPerformed(ActionEvent e)
669       {
670         viewTextMenuItem_actionPerformed(e);
671       }
672     });
673     showNonconservedMenuItem.setText(MessageManager
674             .getString("label.show_non_conversed"));
675     showNonconservedMenuItem.setState(false);
676     showNonconservedMenuItem.addActionListener(new ActionListener()
677     {
678       @Override
679       public void actionPerformed(ActionEvent e)
680       {
681         showUnconservedMenuItem_actionPerformed(e);
682       }
683     });
684     JMenuItem sortPairwiseMenuItem = new JMenuItem(
685             MessageManager.getString("action.by_pairwise_id"));
686     sortPairwiseMenuItem.addActionListener(new ActionListener()
687     {
688       @Override
689       public void actionPerformed(ActionEvent e)
690       {
691         sortPairwiseMenuItem_actionPerformed(e);
692       }
693     });
694     JMenuItem sortIDMenuItem = new JMenuItem(
695             MessageManager.getString("action.by_id"));
696     sortIDMenuItem.addActionListener(new ActionListener()
697     {
698       @Override
699       public void actionPerformed(ActionEvent e)
700       {
701         sortIDMenuItem_actionPerformed(e);
702       }
703     });
704     JMenuItem sortLengthMenuItem = new JMenuItem(
705             MessageManager.getString("action.by_length"));
706     sortLengthMenuItem.addActionListener(new ActionListener()
707     {
708       @Override
709       public void actionPerformed(ActionEvent e)
710       {
711         sortLengthMenuItem_actionPerformed(e);
712       }
713     });
714     JMenuItem sortGroupMenuItem = new JMenuItem(
715             MessageManager.getString("action.by_group"));
716     sortGroupMenuItem.addActionListener(new ActionListener()
717     {
718       @Override
719       public void actionPerformed(ActionEvent e)
720       {
721         sortGroupMenuItem_actionPerformed(e);
722       }
723     });
724
725     JMenuItem removeRedundancyMenuItem = new JMenuItem(
726             MessageManager.getString("action.remove_redundancy"));
727     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_D, Toolkit
728             .getDefaultToolkit().getMenuShortcutKeyMask(), false);
729     al = new ActionListener()
730     {
731       @Override
732       public void actionPerformed(ActionEvent e)
733       {
734         removeRedundancyMenuItem_actionPerformed(e);
735       }
736     };
737     addMenuActionAndAccelerator(keyStroke, removeRedundancyMenuItem, al);
738
739     JMenuItem pairwiseAlignmentMenuItem = new JMenuItem(
740             MessageManager.getString("action.pairwise_alignment"));
741     pairwiseAlignmentMenuItem.addActionListener(new ActionListener()
742     {
743       @Override
744       public void actionPerformed(ActionEvent e)
745       {
746         pairwiseAlignmentMenuItem_actionPerformed(e);
747       }
748     });
749     JMenuItem PCAMenuItem = new JMenuItem(
750             MessageManager.getString("label.principal_component_analysis"));
751     PCAMenuItem.addActionListener(new ActionListener()
752     {
753       @Override
754       public void actionPerformed(ActionEvent e)
755       {
756         PCAMenuItem_actionPerformed(e);
757       }
758     });
759     JMenuItem averageDistanceTreeMenuItem = new JMenuItem(
760             MessageManager.getString("label.average_distance_identity"));
761     averageDistanceTreeMenuItem.addActionListener(new ActionListener()
762     {
763       @Override
764       public void actionPerformed(ActionEvent e)
765       {
766         averageDistanceTreeMenuItem_actionPerformed(e);
767       }
768     });
769     JMenuItem neighbourTreeMenuItem = new JMenuItem(
770             MessageManager.getString("label.neighbour_joining_identity"));
771     neighbourTreeMenuItem.addActionListener(new ActionListener()
772     {
773       @Override
774       public void actionPerformed(ActionEvent e)
775       {
776         neighbourTreeMenuItem_actionPerformed(e);
777       }
778     });
779
780     this.getContentPane().setLayout(new BorderLayout());
781     alignFrameMenuBar.setFont(new java.awt.Font("Verdana", 0, 11));
782     statusBar.setBackground(Color.white);
783     statusBar.setFont(new java.awt.Font("Verdana", 0, 11));
784     statusBar.setBorder(BorderFactory.createLineBorder(Color.black));
785     statusBar.setText(MessageManager.getString("label.status_bar"));
786     outputTextboxMenu.setText(MessageManager
787             .getString("label.out_to_textbox"));
788     clustalColour.setText(MessageManager.getString("label.clustalx"));
789     clustalColour.addActionListener(new ActionListener()
790     {
791       @Override
792       public void actionPerformed(ActionEvent e)
793       {
794         clustalColour_actionPerformed(e);
795       }
796     });
797     zappoColour.setText(MessageManager.getString("label.zappo"));
798     zappoColour.addActionListener(new ActionListener()
799     {
800       @Override
801       public void actionPerformed(ActionEvent e)
802       {
803         zappoColour_actionPerformed(e);
804       }
805     });
806     taylorColour.setText(MessageManager.getString("label.taylor"));
807     taylorColour.addActionListener(new ActionListener()
808     {
809       @Override
810       public void actionPerformed(ActionEvent e)
811       {
812         taylorColour_actionPerformed(e);
813       }
814     });
815     hydrophobicityColour.setText(MessageManager
816             .getString("label.hydrophobicity"));
817     hydrophobicityColour.addActionListener(new ActionListener()
818     {
819       @Override
820       public void actionPerformed(ActionEvent e)
821       {
822         hydrophobicityColour_actionPerformed(e);
823       }
824     });
825     helixColour.setText(MessageManager.getString("label.helix_propensity"));
826     helixColour.addActionListener(new ActionListener()
827     {
828       @Override
829       public void actionPerformed(ActionEvent e)
830       {
831         helixColour_actionPerformed(e);
832       }
833     });
834     strandColour.setText(MessageManager
835             .getString("label.strand_propensity"));
836     strandColour.addActionListener(new ActionListener()
837     {
838       @Override
839       public void actionPerformed(ActionEvent e)
840       {
841         strandColour_actionPerformed(e);
842       }
843     });
844     turnColour.setText(MessageManager.getString("label.turn_propensity"));
845     turnColour.addActionListener(new ActionListener()
846     {
847       @Override
848       public void actionPerformed(ActionEvent e)
849       {
850         turnColour_actionPerformed(e);
851       }
852     });
853     buriedColour.setText(MessageManager.getString("label.buried_index"));
854     buriedColour.addActionListener(new ActionListener()
855     {
856       @Override
857       public void actionPerformed(ActionEvent e)
858       {
859         buriedColour_actionPerformed(e);
860       }
861     });
862     userDefinedColour.setText(MessageManager
863             .getString("action.user_defined"));
864     userDefinedColour.addActionListener(new ActionListener()
865     {
866       @Override
867       public void actionPerformed(ActionEvent e)
868       {
869         userDefinedColour_actionPerformed(e);
870       }
871     });
872     PIDColour
873             .setText(MessageManager.getString("label.percentage_identity"));
874     PIDColour.addActionListener(new ActionListener()
875     {
876       @Override
877       public void actionPerformed(ActionEvent e)
878       {
879         PIDColour_actionPerformed(e);
880       }
881     });
882     BLOSUM62Colour
883             .setText(MessageManager.getString("label.blosum62_score"));
884     BLOSUM62Colour.addActionListener(new ActionListener()
885     {
886       @Override
887       public void actionPerformed(ActionEvent e)
888       {
889         BLOSUM62Colour_actionPerformed(e);
890       }
891     });
892     nucleotideColour.setText(MessageManager.getString("label.nucleotide"));
893     nucleotideColour.addActionListener(new ActionListener()
894     {
895       @Override
896       public void actionPerformed(ActionEvent e)
897       {
898         nucleotideColour_actionPerformed(e);
899       }
900     });
901
902     purinePyrimidineColour.setText(MessageManager
903             .getString("label.purine_pyrimidine"));
904     purinePyrimidineColour.addActionListener(new ActionListener()
905     {
906       @Override
907       public void actionPerformed(ActionEvent e)
908       {
909         purinePyrimidineColour_actionPerformed(e);
910       }
911     });
912
913     RNAInteractionColour.setText("RNA Interaction type");
914     RNAInteractionColour.addActionListener(new ActionListener()
915     {
916       @Override
917       public void actionPerformed(ActionEvent e)
918       {
919         RNAInteractionColour_actionPerformed(e);
920       }
921     });
922     /*
923      * covariationColour.setText("Covariation");
924      * covariationColour.addActionListener(new ActionListener() { public void
925      * actionPerformed(ActionEvent e) { covariationColour_actionPerformed(e); }
926      * });
927      */
928
929     JMenuItem avDistanceTreeBlosumMenuItem = new JMenuItem(
930             MessageManager.getString("label.average_distance_bloslum62"));
931     avDistanceTreeBlosumMenuItem.addActionListener(new ActionListener()
932     {
933       @Override
934       public void actionPerformed(ActionEvent e)
935       {
936         avTreeBlosumMenuItem_actionPerformed(e);
937       }
938     });
939     JMenuItem njTreeBlosumMenuItem = new JMenuItem(
940             MessageManager.getString("label.neighbour_blosum62"));
941     njTreeBlosumMenuItem.addActionListener(new ActionListener()
942     {
943       @Override
944       public void actionPerformed(ActionEvent e)
945       {
946         njTreeBlosumMenuItem_actionPerformed(e);
947       }
948     });
949     annotationPanelMenuItem.setActionCommand("");
950     annotationPanelMenuItem.setText(MessageManager
951             .getString("label.show_annotations"));
952     annotationPanelMenuItem.setState(Cache.getDefault("SHOW_ANNOTATIONS",
953             true));
954     annotationPanelMenuItem.addActionListener(new ActionListener()
955     {
956       @Override
957       public void actionPerformed(ActionEvent e)
958       {
959         annotationPanelMenuItem_actionPerformed(e);
960       }
961     });
962     showAllAlAnnotations.setText(MessageManager
963             .getString("label.show_all_al_annotations"));
964     final boolean isAnnotationPanelShown = annotationPanelMenuItem
965             .getState();
966     showAllAlAnnotations.setEnabled(isAnnotationPanelShown);
967     showAllAlAnnotations.addActionListener(new ActionListener()
968     {
969       @Override
970       public void actionPerformed(ActionEvent e)
971       {
972         showAllAnnotations_actionPerformed(false, true);
973       }
974     });
975     hideAllAlAnnotations.setText(MessageManager
976             .getString("label.hide_all_al_annotations"));
977     hideAllAlAnnotations.setEnabled(isAnnotationPanelShown);
978     hideAllAlAnnotations.addActionListener(new ActionListener()
979     {
980       @Override
981       public void actionPerformed(ActionEvent e)
982       {
983         hideAllAnnotations_actionPerformed(false, true);
984       }
985     });
986     showAllSeqAnnotations.setText(MessageManager
987             .getString("label.show_all_seq_annotations"));
988     showAllSeqAnnotations.setEnabled(isAnnotationPanelShown);
989     showAllSeqAnnotations.addActionListener(new ActionListener()
990     {
991       @Override
992       public void actionPerformed(ActionEvent e)
993       {
994         showAllAnnotations_actionPerformed(true, false);
995       }
996     });
997     hideAllSeqAnnotations.setText(MessageManager
998             .getString("label.hide_all_seq_annotations"));
999     hideAllSeqAnnotations.setEnabled(isAnnotationPanelShown);
1000     hideAllSeqAnnotations.addActionListener(new ActionListener()
1001     {
1002       @Override
1003       public void actionPerformed(ActionEvent e)
1004       {
1005         hideAllAnnotations_actionPerformed(true, false);
1006       }
1007     });
1008     SequenceAnnotationOrder sortAnnotationsBy = SequenceAnnotationOrder
1009             .valueOf(Cache.getDefault(Preferences.SORT_ANNOTATIONS,
1010                     SequenceAnnotationOrder.NONE.name()));
1011     final JCheckBoxMenuItem sortAnnBySequence = new JCheckBoxMenuItem(
1012             MessageManager.getString("label.sort_annotations_by_sequence"));
1013     final JCheckBoxMenuItem sortAnnByLabel = new JCheckBoxMenuItem(
1014             MessageManager.getString("label.sort_annotations_by_label"));
1015
1016     sortAnnBySequence
1017             .setSelected(sortAnnotationsBy == SequenceAnnotationOrder.SEQUENCE_AND_LABEL);
1018     sortAnnBySequence.addActionListener(new ActionListener()
1019     {
1020       @Override
1021       public void actionPerformed(ActionEvent e)
1022       {
1023         boolean newState = sortAnnBySequence.getState();
1024         sortAnnByLabel.setSelected(false);
1025         setAnnotationSortOrder(newState ? SequenceAnnotationOrder.SEQUENCE_AND_LABEL
1026                 : SequenceAnnotationOrder.NONE);
1027         sortAnnotations_actionPerformed();
1028       }
1029     });
1030     sortAnnByLabel
1031             .setSelected(sortAnnotationsBy == SequenceAnnotationOrder.LABEL_AND_SEQUENCE);
1032     sortAnnByLabel.addActionListener(new ActionListener()
1033     {
1034       @Override
1035       public void actionPerformed(ActionEvent e)
1036       {
1037         boolean newState = sortAnnByLabel.getState();
1038         sortAnnBySequence.setSelected(false);
1039         setAnnotationSortOrder(newState ? SequenceAnnotationOrder.LABEL_AND_SEQUENCE
1040                 : SequenceAnnotationOrder.NONE);
1041         sortAnnotations_actionPerformed();
1042       }
1043     });
1044     colourTextMenuItem.setText(MessageManager
1045             .getString("label.colour_text"));
1046     colourTextMenuItem.addActionListener(new ActionListener()
1047     {
1048       @Override
1049       public void actionPerformed(ActionEvent e)
1050       {
1051         colourTextMenuItem_actionPerformed(e);
1052       }
1053     });
1054
1055     JMenuItem htmlMenuItem = new JMenuItem(
1056             MessageManager.getString("label.html"));
1057     htmlMenuItem.addActionListener(new ActionListener()
1058     {
1059       @Override
1060       public void actionPerformed(ActionEvent e)
1061       {
1062         htmlMenuItem_actionPerformed(e);
1063       }
1064     });
1065
1066     JMenuItem createBioJS = new JMenuItem(
1067             MessageManager.getString("label.biojs_html_export"));
1068     createBioJS.addActionListener(new java.awt.event.ActionListener()
1069     {
1070       @Override
1071       public void actionPerformed(ActionEvent e)
1072       {
1073         bioJSMenuItem_actionPerformed(e);
1074       }
1075     });
1076
1077     JMenuItem overviewMenuItem = new JMenuItem(
1078             MessageManager.getString("label.overview_window"));
1079     overviewMenuItem.addActionListener(new ActionListener()
1080     {
1081       @Override
1082       public void actionPerformed(ActionEvent e)
1083       {
1084         overviewMenuItem_actionPerformed(e);
1085       }
1086     });
1087
1088     undoMenuItem.setEnabled(false);
1089     undoMenuItem.setText(MessageManager.getString("action.undo"));
1090     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_Z, Toolkit
1091             .getDefaultToolkit().getMenuShortcutKeyMask(), false);
1092     al = new ActionListener()
1093     {
1094       @Override
1095       public void actionPerformed(ActionEvent e)
1096       {
1097         undoMenuItem_actionPerformed(e);
1098       }
1099     };
1100     addMenuActionAndAccelerator(keyStroke, undoMenuItem, al);
1101
1102     redoMenuItem.setEnabled(false);
1103     redoMenuItem.setText(MessageManager.getString("action.redo"));
1104     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_Y, Toolkit
1105             .getDefaultToolkit().getMenuShortcutKeyMask(), false);
1106     al = new ActionListener()
1107     {
1108       @Override
1109       public void actionPerformed(ActionEvent e)
1110       {
1111         redoMenuItem_actionPerformed(e);
1112       }
1113     };
1114     addMenuActionAndAccelerator(keyStroke, redoMenuItem, al);
1115
1116     conservationMenuItem.setText(MessageManager
1117             .getString("action.by_conservation"));
1118     conservationMenuItem.addActionListener(new ActionListener()
1119     {
1120       @Override
1121       public void actionPerformed(ActionEvent e)
1122       {
1123         conservationMenuItem_actionPerformed();
1124       }
1125     });
1126     noColourmenuItem.setText(MessageManager.getString("label.none"));
1127     noColourmenuItem.addActionListener(new ActionListener()
1128     {
1129       @Override
1130       public void actionPerformed(ActionEvent e)
1131       {
1132         noColourmenuItem_actionPerformed(e);
1133       }
1134     });
1135     wrapMenuItem.setText(MessageManager.getString("label.wrap"));
1136     wrapMenuItem.addActionListener(new ActionListener()
1137     {
1138       @Override
1139       public void actionPerformed(ActionEvent e)
1140       {
1141         wrapMenuItem_actionPerformed(e);
1142       }
1143     });
1144
1145     JMenuItem printMenuItem = new JMenuItem(
1146             MessageManager.getString("action.print"));
1147     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_P, Toolkit
1148             .getDefaultToolkit().getMenuShortcutKeyMask(), false);
1149     al = new ActionListener()
1150     {
1151       @Override
1152       public void actionPerformed(ActionEvent e)
1153       {
1154         printMenuItem_actionPerformed(e);
1155       }
1156     };
1157     addMenuActionAndAccelerator(keyStroke, printMenuItem, al);
1158
1159     renderGapsMenuItem
1160             .setText(MessageManager.getString("action.show_gaps"));
1161     renderGapsMenuItem.setState(true);
1162     renderGapsMenuItem.addActionListener(new ActionListener()
1163     {
1164       @Override
1165       public void actionPerformed(ActionEvent e)
1166       {
1167         renderGapsMenuItem_actionPerformed(e);
1168       }
1169     });
1170
1171     JMenuItem findMenuItem = new JMenuItem(
1172             MessageManager.getString("action.find"));
1173     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_F, Toolkit
1174             .getDefaultToolkit().getMenuShortcutKeyMask(), false);
1175     findMenuItem.setToolTipText(JvSwingUtils.wrapTooltip(true,
1176             MessageManager.getString("label.find_tip")));
1177     al = new ActionListener()
1178     {
1179       @Override
1180       public void actionPerformed(ActionEvent e)
1181       {
1182         findMenuItem_actionPerformed(e);
1183       }
1184     };
1185     addMenuActionAndAccelerator(keyStroke, findMenuItem, al);
1186
1187     abovePIDThreshold.setText(MessageManager
1188             .getString("label.above_identity_threshold"));
1189     abovePIDThreshold.addActionListener(new ActionListener()
1190     {
1191       @Override
1192       public void actionPerformed(ActionEvent e)
1193       {
1194         abovePIDThreshold_actionPerformed();
1195       }
1196     });
1197     showSeqFeatures.setText(MessageManager
1198             .getString("label.show_sequence_features"));
1199     showSeqFeatures.addActionListener(new ActionListener()
1200     {
1201       @Override
1202       public void actionPerformed(ActionEvent actionEvent)
1203       {
1204         showSeqFeatures_actionPerformed(actionEvent);
1205       }
1206     });
1207     /*
1208      * showSeqFeaturesHeight.setText("Vary Sequence Feature Height");
1209      * showSeqFeaturesHeight.addActionListener(new ActionListener() { public
1210      * void actionPerformed(ActionEvent actionEvent) {
1211      * showSeqFeaturesHeight_actionPerformed(actionEvent); } });
1212      */
1213     showDbRefsMenuitem.setText(MessageManager
1214             .getString("label.show_database_refs"));
1215     showDbRefsMenuitem.addActionListener(new ActionListener()
1216     {
1217
1218       @Override
1219       public void actionPerformed(ActionEvent e)
1220       {
1221         showDbRefs_actionPerformed(e);
1222       }
1223
1224     });
1225     showNpFeatsMenuitem.setText(MessageManager
1226             .getString("label.show_non_positional_features"));
1227     showNpFeatsMenuitem.addActionListener(new ActionListener()
1228     {
1229
1230       @Override
1231       public void actionPerformed(ActionEvent e)
1232       {
1233         showNpFeats_actionPerformed(e);
1234       }
1235
1236     });
1237     showGroupConservation.setText(MessageManager
1238             .getString("label.group_conservation"));
1239     showGroupConservation.addActionListener(new ActionListener()
1240     {
1241
1242       @Override
1243       public void actionPerformed(ActionEvent e)
1244       {
1245         showGroupConservation_actionPerformed(e);
1246       }
1247
1248     });
1249
1250     showGroupConsensus.setText(MessageManager
1251             .getString("label.group_consensus"));
1252     showGroupConsensus.addActionListener(new ActionListener()
1253     {
1254
1255       @Override
1256       public void actionPerformed(ActionEvent e)
1257       {
1258         showGroupConsensus_actionPerformed(e);
1259       }
1260
1261     });
1262     showConsensusHistogram.setText(MessageManager
1263             .getString("label.show_consensus_histogram"));
1264     showConsensusHistogram.addActionListener(new ActionListener()
1265     {
1266
1267       @Override
1268       public void actionPerformed(ActionEvent e)
1269       {
1270         showConsensusHistogram_actionPerformed(e);
1271       }
1272
1273     });
1274     showSequenceLogo.setText(MessageManager
1275             .getString("label.show_consensus_logo"));
1276     showSequenceLogo.addActionListener(new ActionListener()
1277     {
1278
1279       @Override
1280       public void actionPerformed(ActionEvent e)
1281       {
1282         showSequenceLogo_actionPerformed(e);
1283       }
1284
1285     });
1286     normaliseSequenceLogo.setText(MessageManager
1287             .getString("label.norm_consensus_logo"));
1288     normaliseSequenceLogo.addActionListener(new ActionListener()
1289     {
1290
1291       @Override
1292       public void actionPerformed(ActionEvent e)
1293       {
1294         normaliseSequenceLogo_actionPerformed(e);
1295       }
1296
1297     });
1298     applyAutoAnnotationSettings.setText(MessageManager
1299             .getString("label.apply_all_groups"));
1300     applyAutoAnnotationSettings.setState(false);
1301     applyAutoAnnotationSettings.setVisible(true);
1302     applyAutoAnnotationSettings.addActionListener(new ActionListener()
1303     {
1304       @Override
1305       public void actionPerformed(ActionEvent e)
1306       {
1307         applyAutoAnnotationSettings_actionPerformed(e);
1308       }
1309     });
1310
1311     ButtonGroup buttonGroup = new ButtonGroup();
1312     final JRadioButtonMenuItem showAutoFirst = new JRadioButtonMenuItem(
1313             MessageManager.getString("label.show_first"));
1314     final JRadioButtonMenuItem showAutoLast = new JRadioButtonMenuItem(
1315             MessageManager.getString("label.show_last"));
1316     buttonGroup.add(showAutoFirst);
1317     buttonGroup.add(showAutoLast);
1318     final boolean autoFirst = Cache.getDefault(
1319             Preferences.SHOW_AUTOCALC_ABOVE, false);
1320     showAutoFirst.setSelected(autoFirst);
1321     setShowAutoCalculatedAbove(autoFirst);
1322     showAutoFirst.addActionListener(new ActionListener()
1323     {
1324       @Override
1325       public void actionPerformed(ActionEvent e)
1326       {
1327         setShowAutoCalculatedAbove(showAutoFirst.isSelected());
1328         sortAnnotations_actionPerformed();
1329       }
1330     });
1331     showAutoLast.setSelected(!showAutoFirst.isSelected());
1332     showAutoLast.addActionListener(new ActionListener()
1333     {
1334       @Override
1335       public void actionPerformed(ActionEvent e)
1336       {
1337         setShowAutoCalculatedAbove(!showAutoLast.isSelected());
1338         sortAnnotations_actionPerformed();
1339       }
1340     });
1341
1342     nucleotideColour.setText(MessageManager.getString("label.nucleotide"));
1343     nucleotideColour.addActionListener(new ActionListener()
1344     {
1345       @Override
1346       public void actionPerformed(ActionEvent e)
1347       {
1348         nucleotideColour_actionPerformed(e);
1349       }
1350     });
1351
1352     tcoffeeColour.setText(MessageManager.getString("label.tcoffee_scores"));
1353     tcoffeeColour.setEnabled(false);
1354     tcoffeeColour.addActionListener(new ActionListener()
1355     {
1356
1357       @Override
1358       public void actionPerformed(ActionEvent e)
1359       {
1360         tcoffeeColorScheme_actionPerformed(e);
1361       }
1362     });
1363
1364     JMenuItem deleteGroups = new JMenuItem(
1365             MessageManager.getString("action.undefine_groups"));
1366     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_U, Toolkit
1367             .getDefaultToolkit().getMenuShortcutKeyMask(), false);
1368     al = new ActionListener()
1369     {
1370       @Override
1371       public void actionPerformed(ActionEvent e)
1372       {
1373         deleteGroups_actionPerformed(e);
1374       }
1375     };
1376     addMenuActionAndAccelerator(keyStroke, deleteGroups, al);
1377
1378     JMenuItem createGroup = new JMenuItem(
1379             MessageManager.getString("action.create_groups"));
1380     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_G, Toolkit
1381             .getDefaultToolkit().getMenuShortcutKeyMask(), false);
1382     al = new ActionListener()
1383     {
1384       @Override
1385       public void actionPerformed(ActionEvent e)
1386       {
1387         createGroup_actionPerformed(e);
1388       }
1389     };
1390     addMenuActionAndAccelerator(keyStroke, createGroup, al);
1391
1392     JMenuItem unGroup = new JMenuItem(
1393             MessageManager.getString("action.remove_group"));
1394     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_G, Toolkit
1395             .getDefaultToolkit().getMenuShortcutKeyMask()
1396             | KeyEvent.SHIFT_MASK, false);
1397     al = new ActionListener()
1398     {
1399       @Override
1400       public void actionPerformed(ActionEvent e)
1401       {
1402         unGroup_actionPerformed(e);
1403       }
1404     };
1405     addMenuActionAndAccelerator(keyStroke, unGroup, al);
1406
1407     copy.setText(MessageManager.getString("action.copy"));
1408     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_C, Toolkit
1409             .getDefaultToolkit().getMenuShortcutKeyMask(), false);
1410
1411     al = new ActionListener()
1412     {
1413       @Override
1414       public void actionPerformed(ActionEvent e)
1415       {
1416         copy_actionPerformed(e);
1417       }
1418     };
1419     addMenuActionAndAccelerator(keyStroke, copy, al);
1420
1421     cut.setText(MessageManager.getString("action.cut"));
1422     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_X, Toolkit
1423             .getDefaultToolkit().getMenuShortcutKeyMask(), false);
1424     al = new ActionListener()
1425     {
1426       @Override
1427       public void actionPerformed(ActionEvent e)
1428       {
1429         cut_actionPerformed(e);
1430       }
1431     };
1432     addMenuActionAndAccelerator(keyStroke, cut, al);
1433
1434     JMenuItem delete = new JMenuItem(
1435             MessageManager.getString("action.delete"));
1436     delete.addActionListener(new ActionListener()
1437     {
1438       @Override
1439       public void actionPerformed(ActionEvent e)
1440       {
1441         delete_actionPerformed(e);
1442       }
1443     });
1444
1445     pasteMenu.setText(MessageManager.getString("action.paste"));
1446     JMenuItem pasteNew = new JMenuItem(
1447             MessageManager.getString("label.to_new_alignment"));
1448     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_V, Toolkit
1449             .getDefaultToolkit().getMenuShortcutKeyMask()
1450             | KeyEvent.SHIFT_MASK, false);
1451     al = new ActionListener()
1452     {
1453       @Override
1454       public void actionPerformed(ActionEvent e)
1455       {
1456         pasteNew_actionPerformed(e);
1457       }
1458     };
1459     addMenuActionAndAccelerator(keyStroke, pasteNew, al);
1460
1461     JMenuItem pasteThis = new JMenuItem(
1462             MessageManager.getString("label.to_this_alignment"));
1463     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_V, Toolkit
1464             .getDefaultToolkit().getMenuShortcutKeyMask(), false);
1465     al = new ActionListener()
1466     {
1467       @Override
1468       public void actionPerformed(ActionEvent e)
1469       {
1470         pasteThis_actionPerformed(e);
1471       }
1472     };
1473     addMenuActionAndAccelerator(keyStroke, pasteThis, al);
1474
1475     applyToAllGroups.setText(MessageManager
1476             .getString("label.apply_colour_to_all_groups"));
1477     applyToAllGroups.addActionListener(new ActionListener()
1478     {
1479       @Override
1480       public void actionPerformed(ActionEvent e)
1481       {
1482         applyToAllGroups_actionPerformed(e);
1483       }
1484     });
1485     JMenuItem createPNG = new JMenuItem("PNG");
1486     createPNG.addActionListener(new ActionListener()
1487     {
1488       @Override
1489       public void actionPerformed(ActionEvent e)
1490       {
1491         createPNG(null);
1492       }
1493     });
1494     createPNG.setActionCommand(MessageManager
1495             .getString("label.save_png_image"));
1496
1497     JMenuItem font = new JMenuItem(MessageManager.getString("action.font"));
1498     font.addActionListener(new ActionListener()
1499     {
1500       @Override
1501       public void actionPerformed(ActionEvent e)
1502       {
1503         font_actionPerformed(e);
1504       }
1505     });
1506     seqLimits.setText(MessageManager
1507             .getString("label.show_sequence_limits"));
1508     seqLimits.setState(jalview.bin.Cache.getDefault("SHOW_JVSUFFIX", true));
1509     seqLimits.addActionListener(new ActionListener()
1510     {
1511       @Override
1512       public void actionPerformed(ActionEvent e)
1513       {
1514         seqLimit_actionPerformed(e);
1515       }
1516     });
1517     JMenuItem epsFile = new JMenuItem("EPS");
1518     epsFile.addActionListener(new ActionListener()
1519     {
1520       @Override
1521       public void actionPerformed(ActionEvent e)
1522       {
1523         createEPS(null);
1524       }
1525     });
1526
1527     JMenuItem createSVG = new JMenuItem("SVG");
1528     createSVG.addActionListener(new ActionListener()
1529     {
1530       @Override
1531       public void actionPerformed(ActionEvent e)
1532       {
1533         createSVG(null);
1534       }
1535     });
1536
1537     JMenuItem loadTreeMenuItem = new JMenuItem(
1538             MessageManager.getString("label.load_associated_tree"));
1539     loadTreeMenuItem.setActionCommand(MessageManager
1540             .getString("label.load_tree_for_sequence_set"));
1541     loadTreeMenuItem.addActionListener(new ActionListener()
1542     {
1543       @Override
1544       public void actionPerformed(ActionEvent e)
1545       {
1546         loadTreeMenuItem_actionPerformed(e);
1547       }
1548     });
1549
1550     scaleAbove.setVisible(false);
1551     scaleAbove.setText(MessageManager.getString("action.scale_above"));
1552     scaleAbove.addActionListener(new ActionListener()
1553     {
1554       @Override
1555       public void actionPerformed(ActionEvent e)
1556       {
1557         scaleAbove_actionPerformed(e);
1558       }
1559     });
1560     scaleLeft.setVisible(false);
1561     scaleLeft.setSelected(true);
1562     scaleLeft.setText(MessageManager.getString("action.scale_left"));
1563     scaleLeft.addActionListener(new ActionListener()
1564     {
1565       @Override
1566       public void actionPerformed(ActionEvent e)
1567       {
1568         scaleLeft_actionPerformed(e);
1569       }
1570     });
1571     scaleRight.setVisible(false);
1572     scaleRight.setSelected(true);
1573     scaleRight.setText(MessageManager.getString("action.scale_right"));
1574     scaleRight.addActionListener(new ActionListener()
1575     {
1576       @Override
1577       public void actionPerformed(ActionEvent e)
1578       {
1579         scaleRight_actionPerformed(e);
1580       }
1581     });
1582     centreColumnLabelsMenuItem.setVisible(true);
1583     centreColumnLabelsMenuItem.setState(false);
1584     centreColumnLabelsMenuItem.setText(MessageManager
1585             .getString("label.centre_column_labels"));
1586     centreColumnLabelsMenuItem.addActionListener(new ActionListener()
1587     {
1588       @Override
1589       public void actionPerformed(ActionEvent e)
1590       {
1591         centreColumnLabels_actionPerformed(e);
1592       }
1593     });
1594     followHighlightMenuItem.setVisible(true);
1595     followHighlightMenuItem.setState(true);
1596     followHighlightMenuItem.setText(MessageManager
1597             .getString("label.automatic_scrolling"));
1598     followHighlightMenuItem.addActionListener(new ActionListener()
1599     {
1600
1601       @Override
1602       public void actionPerformed(ActionEvent e)
1603       {
1604         followHighlight_actionPerformed();
1605       }
1606
1607     });
1608
1609     modifyPID = new JMenuItem(
1610             MessageManager.getString("label.modify_identity_threshold"));
1611     modifyPID.addActionListener(new ActionListener()
1612     {
1613       @Override
1614       public void actionPerformed(ActionEvent e)
1615       {
1616         modifyPID_actionPerformed();
1617       }
1618     });
1619     modifyConservation.setText(MessageManager
1620             .getString("label.modify_conservation_threshold"));
1621     modifyConservation.addActionListener(new ActionListener()
1622     {
1623       @Override
1624       public void actionPerformed(ActionEvent e)
1625       {
1626         modifyConservation_actionPerformed();
1627       }
1628     });
1629     sortByTreeMenu
1630             .setText(MessageManager.getString("action.by_tree_order"));
1631     sort.setText(MessageManager.getString("action.sort"));
1632     sort.addMenuListener(new MenuListener()
1633     {
1634       @Override
1635       public void menuSelected(MenuEvent e)
1636       {
1637         buildTreeMenu();
1638       }
1639
1640       @Override
1641       public void menuDeselected(MenuEvent e)
1642       {
1643       }
1644
1645       @Override
1646       public void menuCanceled(MenuEvent e)
1647       {
1648       }
1649     });
1650     sortByAnnotScore.setText(MessageManager
1651             .getString("label.sort_by_score"));
1652     sort.add(sortByAnnotScore);
1653     sort.addMenuListener(new javax.swing.event.MenuListener()
1654     {
1655
1656       @Override
1657       public void menuCanceled(MenuEvent e)
1658       {
1659       }
1660
1661       @Override
1662       public void menuDeselected(MenuEvent e)
1663       {
1664       }
1665
1666       @Override
1667       public void menuSelected(MenuEvent e)
1668       {
1669         buildSortByAnnotationScoresMenu();
1670       }
1671     });
1672     sortByAnnotScore.setVisible(false);
1673
1674     calculateTree
1675             .setText(MessageManager.getString("action.calculate_tree"));
1676
1677     padGapsMenuitem.setText(MessageManager.getString("label.pad_gaps"));
1678     padGapsMenuitem.setState(jalview.bin.Cache
1679             .getDefault("PAD_GAPS", false));
1680     padGapsMenuitem.addActionListener(new ActionListener()
1681     {
1682       @Override
1683       public void actionPerformed(ActionEvent e)
1684       {
1685         padGapsMenuitem_actionPerformed(e);
1686       }
1687     });
1688     JMenuItem vamsasStore = new JMenuItem(
1689             MessageManager.getString("label.vamsas_store"));
1690     vamsasStore.setVisible(false);
1691     vamsasStore.addActionListener(new ActionListener()
1692     {
1693       @Override
1694       public void actionPerformed(ActionEvent e)
1695       {
1696         vamsasStore_actionPerformed(e);
1697       }
1698     });
1699     showTranslation.setText(MessageManager
1700             .getString("label.translate_cDNA"));
1701     showTranslation.addActionListener(new ActionListener()
1702     {
1703       @Override
1704       public void actionPerformed(ActionEvent e)
1705       {
1706         showTranslation_actionPerformed(e);
1707       }
1708     });
1709     showReverse.setText(MessageManager.getString("label.reverse"));
1710     showReverse.addActionListener(new ActionListener()
1711     {
1712       @Override
1713       public void actionPerformed(ActionEvent e)
1714       {
1715         showReverse_actionPerformed(false);
1716       }
1717     });
1718     showReverseComplement.setText(MessageManager
1719             .getString("label.reverse_complement"));
1720     showReverseComplement.addActionListener(new ActionListener()
1721     {
1722       @Override
1723       public void actionPerformed(ActionEvent e)
1724       {
1725         showReverse_actionPerformed(true);
1726       }
1727     });
1728
1729     JMenuItem extractScores = new JMenuItem(
1730             MessageManager.getString("label.extract_scores"));
1731     extractScores.addActionListener(new ActionListener()
1732     {
1733       @Override
1734       public void actionPerformed(ActionEvent e)
1735       {
1736         extractScores_actionPerformed(e);
1737       }
1738     });
1739     extractScores.setVisible(true);
1740     // JBPNote: TODO: make gui for regex based score extraction
1741
1742     // for show products actions see AlignFrame.canShowProducts
1743     showProducts.setText(MessageManager.getString("label.get_cross_refs"));
1744
1745     runGroovy.setText(MessageManager.getString("label.run_groovy"));
1746     runGroovy.setToolTipText(MessageManager
1747             .getString("label.run_groovy_tip"));
1748     runGroovy.addActionListener(new ActionListener()
1749     {
1750       @Override
1751       public void actionPerformed(ActionEvent e)
1752       {
1753         runGroovy_actionPerformed();
1754       }
1755     });
1756
1757     JMenuItem openFeatureSettings = new JMenuItem(
1758             MessageManager.getString("action.feature_settings"));
1759     openFeatureSettings.addActionListener(new ActionListener()
1760     {
1761       @Override
1762       public void actionPerformed(ActionEvent e)
1763       {
1764         featureSettings_actionPerformed(e);
1765       }
1766     });
1767     JMenuItem fetchSequence = new JMenuItem(
1768             MessageManager.getString("label.fetch_sequences"));
1769     fetchSequence.addActionListener(new ActionListener()
1770     {
1771       @Override
1772       public void actionPerformed(ActionEvent e)
1773       {
1774         fetchSequence_actionPerformed(e);
1775       }
1776     });
1777
1778     JMenuItem annotationColour = new JMenuItem(
1779             MessageManager.getString("action.by_annotation"));
1780     annotationColour.addActionListener(new ActionListener()
1781     {
1782       @Override
1783       public void actionPerformed(ActionEvent e)
1784       {
1785         annotationColour_actionPerformed(e);
1786       }
1787     });
1788
1789     JMenuItem annotationColumn = new JMenuItem(
1790             MessageManager.getString("action.select_by_annotation"));
1791     annotationColumn.addActionListener(new ActionListener()
1792     {
1793       @Override
1794       public void actionPerformed(ActionEvent e)
1795       {
1796         annotationColumn_actionPerformed(e);
1797       }
1798     });
1799
1800     rnahelicesColour.setText(MessageManager
1801             .getString("action.by_rna_helixes"));
1802     rnahelicesColour.addActionListener(new ActionListener()
1803     {
1804       @Override
1805       public void actionPerformed(ActionEvent e)
1806       {
1807         rnahelicesColour_actionPerformed(e);
1808       }
1809     });
1810
1811     JMenuItem associatedData = new JMenuItem(
1812             MessageManager.getString("label.load_features_annotations"));
1813     associatedData.addActionListener(new ActionListener()
1814     {
1815       @Override
1816       public void actionPerformed(ActionEvent e)
1817       {
1818         associatedData_actionPerformed(e);
1819       }
1820     });
1821     autoCalculate.setText(MessageManager
1822             .getString("label.autocalculate_consensus"));
1823     autoCalculate.setState(jalview.bin.Cache.getDefault(
1824             "AUTO_CALC_CONSENSUS", true));
1825     autoCalculate.addActionListener(new ActionListener()
1826     {
1827       @Override
1828       public void actionPerformed(ActionEvent e)
1829       {
1830         autoCalculate_actionPerformed(e);
1831       }
1832     });
1833     sortByTree.setText(MessageManager
1834             .getString("label.sort_alignment_new_tree"));
1835     sortByTree
1836             .setToolTipText("<html>"
1837                     + MessageManager
1838                             .getString("label.enable_automatically_sort_alignment_when_open_new_tree"));
1839     sortByTree
1840             .setState(jalview.bin.Cache.getDefault("SORT_BY_TREE", false));
1841     sortByTree.addActionListener(new ActionListener()
1842     {
1843       @Override
1844       public void actionPerformed(ActionEvent e)
1845       {
1846         sortByTreeOption_actionPerformed(e);
1847       }
1848     });
1849
1850     listenToViewSelections.setText(MessageManager
1851             .getString("label.listen_for_selections"));
1852     listenToViewSelections
1853             .setToolTipText("<html>"
1854                     + MessageManager
1855                             .getString("label.selections_mirror_selections_made_same_sequences_other_views"));
1856     listenToViewSelections.setState(false);
1857     listenToViewSelections.addActionListener(new ActionListener()
1858     {
1859       @Override
1860       public void actionPerformed(ActionEvent e)
1861       {
1862         listenToViewSelections_actionPerformed(e);
1863       }
1864     });
1865
1866     JMenu addSequenceMenu = new JMenu(
1867             MessageManager.getString("label.add_sequences"));
1868     JMenuItem addFromFile = new JMenuItem(
1869             MessageManager.getString("label.from_file"));
1870     addFromFile.addActionListener(new ActionListener()
1871     {
1872       @Override
1873       public void actionPerformed(ActionEvent e)
1874       {
1875         addFromFile_actionPerformed(e);
1876       }
1877     });
1878     JMenuItem addFromText = new JMenuItem(
1879             MessageManager.getString("label.from_textbox"));
1880     addFromText.addActionListener(new ActionListener()
1881     {
1882       @Override
1883       public void actionPerformed(ActionEvent e)
1884       {
1885         addFromText_actionPerformed(e);
1886       }
1887     });
1888     JMenuItem addFromURL = new JMenuItem(
1889             MessageManager.getString("label.from_url"));
1890     addFromURL.addActionListener(new ActionListener()
1891     {
1892       @Override
1893       public void actionPerformed(ActionEvent e)
1894       {
1895         addFromURL_actionPerformed(e);
1896       }
1897     });
1898     JMenuItem exportFeatures = new JMenuItem(
1899             MessageManager.getString("label.export_features"));
1900     exportFeatures.addActionListener(new ActionListener()
1901     {
1902       @Override
1903       public void actionPerformed(ActionEvent e)
1904       {
1905         exportFeatures_actionPerformed(e);
1906       }
1907     });
1908     JMenuItem exportAnnotations = new JMenuItem(
1909             MessageManager.getString("label.export_annotations"));
1910     exportAnnotations.addActionListener(new ActionListener()
1911     {
1912       @Override
1913       public void actionPerformed(ActionEvent e)
1914       {
1915         exportAnnotations_actionPerformed(e);
1916       }
1917     });
1918     statusPanel.setLayout(new GridLayout());
1919     JMenuItem showAllSeqs = new JMenuItem(
1920             MessageManager.getString("label.all_sequences"));
1921     showAllSeqs.setToolTipText(MessageManager
1922             .getString("label.toggle_sequence_visibility"));
1923     showAllSeqs.addActionListener(new ActionListener()
1924     {
1925       @Override
1926       public void actionPerformed(ActionEvent e)
1927       {
1928         showAllSeqs_actionPerformed(e);
1929       }
1930     });
1931     JMenuItem showAllColumns = new JMenuItem(
1932             MessageManager.getString("label.all_columns"));
1933     showAllColumns.setToolTipText(MessageManager
1934             .getString("label.toggle_columns_visibility"));
1935     showAllColumns.addActionListener(new ActionListener()
1936     {
1937       @Override
1938       public void actionPerformed(ActionEvent e)
1939       {
1940         showAllColumns_actionPerformed(e);
1941       }
1942     });
1943     JMenu hideMenu = new JMenu(MessageManager.getString("action.hide"));
1944     JMenuItem hideSelSequences = new JMenuItem(
1945             MessageManager.getString("label.selected_sequences"));
1946     hideSelSequences.setToolTipText(MessageManager
1947             .getString("label.toggle_sequence_visibility"));
1948     hideSelSequences.addActionListener(new ActionListener()
1949     {
1950       @Override
1951       public void actionPerformed(ActionEvent e)
1952       {
1953         hideSelSequences_actionPerformed(e);
1954       }
1955     });
1956     JMenuItem hideSelColumns = new JMenuItem(
1957             MessageManager.getString("label.selected_columns"));
1958     hideSelColumns.setToolTipText(MessageManager
1959             .getString("label.toggle_columns_visibility"));
1960     hideSelColumns.addActionListener(new ActionListener()
1961     {
1962       @Override
1963       public void actionPerformed(ActionEvent e)
1964       {
1965         hideSelColumns_actionPerformed(e);
1966       }
1967     });
1968     JMenuItem hideAllSelection = new JMenuItem(
1969             MessageManager.getString("label.selected_region"));
1970     hideAllSelection.addActionListener(new ActionListener()
1971     {
1972       @Override
1973       public void actionPerformed(ActionEvent e)
1974       {
1975         hideAllSelection_actionPerformed(e);
1976       }
1977     });
1978     // TODO: should be hidden if no selection exists.
1979     JMenuItem hideAllButSelection = new JMenuItem(
1980             MessageManager.getString("label.all_but_selected_region"));
1981     hideAllButSelection.addActionListener(new ActionListener()
1982     {
1983       @Override
1984       public void actionPerformed(ActionEvent e)
1985       {
1986         hideAllButSelection_actionPerformed(e);
1987       }
1988     });
1989     JMenuItem showAllhidden = new JMenuItem(
1990             MessageManager.getString("label.all_sequences_columns"));
1991     showAllhidden.setToolTipText(MessageManager
1992             .getString("label.toggles_visibility_hidden_selected_regions"));
1993     showAllhidden.addActionListener(new ActionListener()
1994     {
1995       @Override
1996       public void actionPerformed(ActionEvent e)
1997       {
1998         showAllhidden_actionPerformed(e);
1999       }
2000     });
2001     hiddenMarkers.setText(MessageManager
2002             .getString("action.show_hidden_markers"));
2003     hiddenMarkers.addActionListener(new ActionListener()
2004     {
2005       @Override
2006       public void actionPerformed(ActionEvent e)
2007       {
2008         hiddenMarkers_actionPerformed(e);
2009       }
2010     });
2011
2012     JMenuItem invertColSel = new JMenuItem(
2013             MessageManager.getString("action.invert_column_selection"));
2014     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_I, Toolkit
2015             .getDefaultToolkit().getMenuShortcutKeyMask()
2016             | KeyEvent.ALT_MASK, false);
2017     al = new ActionListener()
2018     {
2019       @Override
2020       public void actionPerformed(ActionEvent e)
2021       {
2022         invertColSel_actionPerformed(e);
2023       }
2024     };
2025     addMenuActionAndAccelerator(keyStroke, invertColSel, al);
2026
2027     showComplementMenuItem.setVisible(false);
2028     showComplementMenuItem.addActionListener(new ActionListener()
2029     {
2030       @Override
2031       public void actionPerformed(ActionEvent e)
2032       {
2033         showComplement_actionPerformed(showComplementMenuItem.getState());
2034       }
2035     });
2036
2037     tabbedPane.addChangeListener(new javax.swing.event.ChangeListener()
2038     {
2039       @Override
2040       public void stateChanged(ChangeEvent evt)
2041       {
2042         JTabbedPane pane = (JTabbedPane) evt.getSource();
2043         int sel = pane.getSelectedIndex();
2044         tabSelectionChanged(sel);
2045       }
2046     });
2047     tabbedPane.addMouseListener(new MouseAdapter()
2048     {
2049       @Override
2050       public void mousePressed(MouseEvent e)
2051       {
2052         if (e.isPopupTrigger()) // Mac
2053         {
2054           tabbedPane_mousePressed(e);
2055         }
2056       }
2057
2058       @Override
2059       public void mouseReleased(MouseEvent e)
2060       {
2061         if (e.isPopupTrigger()) // Windows
2062         {
2063           tabbedPane_mousePressed(e);
2064         }
2065       }
2066     });
2067     tabbedPane.addFocusListener(new FocusAdapter()
2068     {
2069       @Override
2070       public void focusGained(FocusEvent e)
2071       {
2072         tabbedPane_focusGained(e);
2073       }
2074     });
2075
2076     JMenuItem save = new JMenuItem(MessageManager.getString("action.save"));
2077     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_S, Toolkit
2078             .getDefaultToolkit().getMenuShortcutKeyMask(), false);
2079     al = new ActionListener()
2080     {
2081       @Override
2082       public void actionPerformed(ActionEvent e)
2083       {
2084         save_actionPerformed(e);
2085       }
2086     };
2087     addMenuActionAndAccelerator(keyStroke, save, al);
2088
2089     reload.setEnabled(false);
2090     reload.setText(MessageManager.getString("action.reload"));
2091     reload.addActionListener(new ActionListener()
2092     {
2093       @Override
2094       public void actionPerformed(ActionEvent e)
2095       {
2096         reload_actionPerformed(e);
2097       }
2098     });
2099
2100     JMenuItem newView = new JMenuItem(
2101             MessageManager.getString("action.new_view"));
2102     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_T, Toolkit
2103             .getDefaultToolkit().getMenuShortcutKeyMask(), false);
2104     al = new ActionListener()
2105     {
2106       @Override
2107       public void actionPerformed(ActionEvent e)
2108       {
2109         newView_actionPerformed(e);
2110       }
2111     };
2112     addMenuActionAndAccelerator(keyStroke, newView, al);
2113
2114     tabbedPane.setToolTipText("<html><i>"
2115             + MessageManager.getString("label.rename_tab_eXpand_reGroup")
2116             + "</i></html>");
2117     JMenuItem textColour = new JMenuItem(
2118             MessageManager.getString("action.set_text_colour"));
2119     textColour.addActionListener(new ActionListener()
2120     {
2121       @Override
2122       public void actionPerformed(ActionEvent e)
2123       {
2124         textColour_actionPerformed(e);
2125       }
2126     });
2127     formatMenu.setText(MessageManager.getString("action.format"));
2128     JMenu selectMenu = new JMenu(MessageManager.getString("action.select"));
2129     idRightAlign.setText(MessageManager
2130             .getString("label.right_align_sequence_id"));
2131     idRightAlign.addActionListener(new ActionListener()
2132     {
2133       @Override
2134       public void actionPerformed(ActionEvent e)
2135       {
2136         idRightAlign_actionPerformed(e);
2137       }
2138     });
2139
2140     gatherViews.setEnabled(false);
2141     gatherViews.setText(MessageManager.getString("action.gather_views"));
2142     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_G, 0, false);
2143     al = new ActionListener()
2144     {
2145       @Override
2146       public void actionPerformed(ActionEvent e)
2147       {
2148         gatherViews_actionPerformed(e);
2149       }
2150     };
2151     addMenuActionAndAccelerator(keyStroke, gatherViews, al);
2152
2153     expandViews.setEnabled(false);
2154     expandViews.setText(MessageManager.getString("action.expand_views"));
2155     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_X, 0, false);
2156     al = new ActionListener()
2157     {
2158       @Override
2159       public void actionPerformed(ActionEvent e)
2160       {
2161         expandViews_actionPerformed(e);
2162       }
2163     };
2164     addMenuActionAndAccelerator(keyStroke, expandViews, al);
2165
2166     JMenuItem pageSetup = new JMenuItem(
2167             MessageManager.getString("action.page_setup"));
2168     pageSetup.addActionListener(new ActionListener()
2169     {
2170       @Override
2171       public void actionPerformed(ActionEvent e)
2172       {
2173         pageSetup_actionPerformed(e);
2174       }
2175     });
2176     JMenuItem alignmentProperties = new JMenuItem(
2177             MessageManager.getString("label.alignment_props"));
2178     alignmentProperties.addActionListener(new ActionListener()
2179     {
2180       @Override
2181       public void actionPerformed(ActionEvent actionEvent)
2182       {
2183         alignmentProperties();
2184       }
2185     });
2186     JMenuItem selectHighlighted = new JMenuItem(
2187             MessageManager.getString("action.select_highlighted_columns"));
2188     selectHighlighted.setToolTipText(MessageManager
2189             .getString("tooltip.select_highlighted_columns"));
2190     al = new ActionListener()
2191     {
2192       @Override
2193       public void actionPerformed(ActionEvent actionEvent)
2194       {
2195         selectHighlightedColumns_actionPerformed(actionEvent);
2196       }
2197     };
2198     selectHighlighted.addActionListener(al);
2199     JMenu tooltipSettingsMenu = new JMenu(
2200             MessageManager.getString("label.sequence_id_tooltip"));
2201     JMenu autoAnnMenu = new JMenu(
2202             MessageManager.getString("label.autocalculated_annotation"));
2203
2204     JMenu exportImageMenu = new JMenu(
2205             MessageManager.getString("label.export_image"));
2206     JMenu fileMenu = new JMenu(MessageManager.getString("action.file"));
2207     alignFrameMenuBar.add(fileMenu);
2208     alignFrameMenuBar.add(editMenu);
2209     alignFrameMenuBar.add(selectMenu);
2210     alignFrameMenuBar.add(viewMenu);
2211     alignFrameMenuBar.add(annotationsMenu);
2212     alignFrameMenuBar.add(formatMenu);
2213     alignFrameMenuBar.add(colourMenu);
2214     alignFrameMenuBar.add(calculateMenu);
2215     alignFrameMenuBar.add(webService);
2216
2217     fileMenu.add(fetchSequence);
2218     fileMenu.add(addSequenceMenu);
2219     fileMenu.add(reload);
2220     fileMenu.addSeparator();
2221     fileMenu.add(vamsasStore);
2222     fileMenu.add(save);
2223     fileMenu.add(saveAs);
2224     fileMenu.add(outputTextboxMenu);
2225     fileMenu.add(pageSetup);
2226     fileMenu.add(printMenuItem);
2227     fileMenu.addSeparator();
2228     fileMenu.add(exportImageMenu);
2229     fileMenu.add(exportFeatures);
2230     fileMenu.add(exportAnnotations);
2231     fileMenu.add(loadTreeMenuItem);
2232     fileMenu.add(associatedData);
2233     fileMenu.addSeparator();
2234     fileMenu.add(closeMenuItem);
2235
2236     pasteMenu.add(pasteNew);
2237     pasteMenu.add(pasteThis);
2238     editMenu.add(undoMenuItem);
2239     editMenu.add(redoMenuItem);
2240     editMenu.add(cut);
2241     editMenu.add(copy);
2242     editMenu.add(pasteMenu);
2243     editMenu.add(delete);
2244     editMenu.addSeparator();
2245     editMenu.add(remove2LeftMenuItem);
2246     editMenu.add(remove2RightMenuItem);
2247     editMenu.add(removeGappedColumnMenuItem);
2248     editMenu.add(removeAllGapsMenuItem);
2249     editMenu.add(removeRedundancyMenuItem);
2250     editMenu.addSeparator();
2251     // dont add these yet in the CVS build - they cannot be undone!
2252     // Excluded from Jalview 2.5 release - undo needs to be implemented.
2253     // editMenu.add(justifyLeftMenuItem);
2254     // editMenu.add(justifyRightMenuItem);
2255     // editMenu.addSeparator();
2256     editMenu.add(padGapsMenuitem);
2257
2258     showMenu.add(showAllColumns);
2259     showMenu.add(showAllSeqs);
2260     showMenu.add(showAllhidden);
2261     hideMenu.add(hideSelColumns);
2262     hideMenu.add(hideSelSequences);
2263     hideMenu.add(hideAllSelection);
2264     hideMenu.add(hideAllButSelection);
2265     viewMenu.add(newView);
2266     viewMenu.add(expandViews);
2267     viewMenu.add(gatherViews);
2268     viewMenu.addSeparator();
2269     viewMenu.add(showMenu);
2270     viewMenu.add(hideMenu);
2271     viewMenu.add(showComplementMenuItem);
2272     viewMenu.addSeparator();
2273     viewMenu.add(followHighlightMenuItem);
2274     viewMenu.addSeparator();
2275     viewMenu.add(showSeqFeatures);
2276     // viewMenu.add(showSeqFeaturesHeight);
2277     viewMenu.add(openFeatureSettings);
2278     tooltipSettingsMenu.add(showDbRefsMenuitem);
2279     tooltipSettingsMenu.add(showNpFeatsMenuitem);
2280     viewMenu.add(tooltipSettingsMenu);
2281     viewMenu.addSeparator();
2282     viewMenu.add(alignmentProperties);
2283     viewMenu.addSeparator();
2284     viewMenu.add(overviewMenuItem);
2285
2286     annotationsMenu.add(annotationPanelMenuItem);
2287     annotationsMenu.addSeparator();
2288     annotationsMenu.add(showAllAlAnnotations);
2289     annotationsMenu.add(hideAllAlAnnotations);
2290     annotationsMenu.addSeparator();
2291     annotationsMenu.add(showAllSeqAnnotations);
2292     annotationsMenu.add(hideAllSeqAnnotations);
2293     annotationsMenu.add(sortAnnBySequence);
2294     annotationsMenu.add(sortAnnByLabel);
2295     annotationsMenu.addSeparator();
2296     autoAnnMenu.add(showAutoFirst);
2297     autoAnnMenu.add(showAutoLast);
2298     autoAnnMenu.addSeparator();
2299     autoAnnMenu.add(applyAutoAnnotationSettings);
2300     autoAnnMenu.add(showConsensusHistogram);
2301     autoAnnMenu.add(showSequenceLogo);
2302     autoAnnMenu.add(normaliseSequenceLogo);
2303     autoAnnMenu.addSeparator();
2304     autoAnnMenu.add(showGroupConservation);
2305     autoAnnMenu.add(showGroupConsensus);
2306     annotationsMenu.add(autoAnnMenu);
2307
2308     colourMenu.add(applyToAllGroups);
2309     colourMenu.add(textColour);
2310     colourMenu.addSeparator();
2311     colourMenu.add(noColourmenuItem);
2312     colourMenu.add(clustalColour);
2313     colourMenu.add(BLOSUM62Colour);
2314     colourMenu.add(PIDColour);
2315     colourMenu.add(zappoColour);
2316     colourMenu.add(taylorColour);
2317     colourMenu.add(hydrophobicityColour);
2318     colourMenu.add(helixColour);
2319     colourMenu.add(strandColour);
2320     colourMenu.add(turnColour);
2321     colourMenu.add(buriedColour);
2322     colourMenu.add(nucleotideColour);
2323     colourMenu.add(purinePyrimidineColour);
2324     // colourMenu.add(RNAInteractionColour);
2325     // colourMenu.add(covariationColour);
2326     colourMenu.add(tcoffeeColour);
2327     colourMenu.add(userDefinedColour);
2328     colourMenu.addSeparator();
2329     colourMenu.add(conservationMenuItem);
2330     colourMenu.add(modifyConservation);
2331     colourMenu.add(abovePIDThreshold);
2332     colourMenu.add(modifyPID);
2333     colourMenu.add(annotationColour);
2334     colourMenu.add(rnahelicesColour);
2335
2336     sort.add(sortIDMenuItem);
2337     sort.add(sortLengthMenuItem);
2338     sort.add(sortGroupMenuItem);
2339     sort.add(sortPairwiseMenuItem);
2340     sort.add(sortByTreeMenu);
2341     calculateMenu.add(sort);
2342     calculateMenu.add(calculateTree);
2343     calculateMenu.addSeparator();
2344     calculateMenu.add(pairwiseAlignmentMenuItem);
2345     calculateMenu.add(PCAMenuItem);
2346     calculateMenu.addSeparator();
2347     calculateMenu.add(showTranslation);
2348     calculateMenu.add(showReverse);
2349     calculateMenu.add(showReverseComplement);
2350     calculateMenu.add(showProducts);
2351     calculateMenu.add(autoCalculate);
2352     calculateMenu.add(sortByTree);
2353     calculateMenu.addSeparator();
2354     calculateMenu.add(expandAlignment);
2355     calculateMenu.add(extractScores);
2356     calculateMenu.addSeparator();
2357     calculateMenu.add(runGroovy);
2358
2359     webServiceNoServices = new JMenuItem(
2360             MessageManager.getString("label.no_services"));
2361     webService.add(webServiceNoServices);
2362     exportImageMenu.add(htmlMenuItem);
2363     exportImageMenu.add(epsFile);
2364     exportImageMenu.add(createPNG);
2365     exportImageMenu.add(createBioJS);
2366     exportImageMenu.add(createSVG);
2367     addSequenceMenu.add(addFromFile);
2368     addSequenceMenu.add(addFromText);
2369     addSequenceMenu.add(addFromURL);
2370     this.getContentPane().add(statusPanel, java.awt.BorderLayout.SOUTH);
2371     statusPanel.add(statusBar, null);
2372     this.getContentPane().add(tabbedPane, java.awt.BorderLayout.CENTER);
2373
2374     formatMenu.add(font);
2375     formatMenu.addSeparator();
2376     formatMenu.add(wrapMenuItem);
2377     formatMenu.add(scaleAbove);
2378     formatMenu.add(scaleLeft);
2379     formatMenu.add(scaleRight);
2380     formatMenu.add(seqLimits);
2381     formatMenu.add(idRightAlign);
2382     formatMenu.add(hiddenMarkers);
2383     formatMenu.add(viewBoxesMenuItem);
2384     formatMenu.add(viewTextMenuItem);
2385     formatMenu.add(colourTextMenuItem);
2386     formatMenu.add(renderGapsMenuItem);
2387     formatMenu.add(centreColumnLabelsMenuItem);
2388     formatMenu.add(showNonconservedMenuItem);
2389     selectMenu.add(findMenuItem);
2390     selectMenu.addSeparator();
2391     selectMenu.add(selectAllSequenceMenuItem);
2392     selectMenu.add(deselectAllSequenceMenuItem);
2393     selectMenu.add(invertSequenceMenuItem);
2394     selectMenu.add(invertColSel);
2395     selectMenu.add(createGroup);
2396     selectMenu.add(unGroup);
2397     selectMenu.add(grpsFromSelection);
2398     selectMenu.add(deleteGroups);
2399     selectMenu.add(annotationColumn);
2400     selectMenu.add(selectHighlighted);
2401     // TODO - determine if the listenToViewSelections button is needed : see bug
2402     // JAL-574
2403     // selectMenu.addSeparator();
2404     // selectMenu.add(listenToViewSelections);
2405   }
2406
2407   protected void selectHighlightedColumns_actionPerformed(
2408           ActionEvent actionEvent)
2409   {
2410     // TODO Auto-generated method stub
2411
2412   }
2413
2414   /**
2415    * Generate the reverse sequence (or reverse complement if the flag is true)
2416    * and add it to the alignment
2417    * 
2418    * @param complement
2419    */
2420   protected void showReverse_actionPerformed(boolean complement)
2421   {
2422   }
2423
2424   /**
2425    * Try to run script in a Groovy console, having first ensured that this
2426    * alignframe is set as currentAlignFrame in Desktop
2427    */
2428   protected void runGroovy_actionPerformed()
2429   {
2430
2431   }
2432
2433   /**
2434    * Adds the given action listener and key accelerator to the given menu item.
2435    * Also saves in a lookup table to support lookup of action by key stroke.
2436    * 
2437    * @param keyStroke
2438    * @param menuItem
2439    * @param actionListener
2440    */
2441   protected void addMenuActionAndAccelerator(KeyStroke keyStroke,
2442           JMenuItem menuItem, ActionListener actionListener)
2443   {
2444     menuItem.setAccelerator(keyStroke);
2445     accelerators.put(keyStroke, menuItem);
2446     menuItem.addActionListener(actionListener);
2447   }
2448
2449   /**
2450    * Action on clicking sort annotations by type.
2451    * 
2452    * @param sortOrder
2453    */
2454   protected void sortAnnotations_actionPerformed()
2455   {
2456   }
2457
2458   /**
2459    * Action on clicking Show all annotations.
2460    * 
2461    * @param forSequences
2462    *          update sequence-related annotations
2463    * @param forAlignment
2464    *          update non-sequence-related annotations
2465    */
2466   protected void showAllAnnotations_actionPerformed(boolean forSequences,
2467           boolean forAlignment)
2468   {
2469     setAnnotationsVisibility(true, forSequences, forAlignment);
2470   }
2471
2472   /**
2473    * Action on clicking Hide all annotations.
2474    * 
2475    * @param forSequences
2476    *          update sequence-related annotations
2477    * @param forAlignment
2478    *          update non-sequence-related annotations
2479    */
2480   protected void hideAllAnnotations_actionPerformed(boolean forSequences,
2481           boolean forAlignment)
2482   {
2483     setAnnotationsVisibility(false, forSequences, forAlignment);
2484   }
2485
2486   /**
2487    * Set the visibility of annotations to true or false. Can act on
2488    * sequence-related annotations, or alignment-related, or both.
2489    * 
2490    * @param visible
2491    * @param forSequences
2492    *          update sequence-related annotations
2493    * @param forAlignment
2494    *          update non-sequence-related annotations
2495    */
2496   protected void setAnnotationsVisibility(boolean visible,
2497           boolean forSequences, boolean forAlignment)
2498   {
2499
2500   }
2501
2502   protected void normaliseSequenceLogo_actionPerformed(ActionEvent e)
2503   {
2504     // TODO Auto-generated method stub
2505
2506   }
2507
2508   protected void listenToViewSelections_actionPerformed(ActionEvent e)
2509   {
2510     // TODO Auto-generated method stub
2511
2512   }
2513
2514   protected void showAllhidden_actionPerformed(ActionEvent e)
2515   {
2516     // TODO Auto-generated method stub
2517
2518   }
2519
2520   protected void hideAllButSelection_actionPerformed(ActionEvent e)
2521   {
2522     // TODO Auto-generated method stub
2523
2524   }
2525
2526   protected void hideAllSelection_actionPerformed(ActionEvent e)
2527   {
2528     // TODO Auto-generated method stub
2529
2530   }
2531
2532   protected void applyAutoAnnotationSettings_actionPerformed(ActionEvent e)
2533   {
2534     // TODO Auto-generated method stub
2535
2536   }
2537
2538   protected void showConsensusHistogram_actionPerformed(ActionEvent e)
2539   {
2540     // TODO Auto-generated method stub
2541
2542   }
2543
2544   protected void showSequenceLogo_actionPerformed(ActionEvent e)
2545   {
2546     // TODO Auto-generated method stub
2547
2548   }
2549
2550   protected void makeGrpsFromSelection_actionPerformed(ActionEvent e)
2551   {
2552     // TODO Auto-generated method stub
2553
2554   }
2555
2556   protected void showGroupConsensus_actionPerformed(ActionEvent e)
2557   {
2558     // TODO Auto-generated method stub
2559
2560   }
2561
2562   protected void showGroupConservation_actionPerformed(ActionEvent e)
2563   {
2564     // TODO Auto-generated method stub
2565
2566   }
2567
2568   protected void showUnconservedMenuItem_actionPerformed(ActionEvent e)
2569   {
2570     // TODO Auto-generated method stub
2571
2572   }
2573
2574   protected void justifyRightMenuItem_actionPerformed(ActionEvent e)
2575   {
2576     // TODO Auto-generated method stub
2577
2578   }
2579
2580   protected void justifyLeftMenuItem_actionPerformed(ActionEvent e)
2581   {
2582     // TODO Auto-generated method stub
2583
2584   }
2585
2586   protected void followHighlight_actionPerformed()
2587   {
2588     // TODO Auto-generated method stub
2589
2590   }
2591
2592   protected void showNpFeats_actionPerformed(ActionEvent e)
2593   {
2594     // TODO Auto-generated method stub
2595
2596   }
2597
2598   protected void showDbRefs_actionPerformed(ActionEvent e)
2599   {
2600     // TODO Auto-generated method stub
2601
2602   }
2603
2604   protected void centreColumnLabels_actionPerformed(ActionEvent e)
2605   {
2606   }
2607
2608   protected void buildSortByAnnotationScoresMenu()
2609   {
2610   }
2611
2612   protected void extractScores_actionPerformed(ActionEvent e)
2613   {
2614   }
2615
2616   protected void outputText_actionPerformed(ActionEvent e)
2617   {
2618   }
2619
2620   public void addFromFile_actionPerformed(ActionEvent e)
2621   {
2622
2623   }
2624
2625   public void addFromText_actionPerformed(ActionEvent e)
2626   {
2627
2628   }
2629
2630   public void addFromURL_actionPerformed(ActionEvent e)
2631   {
2632
2633   }
2634
2635   public void exportFeatures_actionPerformed(ActionEvent e)
2636   {
2637
2638   }
2639
2640   public void exportAnnotations_actionPerformed(ActionEvent e)
2641   {
2642
2643   }
2644
2645   protected void htmlMenuItem_actionPerformed(ActionEvent e)
2646   {
2647   }
2648
2649   protected void bioJSMenuItem_actionPerformed(ActionEvent e)
2650   {
2651
2652   }
2653
2654   protected void closeMenuItem_actionPerformed(boolean b)
2655   {
2656   }
2657
2658   protected void redoMenuItem_actionPerformed(ActionEvent e)
2659   {
2660   }
2661
2662   protected void undoMenuItem_actionPerformed(ActionEvent e)
2663   {
2664   }
2665
2666   protected void selectAllSequenceMenuItem_actionPerformed(ActionEvent e)
2667   {
2668   }
2669
2670   protected void deselectAllSequenceMenuItem_actionPerformed(ActionEvent e)
2671   {
2672   }
2673
2674   protected void invertSequenceMenuItem_actionPerformed(ActionEvent e)
2675   {
2676   }
2677
2678   protected void remove2LeftMenuItem_actionPerformed(ActionEvent e)
2679   {
2680   }
2681
2682   protected void remove2RightMenuItem_actionPerformed(ActionEvent e)
2683   {
2684   }
2685
2686   protected void removeGappedColumnMenuItem_actionPerformed(ActionEvent e)
2687   {
2688   }
2689
2690   protected void removeAllGapsMenuItem_actionPerformed(ActionEvent e)
2691   {
2692   }
2693
2694   protected void wrapMenuItem_actionPerformed(ActionEvent e)
2695   {
2696   }
2697
2698   protected void viewBoxesMenuItem_actionPerformed(ActionEvent e)
2699   {
2700   }
2701
2702   protected void viewTextMenuItem_actionPerformed(ActionEvent e)
2703   {
2704   }
2705
2706   protected void colourTextMenuItem_actionPerformed(ActionEvent e)
2707   {
2708   }
2709
2710   protected void annotationPanelMenuItem_actionPerformed(ActionEvent e)
2711   {
2712   }
2713
2714   protected void overviewMenuItem_actionPerformed(ActionEvent e)
2715   {
2716   }
2717
2718   protected void sortPairwiseMenuItem_actionPerformed(ActionEvent e)
2719   {
2720   }
2721
2722   protected void sortIDMenuItem_actionPerformed(ActionEvent e)
2723   {
2724   }
2725
2726   protected void sortLengthMenuItem_actionPerformed(ActionEvent e)
2727   {
2728   }
2729
2730   protected void sortGroupMenuItem_actionPerformed(ActionEvent e)
2731   {
2732   }
2733
2734   protected void removeRedundancyMenuItem_actionPerformed(ActionEvent e)
2735   {
2736   }
2737
2738   protected void pairwiseAlignmentMenuItem_actionPerformed(ActionEvent e)
2739   {
2740   }
2741
2742   protected void PCAMenuItem_actionPerformed(ActionEvent e)
2743   {
2744   }
2745
2746   protected void averageDistanceTreeMenuItem_actionPerformed(ActionEvent e)
2747   {
2748   }
2749
2750   protected void neighbourTreeMenuItem_actionPerformed(ActionEvent e)
2751   {
2752   }
2753
2754   protected void njTreeBlosumMenuItem_actionPerformed(ActionEvent e)
2755   {
2756   }
2757
2758   protected void avTreeBlosumMenuItem_actionPerformed(ActionEvent e)
2759   {
2760   }
2761
2762   protected void clustalColour_actionPerformed(ActionEvent e)
2763   {
2764   }
2765
2766   protected void zappoColour_actionPerformed(ActionEvent e)
2767   {
2768   }
2769
2770   protected void taylorColour_actionPerformed(ActionEvent e)
2771   {
2772   }
2773
2774   protected void hydrophobicityColour_actionPerformed(ActionEvent e)
2775   {
2776   }
2777
2778   protected void helixColour_actionPerformed(ActionEvent e)
2779   {
2780   }
2781
2782   protected void strandColour_actionPerformed(ActionEvent e)
2783   {
2784   }
2785
2786   protected void turnColour_actionPerformed(ActionEvent e)
2787   {
2788   }
2789
2790   protected void buriedColour_actionPerformed(ActionEvent e)
2791   {
2792   }
2793
2794   protected void userDefinedColour_actionPerformed(ActionEvent e)
2795   {
2796   }
2797
2798   protected void PIDColour_actionPerformed(ActionEvent e)
2799   {
2800   }
2801
2802   protected void BLOSUM62Colour_actionPerformed(ActionEvent e)
2803   {
2804   }
2805
2806   protected void purinePyrimidineColour_actionPerformed(ActionEvent e)
2807   {
2808   }
2809
2810   protected void RNAInteractionColour_actionPerformed(ActionEvent e)
2811   {
2812   }
2813
2814   /*
2815    * protected void covariationColour_actionPerformed(ActionEvent e) { }
2816    */
2817
2818   protected void noColourmenuItem_actionPerformed(ActionEvent e)
2819   {
2820   }
2821
2822   protected void conservationMenuItem_actionPerformed()
2823   {
2824   }
2825
2826   protected void printMenuItem_actionPerformed(ActionEvent e)
2827   {
2828   }
2829
2830   protected void renderGapsMenuItem_actionPerformed(ActionEvent e)
2831   {
2832   }
2833
2834   protected void findMenuItem_actionPerformed(ActionEvent e)
2835   {
2836   }
2837
2838   protected void abovePIDThreshold_actionPerformed()
2839   {
2840   }
2841
2842   public void showSeqFeatures_actionPerformed(ActionEvent actionEvent)
2843   {
2844   }
2845
2846   protected void nucleotideColour_actionPerformed(ActionEvent e)
2847   {
2848   }
2849
2850   protected void deleteGroups_actionPerformed(ActionEvent e)
2851   {
2852   }
2853
2854   protected void createGroup_actionPerformed(ActionEvent e)
2855   {
2856   }
2857
2858   protected void unGroup_actionPerformed(ActionEvent e)
2859   {
2860   }
2861
2862   protected void copy_actionPerformed(ActionEvent e)
2863   {
2864   }
2865
2866   protected void cut_actionPerformed(ActionEvent e)
2867   {
2868   }
2869
2870   protected void delete_actionPerformed(ActionEvent e)
2871   {
2872   }
2873
2874   protected void pasteNew_actionPerformed(ActionEvent e)
2875   {
2876   }
2877
2878   protected void pasteThis_actionPerformed(ActionEvent e)
2879   {
2880   }
2881
2882   protected void applyToAllGroups_actionPerformed(ActionEvent e)
2883   {
2884   }
2885
2886   public void createPNG(java.io.File f)
2887   {
2888   }
2889
2890   protected void font_actionPerformed(ActionEvent e)
2891   {
2892   }
2893
2894   protected void seqLimit_actionPerformed(ActionEvent e)
2895   {
2896   }
2897
2898   public void seqDBRef_actionPerformed(ActionEvent e)
2899   {
2900
2901   }
2902
2903   public void createEPS(java.io.File f)
2904   {
2905   }
2906
2907   public void createSVG(java.io.File f)
2908   {
2909
2910   }
2911
2912   protected void loadTreeMenuItem_actionPerformed(ActionEvent e)
2913   {
2914
2915   }
2916
2917   /**
2918    * Template method to handle the 'load T-Coffee scores' menu event.
2919    * <p>
2920    * Subclasses override this method to provide a custom action.
2921    * 
2922    * @param event
2923    *          The raised event
2924    */
2925   protected void loadScores_actionPerformed(ActionEvent event)
2926   {
2927
2928   }
2929
2930   /**
2931    * Template method to handle the 'Color T-Coffee scores' menu event.
2932    * <p>
2933    * Subclasses override this method to provide a custom action.
2934    * 
2935    * @param event
2936    *          The raised event
2937    */
2938   protected void tcoffeeColorScheme_actionPerformed(ActionEvent event)
2939   {
2940
2941   }
2942
2943   protected void jpred_actionPerformed(ActionEvent e)
2944   {
2945   }
2946
2947   protected void scaleAbove_actionPerformed(ActionEvent e)
2948   {
2949   }
2950
2951   protected void scaleLeft_actionPerformed(ActionEvent e)
2952   {
2953   }
2954
2955   protected void scaleRight_actionPerformed(ActionEvent e)
2956   {
2957   }
2958
2959   protected void modifyPID_actionPerformed()
2960   {
2961   }
2962
2963   protected void modifyConservation_actionPerformed()
2964   {
2965   }
2966
2967   protected void saveAs_actionPerformed(ActionEvent e)
2968   {
2969   }
2970
2971   protected void padGapsMenuitem_actionPerformed(ActionEvent e)
2972   {
2973   }
2974
2975   public void vamsasStore_actionPerformed(ActionEvent e)
2976   {
2977
2978   }
2979
2980   public void vamsasLoad_actionPerformed(ActionEvent e)
2981   {
2982
2983   }
2984
2985   public void showTranslation_actionPerformed(ActionEvent e)
2986   {
2987
2988   }
2989
2990   public void featureSettings_actionPerformed(ActionEvent e)
2991   {
2992
2993   }
2994
2995   public void fetchSequence_actionPerformed(ActionEvent e)
2996   {
2997
2998   }
2999
3000   public void smoothFont_actionPerformed(ActionEvent e)
3001   {
3002
3003   }
3004
3005   public void annotationColour_actionPerformed(ActionEvent e)
3006   {
3007
3008   }
3009
3010   public void annotationColumn_actionPerformed(ActionEvent e)
3011   {
3012
3013   }
3014
3015   public void rnahelicesColour_actionPerformed(ActionEvent e)
3016   {
3017
3018   }
3019
3020   public void associatedData_actionPerformed(ActionEvent e)
3021   {
3022
3023   }
3024
3025   public void autoCalculate_actionPerformed(ActionEvent e)
3026   {
3027
3028   }
3029
3030   public void sortByTreeOption_actionPerformed(ActionEvent e)
3031   {
3032
3033   }
3034
3035   public void showAllSeqs_actionPerformed(ActionEvent e)
3036   {
3037
3038   }
3039
3040   public void showAllColumns_actionPerformed(ActionEvent e)
3041   {
3042
3043   }
3044
3045   public void hideSelSequences_actionPerformed(ActionEvent e)
3046   {
3047
3048   }
3049
3050   public void hideSelColumns_actionPerformed(ActionEvent e)
3051   {
3052
3053   }
3054
3055   public void hiddenMarkers_actionPerformed(ActionEvent e)
3056   {
3057
3058   }
3059
3060   public void findPdbId_actionPerformed(ActionEvent e)
3061   {
3062
3063   }
3064
3065   public void enterPdbId_actionPerformed(ActionEvent e)
3066   {
3067
3068   }
3069
3070   public void pdbFile_actionPerformed(ActionEvent e)
3071   {
3072
3073   }
3074
3075   public void invertColSel_actionPerformed(ActionEvent e)
3076   {
3077
3078   }
3079
3080   public void tabSelectionChanged(int sel)
3081   {
3082
3083   }
3084
3085   public void tabbedPane_mousePressed(MouseEvent e)
3086   {
3087
3088   }
3089
3090   public void tabbedPane_focusGained(FocusEvent e)
3091   {
3092     requestFocus();
3093   }
3094
3095   public void save_actionPerformed(ActionEvent e)
3096   {
3097
3098   }
3099
3100   public void reload_actionPerformed(ActionEvent e)
3101   {
3102
3103   }
3104
3105   public void newView_actionPerformed(ActionEvent e)
3106   {
3107
3108   }
3109
3110   public void textColour_actionPerformed(ActionEvent e)
3111   {
3112
3113   }
3114
3115   public void idRightAlign_actionPerformed(ActionEvent e)
3116   {
3117
3118   }
3119
3120   public void expandViews_actionPerformed(ActionEvent e)
3121   {
3122
3123   }
3124
3125   public void gatherViews_actionPerformed(ActionEvent e)
3126   {
3127
3128   }
3129
3130   public void buildTreeMenu()
3131   {
3132
3133   }
3134
3135   public void pageSetup_actionPerformed(ActionEvent e)
3136   {
3137
3138   }
3139
3140   public void alignmentProperties()
3141   {
3142
3143   }
3144
3145   protected void expand_newalign(ActionEvent e)
3146   {
3147     // TODO Auto-generated method stub
3148
3149   }
3150
3151   protected boolean isShowAutoCalculatedAbove()
3152   {
3153     return showAutoCalculatedAbove;
3154   }
3155
3156   protected void setShowAutoCalculatedAbove(boolean showAutoCalculatedAbove)
3157   {
3158     this.showAutoCalculatedAbove = showAutoCalculatedAbove;
3159   }
3160
3161   protected SequenceAnnotationOrder getAnnotationSortOrder()
3162   {
3163     return annotationSortOrder;
3164   }
3165
3166   protected void setAnnotationSortOrder(
3167           SequenceAnnotationOrder annotationSortOrder)
3168   {
3169     this.annotationSortOrder = annotationSortOrder;
3170   }
3171
3172   public Map<KeyStroke, JMenuItem> getAccelerators()
3173   {
3174     return this.accelerators;
3175   }
3176
3177   /**
3178    * Returns the selected index of the tabbed pane, or -1 if none selected
3179    * (including the case where the tabbed pane has not been made visible).
3180    * 
3181    * @return
3182    */
3183   public int getTabIndex()
3184   {
3185     return tabbedPane.getSelectedIndex();
3186   }
3187
3188   public JPanel getStatusPanel()
3189   {
3190     return statusPanel;
3191   }
3192
3193   /**
3194    * Sets a reference to the containing split frame. Also makes the 'toggle
3195    * split view' menu item visible and checked.
3196    * 
3197    * @param sf
3198    */
3199   public void setSplitFrame(SplitContainerI sf)
3200   {
3201     this.splitFrame = sf;
3202     if (sf != null)
3203     {
3204       this.showComplementMenuItem.setVisible(true);
3205       this.showComplementMenuItem.setState(true);
3206     }
3207   }
3208
3209   public SplitContainerI getSplitViewContainer()
3210   {
3211     return this.splitFrame;
3212   }
3213
3214   protected void showComplement_actionPerformed(boolean complement)
3215   {
3216   }
3217 }