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