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