Clover icon

Coverage Report

  1. Project Clover database Wed Jan 7 2026 02:49:01 GMT
  2. Package jalview.jbgui

File GAlignFrame.java

 

Coverage histogram

../../img/srcFileCovDistChart6.png
37% of files have more coverage

Code metrics

28
861
317
1
3,411
2,668
336
0.39
2.72
317
1.06

Classes

Class Line # Actions
GAlignFrame 73 861 336
0.583747958.4%
 

Contributing tests

This file is covered by 190 tests. .

Source view

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