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