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