2a77a5722236b31e2b119be7c40f0444c29e220a
[jalview.git] / src / jalview / jbgui / GAlignFrame.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9.0b1)
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     final boolean autoFirst = Cache.getDefault(
1299             Preferences.SHOW_AUTOCALC_ABOVE, false);
1300     showAutoFirst.setSelected(autoFirst);
1301     setShowAutoCalculatedAbove(autoFirst);
1302     showAutoFirst.addActionListener(new ActionListener()
1303     {
1304       @Override
1305       public void actionPerformed(ActionEvent e)
1306       {
1307         setShowAutoCalculatedAbove(showAutoFirst.isSelected());
1308         sortAnnotations_actionPerformed();
1309       }
1310     });
1311     showAutoLast.setSelected(!showAutoFirst.isSelected());
1312     showAutoLast.addActionListener(new ActionListener()
1313     {
1314       @Override
1315       public void actionPerformed(ActionEvent e)
1316       {
1317         setShowAutoCalculatedAbove(!showAutoLast.isSelected());
1318         sortAnnotations_actionPerformed();
1319       }
1320     });
1321
1322     nucleotideColour.setText(MessageManager.getString("label.nucleotide"));
1323     nucleotideColour.addActionListener(new ActionListener()
1324     {
1325       @Override
1326       public void actionPerformed(ActionEvent e)
1327       {
1328         nucleotideColour_actionPerformed(e);
1329       }
1330     });
1331
1332     tcoffeeColour.setText(MessageManager.getString("label.tcoffee_scores"));
1333     tcoffeeColour.setEnabled(false);
1334     tcoffeeColour.addActionListener(new ActionListener()
1335     {
1336
1337       @Override
1338       public void actionPerformed(ActionEvent e)
1339       {
1340         tcoffeeColorScheme_actionPerformed(e);
1341       }
1342     });
1343
1344     JMenuItem deleteGroups = new JMenuItem(
1345             MessageManager.getString("action.undefine_groups"));
1346     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_U, Toolkit
1347             .getDefaultToolkit().getMenuShortcutKeyMask(), false);
1348     al = new ActionListener()
1349     {
1350       @Override
1351       public void actionPerformed(ActionEvent e)
1352       {
1353         deleteGroups_actionPerformed(e);
1354       }
1355     };
1356     addMenuActionAndAccelerator(keyStroke, deleteGroups, al);
1357
1358     JMenuItem createGroup = new JMenuItem(
1359             MessageManager.getString("action.create_groups"));
1360     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_G, Toolkit
1361             .getDefaultToolkit().getMenuShortcutKeyMask(), false);
1362     al = new ActionListener()
1363     {
1364       @Override
1365       public void actionPerformed(ActionEvent e)
1366       {
1367         createGroup_actionPerformed(e);
1368       }
1369     };
1370     addMenuActionAndAccelerator(keyStroke, createGroup, al);
1371
1372     JMenuItem unGroup = new JMenuItem(
1373             MessageManager.getString("action.remove_group"));
1374     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_G, Toolkit
1375             .getDefaultToolkit().getMenuShortcutKeyMask()
1376             | KeyEvent.SHIFT_MASK, false);
1377     al = new ActionListener()
1378     {
1379       @Override
1380       public void actionPerformed(ActionEvent e)
1381       {
1382         unGroup_actionPerformed(e);
1383       }
1384     };
1385     addMenuActionAndAccelerator(keyStroke, unGroup, al);
1386
1387     copy.setText(MessageManager.getString("action.copy"));
1388     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_C, Toolkit
1389             .getDefaultToolkit().getMenuShortcutKeyMask(), false);
1390
1391     al = new ActionListener()
1392     {
1393       @Override
1394       public void actionPerformed(ActionEvent e)
1395       {
1396         copy_actionPerformed(e);
1397       }
1398     };
1399     addMenuActionAndAccelerator(keyStroke, copy, al);
1400
1401     cut.setText(MessageManager.getString("action.cut"));
1402     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_X, Toolkit
1403             .getDefaultToolkit().getMenuShortcutKeyMask(), false);
1404     al = new ActionListener()
1405     {
1406       @Override
1407       public void actionPerformed(ActionEvent e)
1408       {
1409         cut_actionPerformed(e);
1410       }
1411     };
1412     addMenuActionAndAccelerator(keyStroke, cut, al);
1413
1414     JMenuItem delete = new JMenuItem(
1415             MessageManager.getString("action.delete"));
1416     delete.addActionListener(new ActionListener()
1417     {
1418       @Override
1419       public void actionPerformed(ActionEvent e)
1420       {
1421         delete_actionPerformed(e);
1422       }
1423     });
1424
1425     pasteMenu.setText(MessageManager.getString("action.paste"));
1426     JMenuItem pasteNew = new JMenuItem(
1427             MessageManager.getString("label.to_new_alignment"));
1428     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_V, Toolkit
1429             .getDefaultToolkit().getMenuShortcutKeyMask()
1430             | KeyEvent.SHIFT_MASK, false);
1431     al = new ActionListener()
1432     {
1433       @Override
1434       public void actionPerformed(ActionEvent e)
1435       {
1436         pasteNew_actionPerformed(e);
1437       }
1438     };
1439     addMenuActionAndAccelerator(keyStroke, pasteNew, al);
1440
1441     JMenuItem pasteThis = new JMenuItem(
1442             MessageManager.getString("label.to_this_alignment"));
1443     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_V, Toolkit
1444             .getDefaultToolkit().getMenuShortcutKeyMask(), false);
1445     al = new ActionListener()
1446     {
1447       @Override
1448       public void actionPerformed(ActionEvent e)
1449       {
1450         pasteThis_actionPerformed(e);
1451       }
1452     };
1453     addMenuActionAndAccelerator(keyStroke, pasteThis, al);
1454
1455     applyToAllGroups.setText(MessageManager
1456             .getString("label.apply_colour_to_all_groups"));
1457     applyToAllGroups.addActionListener(new ActionListener()
1458     {
1459       @Override
1460       public void actionPerformed(ActionEvent e)
1461       {
1462         applyToAllGroups_actionPerformed(e);
1463       }
1464     });
1465     JMenuItem createPNG = new JMenuItem("PNG");
1466     createPNG.addActionListener(new ActionListener()
1467     {
1468       @Override
1469       public void actionPerformed(ActionEvent e)
1470       {
1471         createPNG(null);
1472       }
1473     });
1474     createPNG.setActionCommand(MessageManager
1475             .getString("label.save_png_image"));
1476
1477     JMenuItem font = new JMenuItem(MessageManager.getString("action.font"));
1478     font.addActionListener(new ActionListener()
1479     {
1480       @Override
1481       public void actionPerformed(ActionEvent e)
1482       {
1483         font_actionPerformed(e);
1484       }
1485     });
1486     seqLimits.setText(MessageManager
1487             .getString("label.show_sequence_limits"));
1488     seqLimits.setState(jalview.bin.Cache.getDefault("SHOW_JVSUFFIX", true));
1489     seqLimits.addActionListener(new ActionListener()
1490     {
1491       @Override
1492       public void actionPerformed(ActionEvent e)
1493       {
1494         seqLimit_actionPerformed(e);
1495       }
1496     });
1497     JMenuItem epsFile = new JMenuItem("EPS");
1498     epsFile.addActionListener(new ActionListener()
1499     {
1500       @Override
1501       public void actionPerformed(ActionEvent e)
1502       {
1503         createEPS(null);
1504       }
1505     });
1506
1507     JMenuItem createSVG = new JMenuItem("SVG");
1508     createSVG.addActionListener(new ActionListener()
1509     {
1510       @Override
1511       public void actionPerformed(ActionEvent e)
1512       {
1513         createSVG(null);
1514       }
1515     });
1516
1517     JMenuItem loadTreeMenuItem = new JMenuItem(
1518             MessageManager.getString("label.load_associated_tree"));
1519     loadTreeMenuItem.setActionCommand(MessageManager
1520             .getString("label.load_tree_for_sequence_set"));
1521     loadTreeMenuItem.addActionListener(new ActionListener()
1522     {
1523       @Override
1524       public void actionPerformed(ActionEvent e)
1525       {
1526         loadTreeMenuItem_actionPerformed(e);
1527       }
1528     });
1529
1530     scaleAbove.setVisible(false);
1531     scaleAbove.setText(MessageManager.getString("action.scale_above"));
1532     scaleAbove.addActionListener(new ActionListener()
1533     {
1534       @Override
1535       public void actionPerformed(ActionEvent e)
1536       {
1537         scaleAbove_actionPerformed(e);
1538       }
1539     });
1540     scaleLeft.setVisible(false);
1541     scaleLeft.setSelected(true);
1542     scaleLeft.setText(MessageManager.getString("action.scale_left"));
1543     scaleLeft.addActionListener(new ActionListener()
1544     {
1545       @Override
1546       public void actionPerformed(ActionEvent e)
1547       {
1548         scaleLeft_actionPerformed(e);
1549       }
1550     });
1551     scaleRight.setVisible(false);
1552     scaleRight.setSelected(true);
1553     scaleRight.setText(MessageManager.getString("action.scale_right"));
1554     scaleRight.addActionListener(new ActionListener()
1555     {
1556       @Override
1557       public void actionPerformed(ActionEvent e)
1558       {
1559         scaleRight_actionPerformed(e);
1560       }
1561     });
1562     centreColumnLabelsMenuItem.setVisible(true);
1563     centreColumnLabelsMenuItem.setState(false);
1564     centreColumnLabelsMenuItem.setText(MessageManager
1565             .getString("label.centre_column_labels"));
1566     centreColumnLabelsMenuItem.addActionListener(new ActionListener()
1567     {
1568       @Override
1569       public void actionPerformed(ActionEvent e)
1570       {
1571         centreColumnLabels_actionPerformed(e);
1572       }
1573     });
1574     followHighlightMenuItem.setVisible(true);
1575     followHighlightMenuItem.setState(true);
1576     followHighlightMenuItem.setText(MessageManager
1577             .getString("label.automatic_scrolling"));
1578     followHighlightMenuItem.addActionListener(new ActionListener()
1579     {
1580
1581       @Override
1582       public void actionPerformed(ActionEvent e)
1583       {
1584         followHighlight_actionPerformed();
1585       }
1586
1587     });
1588
1589     JMenuItem modifyPID = new JMenuItem(
1590             MessageManager.getString("label.modify_identity_thereshold"));
1591     modifyPID.addActionListener(new ActionListener()
1592     {
1593       @Override
1594       public void actionPerformed(ActionEvent e)
1595       {
1596         modifyPID_actionPerformed(e);
1597       }
1598     });
1599     modifyConservation.setText(MessageManager
1600             .getString("label.modify_conservation_thereshold"));
1601     modifyConservation.addActionListener(new ActionListener()
1602     {
1603       @Override
1604       public void actionPerformed(ActionEvent e)
1605       {
1606         modifyConservation_actionPerformed(e);
1607       }
1608     });
1609     sortByTreeMenu
1610             .setText(MessageManager.getString("action.by_tree_order"));
1611     sort.setText(MessageManager.getString("action.sort"));
1612     sort.addMenuListener(new MenuListener()
1613     {
1614       @Override
1615       public void menuSelected(MenuEvent e)
1616       {
1617         buildTreeMenu();
1618       }
1619
1620       @Override
1621       public void menuDeselected(MenuEvent e)
1622       {
1623       }
1624
1625       @Override
1626       public void menuCanceled(MenuEvent e)
1627       {
1628       }
1629     });
1630     sortByAnnotScore.setText(MessageManager
1631             .getString("label.sort_by_score"));
1632     sort.add(sortByAnnotScore);
1633     sort.addMenuListener(new javax.swing.event.MenuListener()
1634     {
1635
1636       @Override
1637       public void menuCanceled(MenuEvent e)
1638       {
1639       }
1640
1641       @Override
1642       public void menuDeselected(MenuEvent e)
1643       {
1644       }
1645
1646       @Override
1647       public void menuSelected(MenuEvent e)
1648       {
1649         buildSortByAnnotationScoresMenu();
1650       }
1651     });
1652     sortByAnnotScore.setVisible(false);
1653
1654     calculateTree
1655             .setText(MessageManager.getString("action.calculate_tree"));
1656
1657     padGapsMenuitem.setText(MessageManager.getString("label.pad_gaps"));
1658     padGapsMenuitem.setState(jalview.bin.Cache
1659             .getDefault("PAD_GAPS", false));
1660     padGapsMenuitem.addActionListener(new ActionListener()
1661     {
1662       @Override
1663       public void actionPerformed(ActionEvent e)
1664       {
1665         padGapsMenuitem_actionPerformed(e);
1666       }
1667     });
1668     JMenuItem vamsasStore = new JMenuItem(
1669             MessageManager.getString("label.vamsas_store"));
1670     vamsasStore.setVisible(false);
1671     vamsasStore.addActionListener(new ActionListener()
1672     {
1673       @Override
1674       public void actionPerformed(ActionEvent e)
1675       {
1676         vamsasStore_actionPerformed(e);
1677       }
1678     });
1679     showTranslation.setText(MessageManager
1680             .getString("label.translate_cDNA"));
1681     showTranslation.addActionListener(new ActionListener()
1682     {
1683       @Override
1684       public void actionPerformed(ActionEvent e)
1685       {
1686         showTranslation_actionPerformed(e);
1687       }
1688     });
1689
1690     JMenuItem extractScores = new JMenuItem(
1691             MessageManager.getString("label.extract_scores"));
1692     extractScores.addActionListener(new ActionListener()
1693     {
1694       @Override
1695       public void actionPerformed(ActionEvent e)
1696       {
1697         extractScores_actionPerformed(e);
1698       }
1699     });
1700     extractScores.setVisible(true);
1701     // JBPNote: TODO: make gui for regex based score extraction
1702
1703     // for show products actions see AlignFrame.canShowProducts
1704     showProducts.setText(MessageManager.getString("label.get_cross_refs"));
1705
1706     JMenuItem openFeatureSettings = new JMenuItem(
1707             MessageManager.getString("action.feature_settings"));
1708     openFeatureSettings.addActionListener(new ActionListener()
1709     {
1710       @Override
1711       public void actionPerformed(ActionEvent e)
1712       {
1713         featureSettings_actionPerformed(e);
1714       }
1715     });
1716     JMenuItem fetchSequence = new JMenuItem(
1717             MessageManager.getString("label.fetch_sequences"));
1718     fetchSequence.addActionListener(new ActionListener()
1719     {
1720       @Override
1721       public void actionPerformed(ActionEvent e)
1722       {
1723         fetchSequence_actionPerformed(e);
1724       }
1725     });
1726
1727     JMenuItem annotationColour = new JMenuItem(
1728             MessageManager.getString("action.by_annotation"));
1729     annotationColour.addActionListener(new ActionListener()
1730     {
1731       @Override
1732       public void actionPerformed(ActionEvent e)
1733       {
1734         annotationColour_actionPerformed(e);
1735       }
1736     });
1737
1738     JMenuItem annotationColumn = new JMenuItem(
1739             MessageManager.getString("action.select_by_annotation"));
1740     annotationColumn.addActionListener(new ActionListener()
1741     {
1742       @Override
1743       public void actionPerformed(ActionEvent e)
1744       {
1745         annotationColumn_actionPerformed(e);
1746       }
1747     });
1748
1749     rnahelicesColour.setText(MessageManager
1750             .getString("action.by_rna_helixes"));
1751     rnahelicesColour.addActionListener(new ActionListener()
1752     {
1753       @Override
1754       public void actionPerformed(ActionEvent e)
1755       {
1756         rnahelicesColour_actionPerformed(e);
1757       }
1758     });
1759
1760     JMenuItem associatedData = new JMenuItem(
1761             MessageManager.getString("label.load_features_annotations"));
1762     associatedData.addActionListener(new ActionListener()
1763     {
1764       @Override
1765       public void actionPerformed(ActionEvent e)
1766       {
1767         associatedData_actionPerformed(e);
1768       }
1769     });
1770     autoCalculate.setText(MessageManager
1771             .getString("label.autocalculate_consensus"));
1772     autoCalculate.setState(jalview.bin.Cache.getDefault(
1773             "AUTO_CALC_CONSENSUS", true));
1774     autoCalculate.addActionListener(new ActionListener()
1775     {
1776       @Override
1777       public void actionPerformed(ActionEvent e)
1778       {
1779         autoCalculate_actionPerformed(e);
1780       }
1781     });
1782     sortByTree.setText(MessageManager
1783             .getString("label.sort_alignment_new_tree"));
1784     sortByTree
1785             .setToolTipText("<html>"
1786                     + MessageManager
1787                             .getString("label.enable_automatically_sort_alignment_when_open_new_tree"));
1788     sortByTree
1789             .setState(jalview.bin.Cache.getDefault("SORT_BY_TREE", false));
1790     sortByTree.addActionListener(new ActionListener()
1791     {
1792       @Override
1793       public void actionPerformed(ActionEvent e)
1794       {
1795         sortByTreeOption_actionPerformed(e);
1796       }
1797     });
1798
1799     listenToViewSelections.setText(MessageManager
1800             .getString("label.listen_for_selections"));
1801     listenToViewSelections
1802             .setToolTipText("<html>"
1803                     + MessageManager
1804                             .getString("label.selections_mirror_selections_made_same_sequences_other_views"));
1805     listenToViewSelections.setState(false);
1806     listenToViewSelections.addActionListener(new ActionListener()
1807     {
1808       @Override
1809       public void actionPerformed(ActionEvent e)
1810       {
1811         listenToViewSelections_actionPerformed(e);
1812       }
1813     });
1814
1815     JMenu addSequenceMenu = new JMenu(
1816             MessageManager.getString("label.add_sequences"));
1817     JMenuItem addFromFile = new JMenuItem(
1818             MessageManager.getString("label.from_file"));
1819     addFromFile.addActionListener(new ActionListener()
1820     {
1821       @Override
1822       public void actionPerformed(ActionEvent e)
1823       {
1824         addFromFile_actionPerformed(e);
1825       }
1826     });
1827     JMenuItem addFromText = new JMenuItem(
1828             MessageManager.getString("label.from_textbox"));
1829     addFromText.addActionListener(new ActionListener()
1830     {
1831       @Override
1832       public void actionPerformed(ActionEvent e)
1833       {
1834         addFromText_actionPerformed(e);
1835       }
1836     });
1837     JMenuItem addFromURL = new JMenuItem(
1838             MessageManager.getString("label.from_url"));
1839     addFromURL.addActionListener(new ActionListener()
1840     {
1841       @Override
1842       public void actionPerformed(ActionEvent e)
1843       {
1844         addFromURL_actionPerformed(e);
1845       }
1846     });
1847     JMenuItem exportFeatures = new JMenuItem(
1848             MessageManager.getString("label.export_features"));
1849     exportFeatures.addActionListener(new ActionListener()
1850     {
1851       @Override
1852       public void actionPerformed(ActionEvent e)
1853       {
1854         exportFeatures_actionPerformed(e);
1855       }
1856     });
1857     JMenuItem exportAnnotations = new JMenuItem(
1858             MessageManager.getString("label.export_annotations"));
1859     exportAnnotations.addActionListener(new ActionListener()
1860     {
1861       @Override
1862       public void actionPerformed(ActionEvent e)
1863       {
1864         exportAnnotations_actionPerformed(e);
1865       }
1866     });
1867     statusPanel.setLayout(new GridLayout());
1868     JMenuItem showAllSeqs = new JMenuItem(
1869             MessageManager.getString("label.all_sequences"));
1870     showAllSeqs.setToolTipText(MessageManager
1871             .getString("label.toggle_sequence_visibility"));
1872     showAllSeqs.addActionListener(new ActionListener()
1873     {
1874       @Override
1875       public void actionPerformed(ActionEvent e)
1876       {
1877         showAllSeqs_actionPerformed(e);
1878       }
1879     });
1880     JMenuItem showAllColumns = new JMenuItem(
1881             MessageManager.getString("label.all_columns"));
1882     showAllColumns.setToolTipText(MessageManager
1883             .getString("label.toggle_columns_visibility"));
1884     showAllColumns.addActionListener(new ActionListener()
1885     {
1886       @Override
1887       public void actionPerformed(ActionEvent e)
1888       {
1889         showAllColumns_actionPerformed(e);
1890       }
1891     });
1892     JMenu hideMenu = new JMenu(MessageManager.getString("action.hide"));
1893     JMenuItem hideSelSequences = new JMenuItem(
1894             MessageManager.getString("label.selected_sequences"));
1895     hideSelSequences.setToolTipText(MessageManager
1896             .getString("label.toggle_sequence_visibility"));
1897     hideSelSequences.addActionListener(new ActionListener()
1898     {
1899       @Override
1900       public void actionPerformed(ActionEvent e)
1901       {
1902         hideSelSequences_actionPerformed(e);
1903       }
1904     });
1905     JMenuItem hideSelColumns = new JMenuItem(
1906             MessageManager.getString("label.selected_columns"));
1907     hideSelColumns.setToolTipText(MessageManager
1908             .getString("label.toggle_columns_visibility"));
1909     hideSelColumns.addActionListener(new ActionListener()
1910     {
1911       @Override
1912       public void actionPerformed(ActionEvent e)
1913       {
1914         hideSelColumns_actionPerformed(e);
1915       }
1916     });
1917     JMenuItem hideAllSelection = new JMenuItem(
1918             MessageManager.getString("label.selected_region"));
1919     hideAllSelection.addActionListener(new ActionListener()
1920     {
1921       @Override
1922       public void actionPerformed(ActionEvent e)
1923       {
1924         hideAllSelection_actionPerformed(e);
1925       }
1926     });
1927     // TODO: should be hidden if no selection exists.
1928     JMenuItem hideAllButSelection = new JMenuItem(
1929             MessageManager.getString("label.all_but_selected_region"));
1930     hideAllButSelection.addActionListener(new ActionListener()
1931     {
1932       @Override
1933       public void actionPerformed(ActionEvent e)
1934       {
1935         hideAllButSelection_actionPerformed(e);
1936       }
1937     });
1938     JMenuItem showAllhidden = new JMenuItem(
1939             MessageManager.getString("label.all_sequences_columns"));
1940     showAllhidden.setToolTipText(MessageManager
1941             .getString("label.toggles_visibility_hidden_selected_regions"));
1942     showAllhidden.addActionListener(new ActionListener()
1943     {
1944       @Override
1945       public void actionPerformed(ActionEvent e)
1946       {
1947         showAllhidden_actionPerformed(e);
1948       }
1949     });
1950     hiddenMarkers.setText(MessageManager
1951             .getString("action.show_hidden_markers"));
1952     hiddenMarkers.addActionListener(new ActionListener()
1953     {
1954       @Override
1955       public void actionPerformed(ActionEvent e)
1956       {
1957         hiddenMarkers_actionPerformed(e);
1958       }
1959     });
1960
1961     JMenuItem invertColSel = new JMenuItem(
1962             MessageManager.getString("action.invert_column_selection"));
1963     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_I, Toolkit
1964             .getDefaultToolkit().getMenuShortcutKeyMask()
1965             | KeyEvent.ALT_MASK, false);
1966     al = new ActionListener()
1967     {
1968       @Override
1969       public void actionPerformed(ActionEvent e)
1970       {
1971         invertColSel_actionPerformed(e);
1972       }
1973     };
1974     addMenuActionAndAccelerator(keyStroke, invertColSel, al);
1975
1976     showComplementMenuItem.setVisible(false);
1977     showComplementMenuItem.addActionListener(new ActionListener()
1978     {
1979       @Override
1980       public void actionPerformed(ActionEvent e)
1981       {
1982         showComplement_actionPerformed(showComplementMenuItem.getState());
1983       }
1984     });
1985
1986     tabbedPane.addChangeListener(new javax.swing.event.ChangeListener()
1987     {
1988       @Override
1989       public void stateChanged(ChangeEvent evt)
1990       {
1991         JTabbedPane pane = (JTabbedPane) evt.getSource();
1992         int sel = pane.getSelectedIndex();
1993         tabSelectionChanged(sel);
1994       }
1995     });
1996     tabbedPane.addMouseListener(new MouseAdapter()
1997     {
1998       @Override
1999       public void mousePressed(MouseEvent e)
2000       {
2001         tabbedPane_mousePressed(e);
2002       }
2003     });
2004     tabbedPane.addFocusListener(new FocusAdapter()
2005     {
2006       @Override
2007       public void focusGained(FocusEvent e)
2008       {
2009         tabbedPane_focusGained(e);
2010       }
2011     });
2012
2013     JMenuItem save = new JMenuItem(MessageManager.getString("action.save"));
2014     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_S, Toolkit
2015             .getDefaultToolkit().getMenuShortcutKeyMask(), false);
2016     al = new ActionListener()
2017     {
2018       @Override
2019       public void actionPerformed(ActionEvent e)
2020       {
2021         save_actionPerformed(e);
2022       }
2023     };
2024     addMenuActionAndAccelerator(keyStroke, save, al);
2025
2026     reload.setEnabled(false);
2027     reload.setText(MessageManager.getString("action.reload"));
2028     reload.addActionListener(new ActionListener()
2029     {
2030       @Override
2031       public void actionPerformed(ActionEvent e)
2032       {
2033         reload_actionPerformed(e);
2034       }
2035     });
2036
2037     JMenuItem newView = new JMenuItem(
2038             MessageManager.getString("action.new_view"));
2039     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_T, Toolkit
2040             .getDefaultToolkit().getMenuShortcutKeyMask(), false);
2041     al = new ActionListener()
2042     {
2043       @Override
2044       public void actionPerformed(ActionEvent e)
2045       {
2046         newView_actionPerformed(e);
2047       }
2048     };
2049     addMenuActionAndAccelerator(keyStroke, newView, al);
2050
2051     tabbedPane.setToolTipText("<html><i>"
2052             + MessageManager.getString("label.rename_tab_eXpand_reGroup")
2053             + "</i></html>");
2054     JMenuItem textColour = new JMenuItem(
2055             MessageManager.getString("action.set_text_colour"));
2056     textColour.addActionListener(new ActionListener()
2057     {
2058       @Override
2059       public void actionPerformed(ActionEvent e)
2060       {
2061         textColour_actionPerformed(e);
2062       }
2063     });
2064     formatMenu.setText(MessageManager.getString("action.format"));
2065     JMenu selectMenu = new JMenu(MessageManager.getString("action.select"));
2066     idRightAlign.setText(MessageManager
2067             .getString("label.right_align_sequence_id"));
2068     idRightAlign.addActionListener(new ActionListener()
2069     {
2070       @Override
2071       public void actionPerformed(ActionEvent e)
2072       {
2073         idRightAlign_actionPerformed(e);
2074       }
2075     });
2076
2077     gatherViews.setEnabled(false);
2078     gatherViews.setText(MessageManager.getString("action.gather_views"));
2079     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_G, 0, false);
2080     al = new ActionListener()
2081     {
2082       @Override
2083       public void actionPerformed(ActionEvent e)
2084       {
2085         gatherViews_actionPerformed(e);
2086       }
2087     };
2088     addMenuActionAndAccelerator(keyStroke, gatherViews, al);
2089
2090     expandViews.setEnabled(false);
2091     expandViews.setText(MessageManager.getString("action.expand_views"));
2092     keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_X, 0, false);
2093     al = new ActionListener()
2094     {
2095       @Override
2096       public void actionPerformed(ActionEvent e)
2097       {
2098         expandViews_actionPerformed(e);
2099       }
2100     };
2101     addMenuActionAndAccelerator(keyStroke, expandViews, al);
2102
2103     JMenuItem pageSetup = new JMenuItem(
2104             MessageManager.getString("action.page_setup"));
2105     pageSetup.addActionListener(new ActionListener()
2106     {
2107       @Override
2108       public void actionPerformed(ActionEvent e)
2109       {
2110         pageSetup_actionPerformed(e);
2111       }
2112     });
2113     JMenuItem alignmentProperties = new JMenuItem(
2114             MessageManager.getString("label.alignment_props"));
2115     alignmentProperties.addActionListener(new ActionListener()
2116     {
2117       @Override
2118       public void actionPerformed(ActionEvent actionEvent)
2119       {
2120         alignmentProperties();
2121       }
2122     });
2123     JMenu tooltipSettingsMenu = new JMenu(
2124             MessageManager.getString("label.sequence_id_tooltip"));
2125     JMenu autoAnnMenu = new JMenu(
2126             MessageManager.getString("label.autocalculated_annotation"));
2127
2128     JMenu exportImageMenu = new JMenu(
2129             MessageManager.getString("label.export_image"));
2130     JMenu fileMenu = new JMenu(MessageManager.getString("action.file"));
2131     alignFrameMenuBar.add(fileMenu);
2132     alignFrameMenuBar.add(editMenu);
2133     alignFrameMenuBar.add(selectMenu);
2134     alignFrameMenuBar.add(viewMenu);
2135     alignFrameMenuBar.add(annotationsMenu);
2136     alignFrameMenuBar.add(formatMenu);
2137     alignFrameMenuBar.add(colourMenu);
2138     alignFrameMenuBar.add(calculateMenu);
2139     alignFrameMenuBar.add(webService);
2140     fileMenu.add(fetchSequence);
2141     fileMenu.add(addSequenceMenu);
2142     fileMenu.add(reload);
2143     fileMenu.addSeparator();
2144     fileMenu.add(vamsasStore);
2145     fileMenu.add(save);
2146     fileMenu.add(saveAs);
2147     fileMenu.add(outputTextboxMenu);
2148     fileMenu.add(pageSetup);
2149     fileMenu.add(printMenuItem);
2150     fileMenu.addSeparator();
2151     fileMenu.add(exportImageMenu);
2152     fileMenu.add(exportFeatures);
2153     fileMenu.add(exportAnnotations);
2154     fileMenu.add(loadTreeMenuItem);
2155     fileMenu.add(associatedData);
2156     fileMenu.addSeparator();
2157     fileMenu.add(closeMenuItem);
2158     editMenu.add(undoMenuItem);
2159     editMenu.add(redoMenuItem);
2160     editMenu.add(cut);
2161     editMenu.add(copy);
2162     editMenu.add(pasteMenu);
2163     editMenu.add(delete);
2164     editMenu.addSeparator();
2165     editMenu.add(remove2LeftMenuItem);
2166     editMenu.add(remove2RightMenuItem);
2167     editMenu.add(removeGappedColumnMenuItem);
2168     editMenu.add(removeAllGapsMenuItem);
2169     editMenu.add(removeRedundancyMenuItem);
2170     editMenu.addSeparator();
2171     // dont add these yet in the CVS build - they cannot be undone!
2172     // Excluded from Jalview 2.5 release - undo needs to be implemented.
2173     // editMenu.add(justifyLeftMenuItem);
2174     // editMenu.add(justifyRightMenuItem);
2175     // editMenu.addSeparator();
2176     editMenu.add(padGapsMenuitem);
2177
2178     viewMenu.add(newView);
2179     viewMenu.add(expandViews);
2180     viewMenu.add(gatherViews);
2181     viewMenu.addSeparator();
2182     viewMenu.add(showMenu);
2183     viewMenu.add(hideMenu);
2184     viewMenu.add(showComplementMenuItem);
2185     viewMenu.addSeparator();
2186     viewMenu.add(followHighlightMenuItem);
2187     viewMenu.addSeparator();
2188     viewMenu.add(showSeqFeatures);
2189     // viewMenu.add(showSeqFeaturesHeight);
2190     viewMenu.add(openFeatureSettings);
2191     tooltipSettingsMenu.add(showDbRefsMenuitem);
2192     tooltipSettingsMenu.add(showNpFeatsMenuitem);
2193     viewMenu.add(tooltipSettingsMenu);
2194     viewMenu.addSeparator();
2195     viewMenu.add(alignmentProperties);
2196     viewMenu.addSeparator();
2197     viewMenu.add(overviewMenuItem);
2198
2199     annotationsMenu.add(annotationPanelMenuItem);
2200     annotationsMenu.addSeparator();
2201     annotationsMenu.add(showAllAlAnnotations);
2202     annotationsMenu.add(hideAllAlAnnotations);
2203     annotationsMenu.addSeparator();
2204     annotationsMenu.add(showAllSeqAnnotations);
2205     annotationsMenu.add(hideAllSeqAnnotations);
2206     annotationsMenu.add(sortAnnBySequence);
2207     annotationsMenu.add(sortAnnByLabel);
2208     annotationsMenu.addSeparator();
2209     autoAnnMenu.add(showAutoFirst);
2210     autoAnnMenu.add(showAutoLast);
2211     autoAnnMenu.addSeparator();
2212     autoAnnMenu.add(applyAutoAnnotationSettings);
2213     autoAnnMenu.add(showConsensusHistogram);
2214     autoAnnMenu.add(showSequenceLogo);
2215     autoAnnMenu.add(normaliseSequenceLogo);
2216     autoAnnMenu.addSeparator();
2217     autoAnnMenu.add(showGroupConservation);
2218     autoAnnMenu.add(showGroupConsensus);
2219     annotationsMenu.add(autoAnnMenu);
2220
2221     colourMenu.add(applyToAllGroups);
2222     colourMenu.add(textColour);
2223     colourMenu.addSeparator();
2224     colourMenu.add(noColourmenuItem);
2225     colourMenu.add(clustalColour);
2226     colourMenu.add(BLOSUM62Colour);
2227     colourMenu.add(PIDColour);
2228     colourMenu.add(zappoColour);
2229     colourMenu.add(taylorColour);
2230     colourMenu.add(hydrophobicityColour);
2231     colourMenu.add(helixColour);
2232     colourMenu.add(strandColour);
2233     colourMenu.add(turnColour);
2234     colourMenu.add(buriedColour);
2235     colourMenu.add(nucleotideColour);
2236     colourMenu.add(purinePyrimidineColour);
2237     colourMenu.add(RNAInteractionColour);
2238     // colourMenu.add(covariationColour);
2239     colourMenu.add(tcoffeeColour);
2240     colourMenu.add(userDefinedColour);
2241     colourMenu.addSeparator();
2242     colourMenu.add(conservationMenuItem);
2243     colourMenu.add(modifyConservation);
2244     colourMenu.add(abovePIDThreshold);
2245     colourMenu.add(modifyPID);
2246     colourMenu.add(annotationColour);
2247     colourMenu.add(rnahelicesColour);
2248     calculateMenu.add(sort);
2249     calculateMenu.add(calculateTree);
2250     calculateMenu.addSeparator();
2251     calculateMenu.add(pairwiseAlignmentMenuItem);
2252     calculateMenu.add(PCAMenuItem);
2253     calculateMenu.addSeparator();
2254     calculateMenu.add(showTranslation);
2255     calculateMenu.add(showProducts);
2256     calculateMenu.add(autoCalculate);
2257     calculateMenu.add(sortByTree);
2258     calculateMenu.addSeparator();
2259     calculateMenu.add(extractScores);
2260     webServiceNoServices = new JMenuItem(
2261             MessageManager.getString("label.no_services"));
2262     webService.add(webServiceNoServices);
2263     pasteMenu.add(pasteNew);
2264     pasteMenu.add(pasteThis);
2265     sort.add(sortIDMenuItem);
2266     sort.add(sortLengthMenuItem);
2267     sort.add(sortGroupMenuItem);
2268     sort.add(sortPairwiseMenuItem);
2269     sort.add(sortByTreeMenu);
2270     exportImageMenu.add(htmlMenuItem);
2271     exportImageMenu.add(epsFile);
2272     exportImageMenu.add(createPNG);
2273     exportImageMenu.add(createBioJS);
2274     exportImageMenu.add(createSVG);
2275     addSequenceMenu.add(addFromFile);
2276     addSequenceMenu.add(addFromText);
2277     addSequenceMenu.add(addFromURL);
2278     this.getContentPane().add(statusPanel, java.awt.BorderLayout.SOUTH);
2279     statusPanel.add(statusBar, null);
2280     this.getContentPane().add(tabbedPane, java.awt.BorderLayout.CENTER);
2281     showMenu.add(showAllColumns);
2282     showMenu.add(showAllSeqs);
2283     showMenu.add(showAllhidden);
2284     hideMenu.add(hideSelColumns);
2285     hideMenu.add(hideSelSequences);
2286     hideMenu.add(hideAllSelection);
2287     hideMenu.add(hideAllButSelection);
2288
2289     formatMenu.add(font);
2290     formatMenu.addSeparator();
2291     formatMenu.add(wrapMenuItem);
2292     formatMenu.add(scaleAbove);
2293     formatMenu.add(scaleLeft);
2294     formatMenu.add(scaleRight);
2295     formatMenu.add(seqLimits);
2296     formatMenu.add(idRightAlign);
2297     formatMenu.add(hiddenMarkers);
2298     formatMenu.add(viewBoxesMenuItem);
2299     formatMenu.add(viewTextMenuItem);
2300     formatMenu.add(colourTextMenuItem);
2301     formatMenu.add(renderGapsMenuItem);
2302     formatMenu.add(centreColumnLabelsMenuItem);
2303     formatMenu.add(showNonconservedMenuItem);
2304     selectMenu.add(findMenuItem);
2305     selectMenu.addSeparator();
2306     selectMenu.add(selectAllSequenceMenuItem);
2307     selectMenu.add(deselectAllSequenceMenuItem);
2308     selectMenu.add(invertSequenceMenuItem);
2309     selectMenu.add(invertColSel);
2310     selectMenu.add(createGroup);
2311     selectMenu.add(unGroup);
2312     selectMenu.add(grpsFromSelection);
2313     selectMenu.add(deleteGroups);
2314     selectMenu.add(annotationColumn);
2315     calculateMenu.add(expandAlignment);
2316     // TODO - determine if the listenToViewSelections button is needed : see bug
2317     // JAL-574
2318     // selectMenu.addSeparator();
2319     // selectMenu.add(listenToViewSelections);
2320   }
2321
2322   /**
2323    * Adds the given action listener and key accelerator to the given menu item.
2324    * Also saves in a lookup table to support lookup of action by key stroke.
2325    * 
2326    * @param keyStroke
2327    * @param menuItem
2328    * @param actionListener
2329    */
2330   protected void addMenuActionAndAccelerator(KeyStroke keyStroke,
2331           JMenuItem menuItem, ActionListener actionListener)
2332   {
2333     menuItem.setAccelerator(keyStroke);
2334     accelerators.put(keyStroke, menuItem);
2335     menuItem.addActionListener(actionListener);
2336   }
2337
2338   /**
2339    * Action on clicking sort annotations by type.
2340    * 
2341    * @param sortOrder
2342    */
2343   protected void sortAnnotations_actionPerformed()
2344   {
2345   }
2346
2347   /**
2348    * Action on clicking Show all annotations.
2349    * 
2350    * @param forSequences
2351    *          update sequence-related annotations
2352    * @param forAlignment
2353    *          update non-sequence-related annotations
2354    */
2355   protected void showAllAnnotations_actionPerformed(boolean forSequences,
2356           boolean forAlignment)
2357   {
2358     setAnnotationsVisibility(true, forSequences, forAlignment);
2359   }
2360
2361   /**
2362    * Action on clicking Hide all annotations.
2363    * 
2364    * @param forSequences
2365    *          update sequence-related annotations
2366    * @param forAlignment
2367    *          update non-sequence-related annotations
2368    */
2369   protected void hideAllAnnotations_actionPerformed(boolean forSequences,
2370           boolean forAlignment)
2371   {
2372     setAnnotationsVisibility(false, forSequences, forAlignment);
2373   }
2374
2375   /**
2376    * Set the visibility of annotations to true or false. Can act on
2377    * sequence-related annotations, or alignment-related, or both.
2378    * 
2379    * @param visible
2380    * @param forSequences
2381    *          update sequence-related annotations
2382    * @param forAlignment
2383    *          update non-sequence-related annotations
2384    */
2385   protected void setAnnotationsVisibility(boolean visible,
2386           boolean forSequences, boolean forAlignment)
2387   {
2388
2389   }
2390
2391   protected void normaliseSequenceLogo_actionPerformed(ActionEvent e)
2392   {
2393     // TODO Auto-generated method stub
2394
2395   }
2396
2397   protected void listenToViewSelections_actionPerformed(ActionEvent e)
2398   {
2399     // TODO Auto-generated method stub
2400
2401   }
2402
2403   protected void showAllhidden_actionPerformed(ActionEvent e)
2404   {
2405     // TODO Auto-generated method stub
2406
2407   }
2408
2409   protected void hideAllButSelection_actionPerformed(ActionEvent e)
2410   {
2411     // TODO Auto-generated method stub
2412
2413   }
2414
2415   protected void hideAllSelection_actionPerformed(ActionEvent e)
2416   {
2417     // TODO Auto-generated method stub
2418
2419   }
2420
2421   protected void applyAutoAnnotationSettings_actionPerformed(ActionEvent e)
2422   {
2423     // TODO Auto-generated method stub
2424
2425   }
2426
2427   protected void showConsensusHistogram_actionPerformed(ActionEvent e)
2428   {
2429     // TODO Auto-generated method stub
2430
2431   }
2432
2433   protected void showSequenceLogo_actionPerformed(ActionEvent e)
2434   {
2435     // TODO Auto-generated method stub
2436
2437   }
2438
2439   protected void makeGrpsFromSelection_actionPerformed(ActionEvent e)
2440   {
2441     // TODO Auto-generated method stub
2442
2443   }
2444
2445   protected void showGroupConsensus_actionPerformed(ActionEvent e)
2446   {
2447     // TODO Auto-generated method stub
2448
2449   }
2450
2451   protected void showGroupConservation_actionPerformed(ActionEvent e)
2452   {
2453     // TODO Auto-generated method stub
2454
2455   }
2456
2457   protected void showUnconservedMenuItem_actionPerformed(ActionEvent e)
2458   {
2459     // TODO Auto-generated method stub
2460
2461   }
2462
2463   protected void showSeqFeaturesHeight_actionPerformed(
2464           ActionEvent actionEvent)
2465   {
2466     // TODO Auto-generated method stub
2467
2468   }
2469
2470   protected void justifyRightMenuItem_actionPerformed(ActionEvent e)
2471   {
2472     // TODO Auto-generated method stub
2473
2474   }
2475
2476   protected void justifyLeftMenuItem_actionPerformed(ActionEvent e)
2477   {
2478     // TODO Auto-generated method stub
2479
2480   }
2481
2482   protected void followHighlight_actionPerformed()
2483   {
2484     // TODO Auto-generated method stub
2485
2486   }
2487
2488   protected void showNpFeats_actionPerformed(ActionEvent e)
2489   {
2490     // TODO Auto-generated method stub
2491
2492   }
2493
2494   protected void showDbRefs_actionPerformed(ActionEvent e)
2495   {
2496     // TODO Auto-generated method stub
2497
2498   }
2499
2500   protected void centreColumnLabels_actionPerformed(ActionEvent e)
2501   {
2502   }
2503
2504   protected void buildSortByAnnotationScoresMenu()
2505   {
2506   }
2507
2508   protected void extractScores_actionPerformed(ActionEvent e)
2509   {
2510   }
2511
2512   protected void outputText_actionPerformed(ActionEvent e)
2513   {
2514   }
2515
2516   public void addFromFile_actionPerformed(ActionEvent e)
2517   {
2518
2519   }
2520
2521   public void addFromText_actionPerformed(ActionEvent e)
2522   {
2523
2524   }
2525
2526   public void addFromURL_actionPerformed(ActionEvent e)
2527   {
2528
2529   }
2530
2531   public void exportFeatures_actionPerformed(ActionEvent e)
2532   {
2533
2534   }
2535
2536   public void exportAnnotations_actionPerformed(ActionEvent e)
2537   {
2538
2539   }
2540
2541   protected void htmlMenuItem_actionPerformed(ActionEvent e)
2542   {
2543   }
2544
2545   protected void bioJSMenuItem_actionPerformed(ActionEvent e)
2546   {
2547
2548   }
2549
2550   protected void closeMenuItem_actionPerformed(boolean b)
2551   {
2552   }
2553
2554   protected void redoMenuItem_actionPerformed(ActionEvent e)
2555   {
2556   }
2557
2558   protected void undoMenuItem_actionPerformed(ActionEvent e)
2559   {
2560   }
2561
2562   protected void selectAllSequenceMenuItem_actionPerformed(ActionEvent e)
2563   {
2564   }
2565
2566   protected void deselectAllSequenceMenuItem_actionPerformed(ActionEvent e)
2567   {
2568   }
2569
2570   protected void invertSequenceMenuItem_actionPerformed(ActionEvent e)
2571   {
2572   }
2573
2574   protected void remove2LeftMenuItem_actionPerformed(ActionEvent e)
2575   {
2576   }
2577
2578   protected void remove2RightMenuItem_actionPerformed(ActionEvent e)
2579   {
2580   }
2581
2582   protected void removeGappedColumnMenuItem_actionPerformed(ActionEvent e)
2583   {
2584   }
2585
2586   protected void removeAllGapsMenuItem_actionPerformed(ActionEvent e)
2587   {
2588   }
2589
2590   protected void wrapMenuItem_actionPerformed(ActionEvent e)
2591   {
2592   }
2593
2594   protected void viewBoxesMenuItem_actionPerformed(ActionEvent e)
2595   {
2596   }
2597
2598   protected void viewTextMenuItem_actionPerformed(ActionEvent e)
2599   {
2600   }
2601
2602   protected void colourTextMenuItem_actionPerformed(ActionEvent e)
2603   {
2604   }
2605
2606   protected void annotationPanelMenuItem_actionPerformed(ActionEvent e)
2607   {
2608   }
2609
2610   protected void overviewMenuItem_actionPerformed(ActionEvent e)
2611   {
2612   }
2613
2614   protected void sortPairwiseMenuItem_actionPerformed(ActionEvent e)
2615   {
2616   }
2617
2618   protected void sortIDMenuItem_actionPerformed(ActionEvent e)
2619   {
2620   }
2621
2622   protected void sortLengthMenuItem_actionPerformed(ActionEvent e)
2623   {
2624   }
2625
2626   protected void sortGroupMenuItem_actionPerformed(ActionEvent e)
2627   {
2628   }
2629
2630   protected void removeRedundancyMenuItem_actionPerformed(ActionEvent e)
2631   {
2632   }
2633
2634   protected void pairwiseAlignmentMenuItem_actionPerformed(ActionEvent e)
2635   {
2636   }
2637
2638   protected void PCAMenuItem_actionPerformed(ActionEvent e)
2639   {
2640   }
2641
2642   protected void averageDistanceTreeMenuItem_actionPerformed(ActionEvent e)
2643   {
2644   }
2645
2646   protected void neighbourTreeMenuItem_actionPerformed(ActionEvent e)
2647   {
2648   }
2649
2650   protected void njTreeBlosumMenuItem_actionPerformed(ActionEvent e)
2651   {
2652   }
2653
2654   protected void avTreeBlosumMenuItem_actionPerformed(ActionEvent e)
2655   {
2656   }
2657
2658   protected void clustalColour_actionPerformed(ActionEvent e)
2659   {
2660   }
2661
2662   protected void zappoColour_actionPerformed(ActionEvent e)
2663   {
2664   }
2665
2666   protected void taylorColour_actionPerformed(ActionEvent e)
2667   {
2668   }
2669
2670   protected void hydrophobicityColour_actionPerformed(ActionEvent e)
2671   {
2672   }
2673
2674   protected void helixColour_actionPerformed(ActionEvent e)
2675   {
2676   }
2677
2678   protected void strandColour_actionPerformed(ActionEvent e)
2679   {
2680   }
2681
2682   protected void turnColour_actionPerformed(ActionEvent e)
2683   {
2684   }
2685
2686   protected void buriedColour_actionPerformed(ActionEvent e)
2687   {
2688   }
2689
2690   protected void userDefinedColour_actionPerformed(ActionEvent e)
2691   {
2692   }
2693
2694   protected void PIDColour_actionPerformed(ActionEvent e)
2695   {
2696   }
2697
2698   protected void BLOSUM62Colour_actionPerformed(ActionEvent e)
2699   {
2700   }
2701
2702   protected void purinePyrimidineColour_actionPerformed(ActionEvent e)
2703   {
2704   }
2705
2706   protected void RNAInteractionColour_actionPerformed(ActionEvent e)
2707   {
2708   }
2709
2710   /*
2711    * protected void covariationColour_actionPerformed(ActionEvent e) { }
2712    */
2713
2714   protected void noColourmenuItem_actionPerformed(ActionEvent e)
2715   {
2716   }
2717
2718   protected void conservationMenuItem_actionPerformed(ActionEvent e)
2719   {
2720   }
2721
2722   protected void printMenuItem_actionPerformed(ActionEvent e)
2723   {
2724   }
2725
2726   protected void renderGapsMenuItem_actionPerformed(ActionEvent e)
2727   {
2728   }
2729
2730   protected void findMenuItem_actionPerformed(ActionEvent e)
2731   {
2732   }
2733
2734   protected void abovePIDThreshold_actionPerformed(ActionEvent e)
2735   {
2736   }
2737
2738   public void showSeqFeatures_actionPerformed(ActionEvent actionEvent)
2739   {
2740   }
2741
2742   protected void nucleotideColour_actionPerformed(ActionEvent e)
2743   {
2744   }
2745
2746   protected void deleteGroups_actionPerformed(ActionEvent e)
2747   {
2748   }
2749
2750   protected void createGroup_actionPerformed(ActionEvent e)
2751   {
2752   }
2753
2754   protected void unGroup_actionPerformed(ActionEvent e)
2755   {
2756   }
2757
2758   protected void copy_actionPerformed(ActionEvent e)
2759   {
2760   }
2761
2762   protected void cut_actionPerformed(ActionEvent e)
2763   {
2764   }
2765
2766   protected void delete_actionPerformed(ActionEvent e)
2767   {
2768   }
2769
2770   protected void pasteNew_actionPerformed(ActionEvent e)
2771   {
2772   }
2773
2774   protected void pasteThis_actionPerformed(ActionEvent e)
2775   {
2776   }
2777
2778   protected void applyToAllGroups_actionPerformed(ActionEvent e)
2779   {
2780   }
2781
2782   public void createPNG(java.io.File f)
2783   {
2784   }
2785
2786   protected void font_actionPerformed(ActionEvent e)
2787   {
2788   }
2789
2790   protected void seqLimit_actionPerformed(ActionEvent e)
2791   {
2792   }
2793
2794   public void seqDBRef_actionPerformed(ActionEvent e)
2795   {
2796
2797   }
2798
2799   public void createEPS(java.io.File f)
2800   {
2801   }
2802
2803   public void createSVG(java.io.File f)
2804   {
2805
2806   }
2807
2808   protected void loadTreeMenuItem_actionPerformed(ActionEvent e)
2809   {
2810
2811   }
2812
2813   /**
2814    * Template method to handle the 'load T-Coffee scores' menu event.
2815    * <p>
2816    * Subclasses override this method to provide a custom action.
2817    * 
2818    * @param event
2819    *          The raised event
2820    */
2821   protected void loadScores_actionPerformed(ActionEvent event)
2822   {
2823
2824   }
2825
2826   /**
2827    * Template method to handle the 'Color T-Coffee scores' menu event.
2828    * <p>
2829    * Subclasses override this method to provide a custom action.
2830    * 
2831    * @param event
2832    *          The raised event
2833    */
2834   protected void tcoffeeColorScheme_actionPerformed(ActionEvent event)
2835   {
2836
2837   }
2838
2839   protected void jpred_actionPerformed(ActionEvent e)
2840   {
2841   }
2842
2843   protected void scaleAbove_actionPerformed(ActionEvent e)
2844   {
2845   }
2846
2847   protected void scaleLeft_actionPerformed(ActionEvent e)
2848   {
2849   }
2850
2851   protected void scaleRight_actionPerformed(ActionEvent e)
2852   {
2853   }
2854
2855   protected void modifyPID_actionPerformed(ActionEvent e)
2856   {
2857   }
2858
2859   protected void modifyConservation_actionPerformed(ActionEvent e)
2860   {
2861   }
2862
2863   protected void saveAs_actionPerformed(ActionEvent e)
2864   {
2865   }
2866
2867   protected void padGapsMenuitem_actionPerformed(ActionEvent e)
2868   {
2869   }
2870
2871   public void vamsasStore_actionPerformed(ActionEvent e)
2872   {
2873
2874   }
2875
2876   public void vamsasLoad_actionPerformed(ActionEvent e)
2877   {
2878
2879   }
2880
2881   public void showTranslation_actionPerformed(ActionEvent e)
2882   {
2883
2884   }
2885
2886   public void featureSettings_actionPerformed(ActionEvent e)
2887   {
2888
2889   }
2890
2891   public void fetchSequence_actionPerformed(ActionEvent e)
2892   {
2893
2894   }
2895
2896   public void smoothFont_actionPerformed(ActionEvent e)
2897   {
2898
2899   }
2900
2901   public void annotationColour_actionPerformed(ActionEvent e)
2902   {
2903
2904   }
2905
2906   public void annotationColumn_actionPerformed(ActionEvent e)
2907   {
2908
2909   }
2910
2911   public void rnahelicesColour_actionPerformed(ActionEvent e)
2912   {
2913
2914   }
2915
2916   public void associatedData_actionPerformed(ActionEvent e)
2917   {
2918
2919   }
2920
2921   public void autoCalculate_actionPerformed(ActionEvent e)
2922   {
2923
2924   }
2925
2926   public void sortByTreeOption_actionPerformed(ActionEvent e)
2927   {
2928
2929   }
2930
2931   public void showAllSeqs_actionPerformed(ActionEvent e)
2932   {
2933
2934   }
2935
2936   public void showAllColumns_actionPerformed(ActionEvent e)
2937   {
2938
2939   }
2940
2941   public void hideSelSequences_actionPerformed(ActionEvent e)
2942   {
2943
2944   }
2945
2946   public void hideSelColumns_actionPerformed(ActionEvent e)
2947   {
2948
2949   }
2950
2951   public void hiddenMarkers_actionPerformed(ActionEvent e)
2952   {
2953
2954   }
2955
2956   public void findPdbId_actionPerformed(ActionEvent e)
2957   {
2958
2959   }
2960
2961   public void enterPdbId_actionPerformed(ActionEvent e)
2962   {
2963
2964   }
2965
2966   public void pdbFile_actionPerformed(ActionEvent e)
2967   {
2968
2969   }
2970
2971   public void invertColSel_actionPerformed(ActionEvent e)
2972   {
2973
2974   }
2975
2976   public void tabSelectionChanged(int sel)
2977   {
2978
2979   }
2980
2981   public void tabbedPane_mousePressed(MouseEvent e)
2982   {
2983
2984   }
2985
2986   public void tabbedPane_focusGained(FocusEvent e)
2987   {
2988     requestFocus();
2989   }
2990
2991   public void save_actionPerformed(ActionEvent e)
2992   {
2993
2994   }
2995
2996   public void reload_actionPerformed(ActionEvent e)
2997   {
2998
2999   }
3000
3001   public void newView_actionPerformed(ActionEvent e)
3002   {
3003
3004   }
3005
3006   public void textColour_actionPerformed(ActionEvent e)
3007   {
3008
3009   }
3010
3011   public void idRightAlign_actionPerformed(ActionEvent e)
3012   {
3013
3014   }
3015
3016   public void expandViews_actionPerformed(ActionEvent e)
3017   {
3018
3019   }
3020
3021   public void gatherViews_actionPerformed(ActionEvent e)
3022   {
3023
3024   }
3025
3026   public void buildTreeMenu()
3027   {
3028
3029   }
3030
3031   public void pageSetup_actionPerformed(ActionEvent e)
3032   {
3033
3034   }
3035
3036   public void alignmentProperties()
3037   {
3038
3039   }
3040
3041   protected void expand_newalign(ActionEvent e)
3042   {
3043     // TODO Auto-generated method stub
3044
3045   }
3046
3047   protected boolean isShowAutoCalculatedAbove()
3048   {
3049     return showAutoCalculatedAbove;
3050   }
3051
3052   protected void setShowAutoCalculatedAbove(boolean showAutoCalculatedAbove)
3053   {
3054     this.showAutoCalculatedAbove = showAutoCalculatedAbove;
3055   }
3056
3057   protected SequenceAnnotationOrder getAnnotationSortOrder()
3058   {
3059     return annotationSortOrder;
3060   }
3061
3062   protected void setAnnotationSortOrder(
3063           SequenceAnnotationOrder annotationSortOrder)
3064   {
3065     this.annotationSortOrder = annotationSortOrder;
3066   }
3067
3068   public Map<KeyStroke, JMenuItem> getAccelerators()
3069   {
3070     return this.accelerators;
3071   }
3072
3073   /**
3074    * Returns the selected index of the tabbed pane, or -1 if none selected
3075    * (including the case where the tabbed pane has not been made visible).
3076    * 
3077    * @return
3078    */
3079   public int getTabIndex()
3080   {
3081     return tabbedPane.getSelectedIndex();
3082   }
3083
3084   public JPanel getStatusPanel()
3085   {
3086     return statusPanel;
3087   }
3088
3089   /**
3090    * Sets a reference to the containing split frame. Also makes the 'toggle
3091    * split view' menu item visible and checked.
3092    * 
3093    * @param sf
3094    */
3095   public void setSplitFrame(SplitContainerI sf)
3096   {
3097     this.splitFrame = sf;
3098     if (sf != null)
3099     {
3100       this.showComplementMenuItem.setVisible(true);
3101       this.showComplementMenuItem.setState(true);
3102     }
3103   }
3104
3105   public SplitContainerI getSplitViewContainer()
3106   {
3107     return this.splitFrame;
3108   }
3109
3110   protected void showComplement_actionPerformed(boolean state)
3111   {
3112   }
3113 }