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