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