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