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