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