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