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