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