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