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