X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fjbgui%2FGAlignFrame.java;h=6b94559b6922369341533a4967a2abafb57caed3;hb=37de9310bec3501cbc6381e0c3dcb282fcaad812;hp=35910565c9445833b7b068ce31d9b3ede740fccf;hpb=d305e02d8b425bb501141ad32142aeb8572adc57;p=jalview.git diff --git a/src/jalview/jbgui/GAlignFrame.java b/src/jalview/jbgui/GAlignFrame.java index 3591056..6b94559 100755 --- a/src/jalview/jbgui/GAlignFrame.java +++ b/src/jalview/jbgui/GAlignFrame.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2) - * Copyright (C) 2014 The Jalview Authors + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors * * This file is part of Jalview. * @@ -20,9 +20,11 @@ */ package jalview.jbgui; -import jalview.analysis.AnnotationSorter.SortOrder; +import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder; +import jalview.api.SplitContainerI; import jalview.bin.Cache; import jalview.gui.JvSwingUtils; +import jalview.gui.Preferences; import jalview.schemes.ColourSchemeProperty; import jalview.util.MessageManager; @@ -34,8 +36,11 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.FocusAdapter; import java.awt.event.FocusEvent; +import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.util.HashMap; +import java.util.Map; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; @@ -49,7 +54,7 @@ import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JRadioButtonMenuItem; import javax.swing.JTabbedPane; -import javax.swing.SwingUtilities; +import javax.swing.KeyStroke; import javax.swing.event.ChangeEvent; import javax.swing.event.MenuEvent; import javax.swing.event.MenuListener; @@ -58,68 +63,22 @@ public class GAlignFrame extends JInternalFrame { protected JMenuBar alignFrameMenuBar = new JMenuBar(); - protected JMenu fileMenu = new JMenu(); - protected JMenuItem closeMenuItem = new JMenuItem(); - protected JMenu editMenu = new JMenu(); - - protected JMenu viewMenu = new JMenu(); - - protected JMenu annotationsMenu = new JMenu(); - protected JMenu colourMenu = new JMenu(); - protected JMenu calculateMenu = new JMenu(); - protected JMenu webService = new JMenu(); protected JMenuItem webServiceNoServices; - protected JMenuItem selectAllSequenceMenuItem = new JMenuItem(); - - protected JMenuItem deselectAllSequenceMenuItem = new JMenuItem(); - - protected JMenuItem invertSequenceMenuItem = new JMenuItem(); - - protected JMenuItem remove2LeftMenuItem = new JMenuItem(); - - protected JMenuItem remove2RightMenuItem = new JMenuItem(); - - protected JMenuItem removeGappedColumnMenuItem = new JMenuItem(); - - protected JMenuItem removeAllGapsMenuItem = new JMenuItem(); - public JCheckBoxMenuItem viewBoxesMenuItem = new JCheckBoxMenuItem(); public JCheckBoxMenuItem viewTextMenuItem = new JCheckBoxMenuItem(); - protected JMenuItem sortPairwiseMenuItem = new JMenuItem(); - - protected JMenuItem sortIDMenuItem = new JMenuItem(); - - protected JMenuItem sortLengthMenuItem = new JMenuItem(); - - protected JMenuItem sortGroupMenuItem = new JMenuItem(); - protected JMenu sortByAnnotScore = new JMenu(); - protected JMenuItem removeRedundancyMenuItem = new JMenuItem(); - - protected JMenuItem pairwiseAlignmentMenuItem = new JMenuItem(); - - protected JMenuItem PCAMenuItem = new JMenuItem(); - - protected JMenuItem averageDistanceTreeMenuItem = new JMenuItem(); - - protected JMenuItem neighbourTreeMenuItem = new JMenuItem(); - - BorderLayout borderLayout1 = new BorderLayout(); - public JLabel statusBar = new JLabel(); - protected JMenuItem saveAs = new JMenuItem(); - protected JMenu outputTextboxMenu = new JMenu(); protected JRadioButtonMenuItem clustalColour = new JRadioButtonMenuItem(); @@ -155,20 +114,12 @@ public class GAlignFrame extends JInternalFrame protected JRadioButtonMenuItem tcoffeeColour = new JRadioButtonMenuItem(); - JMenuItem njTreeBlosumMenuItem = new JMenuItem(); - - JMenuItem avDistanceTreeBlosumMenuItem = new JMenuItem(); - public JCheckBoxMenuItem annotationPanelMenuItem = new JCheckBoxMenuItem(); public JCheckBoxMenuItem colourTextMenuItem = new JCheckBoxMenuItem(); public JCheckBoxMenuItem showNonconservedMenuItem = new JCheckBoxMenuItem(); - JMenuItem htmlMenuItem = new JMenuItem(); - - JMenuItem overviewMenuItem = new JMenuItem(); - protected JMenuItem undoMenuItem = new JMenuItem(); protected JMenuItem redoMenuItem = new JMenuItem(); @@ -179,56 +130,28 @@ public class GAlignFrame extends JInternalFrame public JCheckBoxMenuItem wrapMenuItem = new JCheckBoxMenuItem(); - JMenuItem printMenuItem = new JMenuItem(); - public JCheckBoxMenuItem renderGapsMenuItem = new JCheckBoxMenuItem(); - JMenuItem findMenuItem = new JMenuItem(); - public JCheckBoxMenuItem abovePIDThreshold = new JCheckBoxMenuItem(); public JCheckBoxMenuItem showSeqFeatures = new JCheckBoxMenuItem(); - public JCheckBoxMenuItem showSeqFeaturesHeight = new JCheckBoxMenuItem(); - - JMenuItem deleteGroups = new JMenuItem(); - - JMenuItem createGroup = new JMenuItem(); - - JMenuItem unGroup = new JMenuItem(); - - JMenuItem delete = new JMenuItem(); - JMenuItem copy = new JMenuItem(); JMenuItem cut = new JMenuItem(); JMenu pasteMenu = new JMenu(); - JMenuItem pasteNew = new JMenuItem(); - - JMenuItem pasteThis = new JMenuItem(); - public JCheckBoxMenuItem applyToAllGroups = new JCheckBoxMenuItem(); - JMenuItem createPNG = new JMenuItem(); - - protected JMenuItem font = new JMenuItem(); - public JCheckBoxMenuItem seqLimits = new JCheckBoxMenuItem(); - JMenuItem epsFile = new JMenuItem(); - - JMenuItem LoadtreeMenuItem = new JMenuItem(); - public JCheckBoxMenuItem scaleAbove = new JCheckBoxMenuItem(); public JCheckBoxMenuItem scaleLeft = new JCheckBoxMenuItem(); public JCheckBoxMenuItem scaleRight = new JCheckBoxMenuItem(); - protected JMenuItem modifyPID = new JMenuItem(); - protected JMenuItem modifyConservation = new JMenuItem(); protected JMenu sortByTreeMenu = new JMenu(); @@ -237,8 +160,6 @@ public class GAlignFrame extends JInternalFrame protected JMenu calculateTree = new JMenu(); - JMenu jMenu2 = new JMenu(); - protected JCheckBoxMenuItem padGapsMenuitem = new JCheckBoxMenuItem(); protected JCheckBoxMenuItem showNpFeatsMenuitem = new JCheckBoxMenuItem(); @@ -247,91 +168,43 @@ public class GAlignFrame extends JInternalFrame protected ButtonGroup colours = new ButtonGroup(); - JMenuItem vamsasStore = new JMenuItem(); - protected JMenuItem showTranslation = new JMenuItem(); - protected JMenuItem extractScores = new JMenuItem(); + protected JMenuItem showReverse = new JMenuItem(); - protected JMenuItem expandAlignment = new JMenuItem(); + protected JMenuItem showReverseComplement = new JMenuItem(); protected JMenu showProducts = new JMenu(); - public JMenuItem openFeatureSettings = new JMenuItem(); - - JMenuItem fetchSequence = new JMenuItem(); - - JMenuItem annotationColour = new JMenuItem(); + protected JMenuItem runGroovy = new JMenuItem(); protected JMenuItem rnahelicesColour = new JMenuItem(); - JMenuItem associatedData = new JMenuItem(); - protected JCheckBoxMenuItem autoCalculate = new JCheckBoxMenuItem(); protected JCheckBoxMenuItem sortByTree = new JCheckBoxMenuItem(); protected JCheckBoxMenuItem listenToViewSelections = new JCheckBoxMenuItem(); - JMenu addSequenceMenu = new JMenu(); - - JMenuItem addFromFile = new JMenuItem(); - - JMenuItem addFromText = new JMenuItem(); - - JMenuItem addFromURL = new JMenuItem(); - - JMenuItem exportAnnotations = new JMenuItem(); - - JMenuItem exportFeatures = new JMenuItem(); - protected JPanel statusPanel = new JPanel(); - GridLayout gridLayout1 = new GridLayout(); - - JMenu jMenu3 = new JMenu(); - - JMenuItem showAllSeqs = new JMenuItem(); - - JMenuItem showAllColumns = new JMenuItem(); - - JMenu hideMenu = new JMenu(); - - JMenuItem hideSelSequences = new JMenuItem(); - - JMenuItem hideSelColumns = new JMenuItem(); - - JMenuItem hideAllButSelection = new JMenuItem(); - - JMenuItem hideAllSelection = new JMenuItem(); + protected JMenuItem showAllSeqAnnotations = new JMenuItem(); - JMenuItem showAllhidden = new JMenuItem(); + protected JMenuItem hideAllSeqAnnotations = new JMenuItem(); - protected JMenuItem showAllAnnotations = new JMenuItem(); + protected JMenuItem showAllAlAnnotations = new JMenuItem(); - protected JMenuItem hideAllAnnotations = new JMenuItem(); + protected JMenuItem hideAllAlAnnotations = new JMenuItem(); - protected JCheckBoxMenuItem sortAnnBySequence = new JCheckBoxMenuItem(); - - protected JCheckBoxMenuItem sortAnnByType = new JCheckBoxMenuItem(); + protected JCheckBoxMenuItem showComplementMenuItem = new JCheckBoxMenuItem(); protected JCheckBoxMenuItem hiddenMarkers = new JCheckBoxMenuItem(); - JMenuItem invertColSel = new JMenuItem(); - protected JTabbedPane tabbedPane = new JTabbedPane(); - JMenuItem save = new JMenuItem(); - protected JMenuItem reload = new JMenuItem(); - JMenuItem newView = new JMenuItem(); - - JMenuItem textColour = new JMenuItem(); - - JMenu formatMenu = new JMenu(); - - JMenu selectMenu = new JMenu(); + protected JMenu formatMenu = new JMenu(); protected JCheckBoxMenuItem idRightAlign = new JCheckBoxMenuItem(); @@ -343,18 +216,6 @@ public class GAlignFrame extends JInternalFrame protected JMenuItem expandViews = new JMenuItem(); - JMenuItem pageSetup = new JMenuItem(); - - JMenuItem alignmentProperties = new JMenuItem(); - - JMenu tooltipSettingsMenu = new JMenu(); - - private JMenuItem justifyLeftMenuItem = new JMenuItem(); - - private JMenuItem justifyRightMenuItem = new JMenuItem(); - - JMenu autoAnnMenu = new JMenu(); - protected JCheckBoxMenuItem showGroupConsensus = new JCheckBoxMenuItem(); protected JCheckBoxMenuItem showGroupConservation = new JCheckBoxMenuItem(); @@ -367,7 +228,13 @@ public class GAlignFrame extends JInternalFrame protected JCheckBoxMenuItem applyAutoAnnotationSettings = new JCheckBoxMenuItem(); - private JMenuItem grpsFromSelection = new JMenuItem(); + private SequenceAnnotationOrder annotationSortOrder; + + private boolean showAutoCalculatedAbove = false; + + private Map accelerators = new HashMap(); + + private SplitContainerI splitFrame; public GAlignFrame() { @@ -382,7 +249,7 @@ public class GAlignFrame extends JInternalFrame JMenuItem item = new JMenuItem( jalview.io.FormatAdapter.WRITEABLE_FORMATS[i]); - item.addActionListener(new java.awt.event.ActionListener() + item.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -398,7 +265,7 @@ public class GAlignFrame extends JInternalFrame System.err.println(e.toString()); } - if (!new jalview.util.Platform().isAMac()) + if (!jalview.util.Platform.isAMac()) { closeMenuItem.setMnemonic('C'); outputTextboxMenu.setMnemonic('T'); @@ -425,35 +292,50 @@ public class GAlignFrame extends JInternalFrame @Override public void mousePressed(MouseEvent evt) { - if (evt.isControlDown() - || SwingUtilities.isRightMouseButton(evt)) + if (evt.isPopupTrigger()) // Mac { - radioItem.removeActionListener(radioItem.getActionListeners()[0]); - - int option = JOptionPane.showInternalConfirmDialog( - jalview.gui.Desktop.desktop, - MessageManager - .getString("label.remove_from_default_list"), - MessageManager - .getString("label.remove_user_defined_colour"), - JOptionPane.YES_NO_OPTION); - if (option == JOptionPane.YES_OPTION) - { - jalview.gui.UserDefinedColours - .removeColourFromDefaults(radioItem.getText()); - colourMenu.remove(radioItem); - } - else + offerRemoval(radioItem); + } + } + + @Override + public void mouseReleased(MouseEvent evt) + { + if (evt.isPopupTrigger()) // Windows + { + offerRemoval(radioItem); + } + } + + /** + * @param radioItem + */ + void offerRemoval(final JRadioButtonMenuItem radioItem) + { + radioItem.removeActionListener(radioItem.getActionListeners()[0]); + + int option = JOptionPane.showInternalConfirmDialog( + jalview.gui.Desktop.desktop, MessageManager + .getString("label.remove_from_default_list"), + MessageManager + .getString("label.remove_user_defined_colour"), + JOptionPane.YES_NO_OPTION); + if (option == JOptionPane.YES_OPTION) + { + jalview.gui.UserDefinedColours + .removeColourFromDefaults(radioItem.getText()); + colourMenu.remove(radioItem); + } + else + { + radioItem.addActionListener(new ActionListener() { - radioItem.addActionListener(new ActionListener() + @Override + public void actionPerformed(ActionEvent evt) { - @Override - public void actionPerformed(ActionEvent evt) - { - userDefinedColour_actionPerformed(evt); - } - }); - } + userDefinedColour_actionPerformed(evt); + } + }); } } }); @@ -486,9 +368,8 @@ public class GAlignFrame extends JInternalFrame // colours.add(covariationColour); colours.add(tcoffeeColour); colours.add(RNAInteractionColour); - setColourSelected(jalview.bin.Cache - .getDefault("DEFAULT_COLOUR", "None")); - + setColourSelected(jalview.bin.Cache.getDefault( + Preferences.DEFAULT_COLOUR, "None")); } public void setColourSelected(String defaultColour) @@ -590,82 +471,87 @@ public class GAlignFrame extends JInternalFrame private void jbInit() throws Exception { - fileMenu.setText(MessageManager.getString("action.file")); - saveAs.setText(MessageManager.getString("action.save_as") + "..."); - saveAs.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_S, Toolkit.getDefaultToolkit() - .getMenuShortcutKeyMask() - | java.awt.event.KeyEvent.SHIFT_MASK, false)); - saveAs.addActionListener(new ActionListener() + JMenuItem saveAs = new JMenuItem( + MessageManager.getString("action.save_as")); + ActionListener al = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { saveAs_actionPerformed(e); } - }); + }; + KeyStroke keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_S, Toolkit + .getDefaultToolkit().getMenuShortcutKeyMask() + | KeyEvent.SHIFT_MASK, false); + addMenuActionAndAccelerator(keyStroke, saveAs, al); + closeMenuItem.setText(MessageManager.getString("action.close")); - closeMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_W, Toolkit.getDefaultToolkit() - .getMenuShortcutKeyMask(), false)); - closeMenuItem.addActionListener(new java.awt.event.ActionListener() + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_W, Toolkit + .getDefaultToolkit().getMenuShortcutKeyMask(), false); + al = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { closeMenuItem_actionPerformed(false); } - }); - editMenu.setText(MessageManager.getString("action.edit")); - viewMenu.setText(MessageManager.getString("action.view")); - annotationsMenu.setText(MessageManager.getString("action.annotations")); + }; + addMenuActionAndAccelerator(keyStroke, closeMenuItem, al); + + JMenu editMenu = new JMenu(MessageManager.getString("action.edit")); + JMenu viewMenu = new JMenu(MessageManager.getString("action.view")); + JMenu annotationsMenu = new JMenu( + MessageManager.getString("action.annotations")); + JMenu showMenu = new JMenu(MessageManager.getString("action.show")); colourMenu.setText(MessageManager.getString("action.colour")); - calculateMenu.setText(MessageManager.getString("action.calculate")); + JMenu calculateMenu = new JMenu( + MessageManager.getString("action.calculate")); webService.setText(MessageManager.getString("action.web_service")); - selectAllSequenceMenuItem.setText(MessageManager - .getString("action.select_all")); - selectAllSequenceMenuItem.setAccelerator(javax.swing.KeyStroke - .getKeyStroke(java.awt.event.KeyEvent.VK_A, Toolkit - .getDefaultToolkit().getMenuShortcutKeyMask(), false)); - selectAllSequenceMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - selectAllSequenceMenuItem_actionPerformed(e); - } - }); - deselectAllSequenceMenuItem.setText(MessageManager - .getString("action.deselect_all")); - deselectAllSequenceMenuItem.setAccelerator(javax.swing.KeyStroke - .getKeyStroke(java.awt.event.KeyEvent.VK_ESCAPE, 0, false)); - deselectAllSequenceMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - deselectAllSequenceMenuItem_actionPerformed(e); - } - }); - invertSequenceMenuItem.setText(MessageManager - .getString("action.invert_sequence_selection")); - invertSequenceMenuItem.setAccelerator(javax.swing.KeyStroke - .getKeyStroke(java.awt.event.KeyEvent.VK_I, Toolkit - .getDefaultToolkit().getMenuShortcutKeyMask(), false)); - invertSequenceMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - invertSequenceMenuItem_actionPerformed(e); - } - }); - grpsFromSelection.setText(MessageManager - .getString("action.make_groups_selection")); - grpsFromSelection.addActionListener(new java.awt.event.ActionListener() + JMenuItem selectAllSequenceMenuItem = new JMenuItem( + MessageManager.getString("action.select_all")); + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_A, Toolkit + .getDefaultToolkit().getMenuShortcutKeyMask(), false); + al = new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + selectAllSequenceMenuItem_actionPerformed(e); + } + }; + addMenuActionAndAccelerator(keyStroke, selectAllSequenceMenuItem, al); + + JMenuItem deselectAllSequenceMenuItem = new JMenuItem( + MessageManager.getString("action.deselect_all")); + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, false); + al = new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + deselectAllSequenceMenuItem_actionPerformed(e); + } + }; + addMenuActionAndAccelerator(keyStroke, deselectAllSequenceMenuItem, al); + + JMenuItem invertSequenceMenuItem = new JMenuItem( + MessageManager.getString("action.invert_sequence_selection")); + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_I, Toolkit + .getDefaultToolkit().getMenuShortcutKeyMask(), false); + al = new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + invertSequenceMenuItem_actionPerformed(e); + } + }; + addMenuActionAndAccelerator(keyStroke, invertSequenceMenuItem, al); + + JMenuItem grpsFromSelection = new JMenuItem( + MessageManager.getString("action.make_groups_selection")); + grpsFromSelection.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -673,11 +559,11 @@ public class GAlignFrame extends JInternalFrame makeGrpsFromSelection_actionPerformed(e); } }); - expandAlignment.setText(MessageManager - .getString("action.view_flanking_regions")); + JMenuItem expandAlignment = new JMenuItem( + MessageManager.getString("action.view_flanking_regions")); expandAlignment.setToolTipText(MessageManager .getString("label.view_flanking_regions")); - expandAlignment.addActionListener(new java.awt.event.ActionListener() + expandAlignment.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -685,88 +571,86 @@ public class GAlignFrame extends JInternalFrame expand_newalign(e); } }); - remove2LeftMenuItem.setText(MessageManager - .getString("action.remove_left")); - remove2LeftMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_L, Toolkit.getDefaultToolkit() - .getMenuShortcutKeyMask(), false)); - remove2LeftMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - remove2LeftMenuItem_actionPerformed(e); - } - }); - remove2RightMenuItem.setText(MessageManager - .getString("action.remove_right")); - remove2RightMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_R, Toolkit.getDefaultToolkit() - .getMenuShortcutKeyMask(), false)); - remove2RightMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - remove2RightMenuItem_actionPerformed(e); - } - }); - removeGappedColumnMenuItem.setText(MessageManager - .getString("action.remove_empty_columns")); - removeGappedColumnMenuItem.setAccelerator(javax.swing.KeyStroke - .getKeyStroke(java.awt.event.KeyEvent.VK_E, Toolkit - .getDefaultToolkit().getMenuShortcutKeyMask(), false)); - removeGappedColumnMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - removeGappedColumnMenuItem_actionPerformed(e); - } - }); - removeAllGapsMenuItem.setText(MessageManager - .getString("action.remove_all_gaps")); - removeAllGapsMenuItem.setAccelerator(javax.swing.KeyStroke - .getKeyStroke(java.awt.event.KeyEvent.VK_E, Toolkit - .getDefaultToolkit().getMenuShortcutKeyMask() - | java.awt.event.KeyEvent.SHIFT_MASK, false)); - removeAllGapsMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - removeAllGapsMenuItem_actionPerformed(e); - } - }); - justifyLeftMenuItem.setText(MessageManager - .getString("action.left_justify_alignment")); - justifyLeftMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - justifyLeftMenuItem_actionPerformed(e); - } - }); - justifyRightMenuItem.setText(MessageManager - .getString("action.right_justify_alignment")); - justifyRightMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - justifyRightMenuItem_actionPerformed(e); - } - }); + JMenuItem remove2LeftMenuItem = new JMenuItem( + MessageManager.getString("action.remove_left")); + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_L, Toolkit + .getDefaultToolkit().getMenuShortcutKeyMask(), false); + al = new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + remove2LeftMenuItem_actionPerformed(e); + } + }; + addMenuActionAndAccelerator(keyStroke, remove2LeftMenuItem, al); + + JMenuItem remove2RightMenuItem = new JMenuItem( + MessageManager.getString("action.remove_right")); + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_R, Toolkit + .getDefaultToolkit().getMenuShortcutKeyMask(), false); + al = new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + remove2RightMenuItem_actionPerformed(e); + } + }; + addMenuActionAndAccelerator(keyStroke, remove2RightMenuItem, al); + + JMenuItem removeGappedColumnMenuItem = new JMenuItem( + MessageManager.getString("action.remove_empty_columns")); + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_E, Toolkit + .getDefaultToolkit().getMenuShortcutKeyMask(), false); + al = new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + removeGappedColumnMenuItem_actionPerformed(e); + } + }; + addMenuActionAndAccelerator(keyStroke, removeGappedColumnMenuItem, al); + + JMenuItem removeAllGapsMenuItem = new JMenuItem( + MessageManager.getString("action.remove_all_gaps")); + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_E, Toolkit + .getDefaultToolkit().getMenuShortcutKeyMask() + | KeyEvent.SHIFT_MASK, false); + al = new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + removeAllGapsMenuItem_actionPerformed(e); + } + }; + addMenuActionAndAccelerator(keyStroke, removeAllGapsMenuItem, al); + + JMenuItem justifyLeftMenuItem = new JMenuItem( + MessageManager.getString("action.left_justify_alignment")); + justifyLeftMenuItem.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + justifyLeftMenuItem_actionPerformed(e); + } + }); + JMenuItem justifyRightMenuItem = new JMenuItem( + MessageManager.getString("action.right_justify_alignment")); + justifyRightMenuItem.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + justifyRightMenuItem_actionPerformed(e); + } + }); viewBoxesMenuItem.setText(MessageManager.getString("action.boxes")); viewBoxesMenuItem.setState(true); - viewBoxesMenuItem.addActionListener(new java.awt.event.ActionListener() + viewBoxesMenuItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -776,7 +660,7 @@ public class GAlignFrame extends JInternalFrame }); viewTextMenuItem.setText(MessageManager.getString("action.text")); viewTextMenuItem.setState(true); - viewTextMenuItem.addActionListener(new java.awt.event.ActionListener() + viewTextMenuItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -787,28 +671,27 @@ public class GAlignFrame extends JInternalFrame showNonconservedMenuItem.setText(MessageManager .getString("label.show_non_conversed")); showNonconservedMenuItem.setState(false); - showNonconservedMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - showUnconservedMenuItem_actionPerformed(e); - } - }); - sortPairwiseMenuItem.setText(MessageManager - .getString("action.by_pairwise_id")); - sortPairwiseMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - sortPairwiseMenuItem_actionPerformed(e); - } - }); - sortIDMenuItem.setText(MessageManager.getString("action.by_id")); - sortIDMenuItem.addActionListener(new java.awt.event.ActionListener() + showNonconservedMenuItem.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + showUnconservedMenuItem_actionPerformed(e); + } + }); + JMenuItem sortPairwiseMenuItem = new JMenuItem( + MessageManager.getString("action.by_pairwise_id")); + sortPairwiseMenuItem.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + sortPairwiseMenuItem_actionPerformed(e); + } + }); + JMenuItem sortIDMenuItem = new JMenuItem( + MessageManager.getString("action.by_id")); + sortIDMenuItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -816,19 +699,19 @@ public class GAlignFrame extends JInternalFrame sortIDMenuItem_actionPerformed(e); } }); - sortLengthMenuItem - .setText(MessageManager.getString("action.by_length")); - sortLengthMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - sortLengthMenuItem_actionPerformed(e); - } - }); - sortGroupMenuItem.setText(MessageManager.getString("action.by_group")); - sortGroupMenuItem.addActionListener(new java.awt.event.ActionListener() + JMenuItem sortLengthMenuItem = new JMenuItem( + MessageManager.getString("action.by_length")); + sortLengthMenuItem.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + sortLengthMenuItem_actionPerformed(e); + } + }); + JMenuItem sortGroupMenuItem = new JMenuItem( + MessageManager.getString("action.by_group")); + sortGroupMenuItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -836,34 +719,34 @@ public class GAlignFrame extends JInternalFrame sortGroupMenuItem_actionPerformed(e); } }); - removeRedundancyMenuItem.setText(MessageManager - .getString("action.remove_redundancy").concat("...")); - removeRedundancyMenuItem.setAccelerator(javax.swing.KeyStroke - .getKeyStroke(java.awt.event.KeyEvent.VK_D, Toolkit - .getDefaultToolkit().getMenuShortcutKeyMask(), false)); - removeRedundancyMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - removeRedundancyMenuItem_actionPerformed(e); - } - }); - pairwiseAlignmentMenuItem.setText(MessageManager - .getString("action.pairwise_alignment")); - pairwiseAlignmentMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - pairwiseAlignmentMenuItem_actionPerformed(e); - } - }); - PCAMenuItem.setText(MessageManager - .getString("label.principal_component_analysis")); - PCAMenuItem.addActionListener(new java.awt.event.ActionListener() + + JMenuItem removeRedundancyMenuItem = new JMenuItem( + MessageManager.getString("action.remove_redundancy")); + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_D, Toolkit + .getDefaultToolkit().getMenuShortcutKeyMask(), false); + al = new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + removeRedundancyMenuItem_actionPerformed(e); + } + }; + addMenuActionAndAccelerator(keyStroke, removeRedundancyMenuItem, al); + + JMenuItem pairwiseAlignmentMenuItem = new JMenuItem( + MessageManager.getString("action.pairwise_alignment")); + pairwiseAlignmentMenuItem.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + pairwiseAlignmentMenuItem_actionPerformed(e); + } + }); + JMenuItem PCAMenuItem = new JMenuItem( + MessageManager.getString("label.principal_component_analysis")); + PCAMenuItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -871,29 +754,28 @@ public class GAlignFrame extends JInternalFrame PCAMenuItem_actionPerformed(e); } }); - averageDistanceTreeMenuItem.setText(MessageManager - .getString("label.average_distance_identity")); - averageDistanceTreeMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - averageDistanceTreeMenuItem_actionPerformed(e); - } - }); - neighbourTreeMenuItem.setText(MessageManager - .getString("label.neighbour_joining_identity")); - neighbourTreeMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - neighbourTreeMenuItem_actionPerformed(e); - } - }); - this.getContentPane().setLayout(borderLayout1); + JMenuItem averageDistanceTreeMenuItem = new JMenuItem( + MessageManager.getString("label.average_distance_identity")); + averageDistanceTreeMenuItem.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + averageDistanceTreeMenuItem_actionPerformed(e); + } + }); + JMenuItem neighbourTreeMenuItem = new JMenuItem( + MessageManager.getString("label.neighbour_joining_identity")); + neighbourTreeMenuItem.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + neighbourTreeMenuItem_actionPerformed(e); + } + }); + + this.getContentPane().setLayout(new BorderLayout()); alignFrameMenuBar.setFont(new java.awt.Font("Verdana", 0, 11)); statusBar.setBackground(Color.white); statusBar.setFont(new java.awt.Font("Verdana", 0, 11)); @@ -902,8 +784,7 @@ public class GAlignFrame extends JInternalFrame outputTextboxMenu.setText(MessageManager .getString("label.out_to_textbox")); clustalColour.setText(MessageManager.getString("label.clustalx")); - - clustalColour.addActionListener(new java.awt.event.ActionListener() + clustalColour.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -912,7 +793,7 @@ public class GAlignFrame extends JInternalFrame } }); zappoColour.setText(MessageManager.getString("label.zappo")); - zappoColour.addActionListener(new java.awt.event.ActionListener() + zappoColour.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -921,7 +802,7 @@ public class GAlignFrame extends JInternalFrame } }); taylorColour.setText(MessageManager.getString("label.taylor")); - taylorColour.addActionListener(new java.awt.event.ActionListener() + taylorColour.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -931,17 +812,16 @@ public class GAlignFrame extends JInternalFrame }); hydrophobicityColour.setText(MessageManager .getString("label.hydrophobicity")); - hydrophobicityColour - .addActionListener(new java.awt.event.ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - hydrophobicityColour_actionPerformed(e); - } - }); + hydrophobicityColour.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + hydrophobicityColour_actionPerformed(e); + } + }); helixColour.setText(MessageManager.getString("label.helix_propensity")); - helixColour.addActionListener(new java.awt.event.ActionListener() + helixColour.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -951,7 +831,7 @@ public class GAlignFrame extends JInternalFrame }); strandColour.setText(MessageManager .getString("label.strand_propensity")); - strandColour.addActionListener(new java.awt.event.ActionListener() + strandColour.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -960,7 +840,7 @@ public class GAlignFrame extends JInternalFrame } }); turnColour.setText(MessageManager.getString("label.turn_propensity")); - turnColour.addActionListener(new java.awt.event.ActionListener() + turnColour.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -969,7 +849,7 @@ public class GAlignFrame extends JInternalFrame } }); buriedColour.setText(MessageManager.getString("label.buried_index")); - buriedColour.addActionListener(new java.awt.event.ActionListener() + buriedColour.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -979,7 +859,7 @@ public class GAlignFrame extends JInternalFrame }); userDefinedColour.setText(MessageManager .getString("action.user_defined")); - userDefinedColour.addActionListener(new java.awt.event.ActionListener() + userDefinedColour.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -989,7 +869,7 @@ public class GAlignFrame extends JInternalFrame }); PIDColour .setText(MessageManager.getString("label.percentage_identity")); - PIDColour.addActionListener(new java.awt.event.ActionListener() + PIDColour.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -999,7 +879,7 @@ public class GAlignFrame extends JInternalFrame }); BLOSUM62Colour .setText(MessageManager.getString("label.blosum62_score")); - BLOSUM62Colour.addActionListener(new java.awt.event.ActionListener() + BLOSUM62Colour.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -1008,7 +888,7 @@ public class GAlignFrame extends JInternalFrame } }); nucleotideColour.setText(MessageManager.getString("label.nucleotide")); - nucleotideColour.addActionListener(new java.awt.event.ActionListener() + nucleotideColour.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -1019,55 +899,51 @@ public class GAlignFrame extends JInternalFrame purinePyrimidineColour.setText(MessageManager .getString("label.purine_pyrimidine")); - purinePyrimidineColour - .addActionListener(new java.awt.event.ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - purinePyrimidineColour_actionPerformed(e); - } - }); + purinePyrimidineColour.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + purinePyrimidineColour_actionPerformed(e); + } + }); RNAInteractionColour.setText("RNA Interaction type"); - RNAInteractionColour - .addActionListener(new java.awt.event.ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - RNAInteractionColour_actionPerformed(e); - } - }); + RNAInteractionColour.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + RNAInteractionColour_actionPerformed(e); + } + }); /* * covariationColour.setText("Covariation"); - * covariationColour.addActionListener(new java.awt.event.ActionListener() { - * public void actionPerformed(ActionEvent e) { - * covariationColour_actionPerformed(e); } }); + * covariationColour.addActionListener(new ActionListener() { public void + * actionPerformed(ActionEvent e) { covariationColour_actionPerformed(e); } + * }); */ - avDistanceTreeBlosumMenuItem.setText(MessageManager - .getString("label.average_distance_bloslum62")); - avDistanceTreeBlosumMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - avTreeBlosumMenuItem_actionPerformed(e); - } - }); - njTreeBlosumMenuItem.setText(MessageManager - .getString("label.neighbour_blosum62")); - njTreeBlosumMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - njTreeBlosumMenuItem_actionPerformed(e); - } - }); + JMenuItem avDistanceTreeBlosumMenuItem = new JMenuItem( + MessageManager.getString("label.average_distance_bloslum62")); + avDistanceTreeBlosumMenuItem.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + avTreeBlosumMenuItem_actionPerformed(e); + } + }); + JMenuItem njTreeBlosumMenuItem = new JMenuItem( + MessageManager.getString("label.neighbour_blosum62")); + njTreeBlosumMenuItem.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + njTreeBlosumMenuItem_actionPerformed(e); + } + }); annotationPanelMenuItem.setActionCommand(""); annotationPanelMenuItem.setText(MessageManager .getString("label.show_annotations")); @@ -1081,72 +957,102 @@ public class GAlignFrame extends JInternalFrame annotationPanelMenuItem_actionPerformed(e); } }); - /* - * Show/hide all annotations only enabled if annotation panel is shown - */ - showAllAnnotations.setText(MessageManager - .getString("label.show_all_annotations")); - showAllAnnotations.setEnabled(annotationPanelMenuItem.getState()); - showAllAnnotations.addActionListener(new ActionListener() + showAllAlAnnotations.setText(MessageManager + .getString("label.show_all_al_annotations")); + final boolean isAnnotationPanelShown = annotationPanelMenuItem + .getState(); + showAllAlAnnotations.setEnabled(isAnnotationPanelShown); + showAllAlAnnotations.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + showAllAnnotations_actionPerformed(false, true); + } + }); + hideAllAlAnnotations.setText(MessageManager + .getString("label.hide_all_al_annotations")); + hideAllAlAnnotations.setEnabled(isAnnotationPanelShown); + hideAllAlAnnotations.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + hideAllAnnotations_actionPerformed(false, true); + } + }); + showAllSeqAnnotations.setText(MessageManager + .getString("label.show_all_seq_annotations")); + showAllSeqAnnotations.setEnabled(isAnnotationPanelShown); + showAllSeqAnnotations.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - showAllAnnotations_actionPerformed(); + showAllAnnotations_actionPerformed(true, false); } }); - hideAllAnnotations.setText(MessageManager - .getString("label.hide_all_annotations")); - hideAllAnnotations.setEnabled(annotationPanelMenuItem.getState()); - hideAllAnnotations.addActionListener(new ActionListener() + hideAllSeqAnnotations.setText(MessageManager + .getString("label.hide_all_seq_annotations")); + hideAllSeqAnnotations.setEnabled(isAnnotationPanelShown); + hideAllSeqAnnotations.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - hideAllAnnotations_actionPerformed(); + hideAllAnnotations_actionPerformed(true, false); } }); - sortAnnBySequence.setText(MessageManager - .getString("label.sort_annotations_by_sequence")); + SequenceAnnotationOrder sortAnnotationsBy = SequenceAnnotationOrder + .valueOf(Cache.getDefault(Preferences.SORT_ANNOTATIONS, + SequenceAnnotationOrder.NONE.name())); + final JCheckBoxMenuItem sortAnnBySequence = new JCheckBoxMenuItem( + MessageManager.getString("label.sort_annotations_by_sequence")); + final JCheckBoxMenuItem sortAnnByLabel = new JCheckBoxMenuItem( + MessageManager.getString("label.sort_annotations_by_label")); + + sortAnnBySequence + .setSelected(sortAnnotationsBy == SequenceAnnotationOrder.SEQUENCE_AND_LABEL); sortAnnBySequence.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - sortAnnBySequence.setEnabled(false); - sortAnnBySequence.setState(true); - sortAnnByType.setEnabled(true); - sortAnnByType.setState(false); - sortAnnotations_actionPerformed(SortOrder.SEQUENCE_AND_TYPE); + boolean newState = sortAnnBySequence.getState(); + sortAnnByLabel.setSelected(false); + setAnnotationSortOrder(newState ? SequenceAnnotationOrder.SEQUENCE_AND_LABEL + : SequenceAnnotationOrder.NONE); + sortAnnotations_actionPerformed(); } }); - sortAnnByType.setText(MessageManager - .getString("label.sort_annotations_by_type")); - sortAnnByType.addActionListener(new ActionListener() + sortAnnByLabel + .setSelected(sortAnnotationsBy == SequenceAnnotationOrder.LABEL_AND_SEQUENCE); + sortAnnByLabel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - sortAnnByType.setEnabled(false); - sortAnnByType.setState(true); - sortAnnBySequence.setEnabled(true); - sortAnnBySequence.setState(false); - sortAnnotations_actionPerformed(SortOrder.TYPE_AND_SEQUENCE); + boolean newState = sortAnnByLabel.getState(); + sortAnnBySequence.setSelected(false); + setAnnotationSortOrder(newState ? SequenceAnnotationOrder.LABEL_AND_SEQUENCE + : SequenceAnnotationOrder.NONE); + sortAnnotations_actionPerformed(); } }); colourTextMenuItem.setText(MessageManager .getString("label.colour_text")); - colourTextMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - colourTextMenuItem_actionPerformed(e); - } - }); - htmlMenuItem.setText(MessageManager.getString("label.html")); - htmlMenuItem.addActionListener(new java.awt.event.ActionListener() + colourTextMenuItem.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + colourTextMenuItem_actionPerformed(e); + } + }); + + JMenuItem htmlMenuItem = new JMenuItem( + MessageManager.getString("label.html")); + htmlMenuItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -1154,9 +1060,21 @@ public class GAlignFrame extends JInternalFrame htmlMenuItem_actionPerformed(e); } }); - overviewMenuItem.setText(MessageManager - .getString("label.overview_window")); - overviewMenuItem.addActionListener(new java.awt.event.ActionListener() + + JMenuItem createBioJS = new JMenuItem( + MessageManager.getString("label.biojs_html_export")); + createBioJS.addActionListener(new java.awt.event.ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + bioJSMenuItem_actionPerformed(e); + } + }); + + JMenuItem overviewMenuItem = new JMenuItem( + MessageManager.getString("label.overview_window")); + overviewMenuItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -1164,45 +1082,47 @@ public class GAlignFrame extends JInternalFrame overviewMenuItem_actionPerformed(e); } }); + undoMenuItem.setEnabled(false); undoMenuItem.setText(MessageManager.getString("action.undo")); - undoMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_Z, Toolkit.getDefaultToolkit() - .getMenuShortcutKeyMask(), false)); - undoMenuItem.addActionListener(new java.awt.event.ActionListener() + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_Z, Toolkit + .getDefaultToolkit().getMenuShortcutKeyMask(), false); + al = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { undoMenuItem_actionPerformed(e); } - }); + }; + addMenuActionAndAccelerator(keyStroke, undoMenuItem, al); + redoMenuItem.setEnabled(false); redoMenuItem.setText(MessageManager.getString("action.redo")); - redoMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_Y, Toolkit.getDefaultToolkit() - .getMenuShortcutKeyMask(), false)); - redoMenuItem.addActionListener(new java.awt.event.ActionListener() + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_Y, Toolkit + .getDefaultToolkit().getMenuShortcutKeyMask(), false); + al = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { redoMenuItem_actionPerformed(e); } - }); + }; + addMenuActionAndAccelerator(keyStroke, redoMenuItem, al); + conservationMenuItem.setText(MessageManager .getString("action.by_conservation")); - conservationMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - conservationMenuItem_actionPerformed(e); - } - }); + conservationMenuItem.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + conservationMenuItem_actionPerformed(e); + } + }); noColourmenuItem.setText(MessageManager.getString("label.none")); - noColourmenuItem.addActionListener(new java.awt.event.ActionListener() + noColourmenuItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -1211,7 +1131,7 @@ public class GAlignFrame extends JInternalFrame } }); wrapMenuItem.setText(MessageManager.getString("label.wrap")); - wrapMenuItem.addActionListener(new java.awt.event.ActionListener() + wrapMenuItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -1219,47 +1139,52 @@ public class GAlignFrame extends JInternalFrame wrapMenuItem_actionPerformed(e); } }); - printMenuItem.setText(MessageManager.getString("action.print") + "..."); - printMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_P, Toolkit.getDefaultToolkit() - .getMenuShortcutKeyMask(), false)); - printMenuItem.addActionListener(new java.awt.event.ActionListener() + + JMenuItem printMenuItem = new JMenuItem( + MessageManager.getString("action.print")); + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_P, Toolkit + .getDefaultToolkit().getMenuShortcutKeyMask(), false); + al = new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + printMenuItem_actionPerformed(e); + } + }; + addMenuActionAndAccelerator(keyStroke, printMenuItem, al); + + renderGapsMenuItem + .setText(MessageManager.getString("action.show_gaps")); + renderGapsMenuItem.setState(true); + renderGapsMenuItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - printMenuItem_actionPerformed(e); + renderGapsMenuItem_actionPerformed(e); } }); - renderGapsMenuItem - .setText(MessageManager.getString("action.show_gaps")); - renderGapsMenuItem.setState(true); - renderGapsMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - renderGapsMenuItem_actionPerformed(e); - } - }); - findMenuItem.setText(MessageManager.getString("action.find")); - findMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_F, Toolkit.getDefaultToolkit() - .getMenuShortcutKeyMask(), false)); + + JMenuItem findMenuItem = new JMenuItem( + MessageManager.getString("action.find")); + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_F, Toolkit + .getDefaultToolkit().getMenuShortcutKeyMask(), false); findMenuItem.setToolTipText(JvSwingUtils.wrapTooltip(true, MessageManager.getString("label.find_tip"))); - findMenuItem.addActionListener(new java.awt.event.ActionListener() + al = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { findMenuItem_actionPerformed(e); } - }); + }; + addMenuActionAndAccelerator(keyStroke, findMenuItem, al); + abovePIDThreshold.setText(MessageManager .getString("label.above_identity_threshold")); - abovePIDThreshold.addActionListener(new java.awt.event.ActionListener() + abovePIDThreshold.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -1374,17 +1299,46 @@ public class GAlignFrame extends JInternalFrame applyAutoAnnotationSettings.setVisible(true); applyAutoAnnotationSettings.addActionListener(new ActionListener() { - @Override public void actionPerformed(ActionEvent e) { applyAutoAnnotationSettings_actionPerformed(e); } + }); + ButtonGroup buttonGroup = new ButtonGroup(); + final JRadioButtonMenuItem showAutoFirst = new JRadioButtonMenuItem( + MessageManager.getString("label.show_first")); + final JRadioButtonMenuItem showAutoLast = new JRadioButtonMenuItem( + MessageManager.getString("label.show_last")); + buttonGroup.add(showAutoFirst); + buttonGroup.add(showAutoLast); + final boolean autoFirst = Cache.getDefault( + Preferences.SHOW_AUTOCALC_ABOVE, false); + showAutoFirst.setSelected(autoFirst); + setShowAutoCalculatedAbove(autoFirst); + showAutoFirst.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + setShowAutoCalculatedAbove(showAutoFirst.isSelected()); + sortAnnotations_actionPerformed(); + } + }); + showAutoLast.setSelected(!showAutoFirst.isSelected()); + showAutoLast.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + setShowAutoCalculatedAbove(!showAutoLast.isSelected()); + sortAnnotations_actionPerformed(); + } }); nucleotideColour.setText(MessageManager.getString("label.nucleotide")); - nucleotideColour.addActionListener(new java.awt.event.ActionListener() + nucleotideColour.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -1405,71 +1359,79 @@ public class GAlignFrame extends JInternalFrame } }); - deleteGroups - .setText(MessageManager.getString("action.undefine_groups")); - deleteGroups.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_U, Toolkit.getDefaultToolkit() - .getMenuShortcutKeyMask(), false)); - deleteGroups.addActionListener(new java.awt.event.ActionListener() + JMenuItem deleteGroups = new JMenuItem( + MessageManager.getString("action.undefine_groups")); + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_U, Toolkit + .getDefaultToolkit().getMenuShortcutKeyMask(), false); + al = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { deleteGroups_actionPerformed(e); } - }); - createGroup.setText(MessageManager.getString("action.create_groups")); - createGroup.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_G, Toolkit.getDefaultToolkit() - .getMenuShortcutKeyMask(), false)); - createGroup.addActionListener(new java.awt.event.ActionListener() + }; + addMenuActionAndAccelerator(keyStroke, deleteGroups, al); + + JMenuItem createGroup = new JMenuItem( + MessageManager.getString("action.create_groups")); + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_G, Toolkit + .getDefaultToolkit().getMenuShortcutKeyMask(), false); + al = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { createGroup_actionPerformed(e); } - }); - unGroup.setText(MessageManager.getString("action.remove_group")); - unGroup.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_G, Toolkit.getDefaultToolkit() - .getMenuShortcutKeyMask() - | java.awt.event.KeyEvent.SHIFT_MASK, false)); - unGroup.addActionListener(new java.awt.event.ActionListener() + }; + addMenuActionAndAccelerator(keyStroke, createGroup, al); + + JMenuItem unGroup = new JMenuItem( + MessageManager.getString("action.remove_group")); + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_G, Toolkit + .getDefaultToolkit().getMenuShortcutKeyMask() + | KeyEvent.SHIFT_MASK, false); + al = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { unGroup_actionPerformed(e); } - }); + }; + addMenuActionAndAccelerator(keyStroke, unGroup, al); + copy.setText(MessageManager.getString("action.copy")); - copy.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_C, Toolkit.getDefaultToolkit() - .getMenuShortcutKeyMask(), false)); + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_C, Toolkit + .getDefaultToolkit().getMenuShortcutKeyMask(), false); - copy.addActionListener(new java.awt.event.ActionListener() + al = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { copy_actionPerformed(e); } - }); + }; + addMenuActionAndAccelerator(keyStroke, copy, al); + cut.setText(MessageManager.getString("action.cut")); - cut.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_X, Toolkit.getDefaultToolkit() - .getMenuShortcutKeyMask(), false)); - cut.addActionListener(new java.awt.event.ActionListener() + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_X, Toolkit + .getDefaultToolkit().getMenuShortcutKeyMask(), false); + al = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { cut_actionPerformed(e); } - }); - delete.setText(MessageManager.getString("action.delete")); - delete.addActionListener(new java.awt.event.ActionListener() + }; + addMenuActionAndAccelerator(keyStroke, cut, al); + + JMenuItem delete = new JMenuItem( + MessageManager.getString("action.delete")); + delete.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -1477,35 +1439,40 @@ public class GAlignFrame extends JInternalFrame delete_actionPerformed(e); } }); + pasteMenu.setText(MessageManager.getString("action.paste")); - pasteNew.setText(MessageManager.getString("label.to_new_alignment")); - pasteNew.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_V, Toolkit.getDefaultToolkit() - .getMenuShortcutKeyMask() - | java.awt.event.KeyEvent.SHIFT_MASK, false)); - pasteNew.addActionListener(new java.awt.event.ActionListener() + JMenuItem pasteNew = new JMenuItem( + MessageManager.getString("label.to_new_alignment")); + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_V, Toolkit + .getDefaultToolkit().getMenuShortcutKeyMask() + | KeyEvent.SHIFT_MASK, false); + al = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { pasteNew_actionPerformed(e); } - }); - pasteThis.setText(MessageManager.getString("label.to_this_alignment")); - pasteThis.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_V, Toolkit.getDefaultToolkit() - .getMenuShortcutKeyMask(), false)); - pasteThis.addActionListener(new java.awt.event.ActionListener() + }; + addMenuActionAndAccelerator(keyStroke, pasteNew, al); + + JMenuItem pasteThis = new JMenuItem( + MessageManager.getString("label.to_this_alignment")); + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_V, Toolkit + .getDefaultToolkit().getMenuShortcutKeyMask(), false); + al = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { pasteThis_actionPerformed(e); } - }); + }; + addMenuActionAndAccelerator(keyStroke, pasteThis, al); + applyToAllGroups.setText(MessageManager .getString("label.apply_colour_to_all_groups")); - applyToAllGroups.addActionListener(new java.awt.event.ActionListener() + applyToAllGroups.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -1513,7 +1480,8 @@ public class GAlignFrame extends JInternalFrame applyToAllGroups_actionPerformed(e); } }); - createPNG.addActionListener(new java.awt.event.ActionListener() + JMenuItem createPNG = new JMenuItem("PNG"); + createPNG.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -1523,9 +1491,9 @@ public class GAlignFrame extends JInternalFrame }); createPNG.setActionCommand(MessageManager .getString("label.save_png_image")); - createPNG.setText("PNG"); - font.setText(MessageManager.getString("action.font")); - font.addActionListener(new java.awt.event.ActionListener() + + JMenuItem font = new JMenuItem(MessageManager.getString("action.font")); + font.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -1533,11 +1501,10 @@ public class GAlignFrame extends JInternalFrame font_actionPerformed(e); } }); - seqLimits.setText(MessageManager .getString("label.show_sequence_limits")); seqLimits.setState(jalview.bin.Cache.getDefault("SHOW_JVSUFFIX", true)); - seqLimits.addActionListener(new java.awt.event.ActionListener() + seqLimits.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -1545,8 +1512,8 @@ public class GAlignFrame extends JInternalFrame seqLimit_actionPerformed(e); } }); - epsFile.setText("EPS"); - epsFile.addActionListener(new java.awt.event.ActionListener() + JMenuItem epsFile = new JMenuItem("EPS"); + epsFile.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -1554,22 +1521,33 @@ public class GAlignFrame extends JInternalFrame createEPS(null); } }); - LoadtreeMenuItem.setActionCommand(MessageManager + + JMenuItem createSVG = new JMenuItem("SVG"); + createSVG.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + createSVG(null); + } + }); + + JMenuItem loadTreeMenuItem = new JMenuItem( + MessageManager.getString("label.load_associated_tree")); + loadTreeMenuItem.setActionCommand(MessageManager .getString("label.load_tree_for_sequence_set")); - LoadtreeMenuItem.setText(MessageManager - .getString("label.load_associated_tree")); - LoadtreeMenuItem.addActionListener(new java.awt.event.ActionListener() + loadTreeMenuItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - LoadtreeMenuItem_actionPerformed(e); + loadTreeMenuItem_actionPerformed(e); } }); scaleAbove.setVisible(false); scaleAbove.setText(MessageManager.getString("action.scale_above")); - scaleAbove.addActionListener(new java.awt.event.ActionListener() + scaleAbove.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -1580,7 +1558,7 @@ public class GAlignFrame extends JInternalFrame scaleLeft.setVisible(false); scaleLeft.setSelected(true); scaleLeft.setText(MessageManager.getString("action.scale_left")); - scaleLeft.addActionListener(new java.awt.event.ActionListener() + scaleLeft.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -1591,7 +1569,7 @@ public class GAlignFrame extends JInternalFrame scaleRight.setVisible(false); scaleRight.setSelected(true); scaleRight.setText(MessageManager.getString("action.scale_right")); - scaleRight.addActionListener(new java.awt.event.ActionListener() + scaleRight.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -1603,15 +1581,14 @@ public class GAlignFrame extends JInternalFrame centreColumnLabelsMenuItem.setState(false); centreColumnLabelsMenuItem.setText(MessageManager .getString("label.centre_column_labels")); - centreColumnLabelsMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - centreColumnLabels_actionPerformed(e); - } - }); + centreColumnLabelsMenuItem.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + centreColumnLabels_actionPerformed(e); + } + }); followHighlightMenuItem.setVisible(true); followHighlightMenuItem.setState(true); followHighlightMenuItem.setText(MessageManager @@ -1627,9 +1604,9 @@ public class GAlignFrame extends JInternalFrame }); - modifyPID.setText(MessageManager - .getString("label.modify_identity_thereshold")); - modifyPID.addActionListener(new java.awt.event.ActionListener() + JMenuItem modifyPID = new JMenuItem( + MessageManager.getString("label.modify_identity_threshold")); + modifyPID.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) @@ -1638,16 +1615,15 @@ public class GAlignFrame extends JInternalFrame } }); modifyConservation.setText(MessageManager - .getString("label.modify_conservation_thereshold")); - modifyConservation - .addActionListener(new java.awt.event.ActionListener() - { - @Override - public void actionPerformed(ActionEvent e) - { - modifyConservation_actionPerformed(e); - } - }); + .getString("label.modify_conservation_threshold")); + modifyConservation.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + modifyConservation_actionPerformed(e); + } + }); sortByTreeMenu .setText(MessageManager.getString("action.by_tree_order")); sort.setText(MessageManager.getString("action.sort")); @@ -1672,7 +1648,7 @@ public class GAlignFrame extends JInternalFrame sortByAnnotScore.setText(MessageManager .getString("label.sort_by_score")); sort.add(sortByAnnotScore); - sortByAnnotScore.addMenuListener(new javax.swing.event.MenuListener() + sort.addMenuListener(new javax.swing.event.MenuListener() { @Override @@ -1696,7 +1672,6 @@ public class GAlignFrame extends JInternalFrame calculateTree .setText(MessageManager.getString("action.calculate_tree")); - jMenu2.setText(MessageManager.getString("label.export_image")); padGapsMenuitem.setText(MessageManager.getString("label.pad_gaps")); padGapsMenuitem.setState(jalview.bin.Cache .getDefault("PAD_GAPS", false)); @@ -1708,8 +1683,9 @@ public class GAlignFrame extends JInternalFrame padGapsMenuitem_actionPerformed(e); } }); + JMenuItem vamsasStore = new JMenuItem( + MessageManager.getString("label.vamsas_store")); vamsasStore.setVisible(false); - vamsasStore.setText(MessageManager.getString("label.vamsas_store")); vamsasStore.addActionListener(new ActionListener() { @Override @@ -1728,8 +1704,28 @@ public class GAlignFrame extends JInternalFrame showTranslation_actionPerformed(e); } }); - extractScores.setText(MessageManager.getString("label.extract_scores") - + "..."); + showReverse.setText(MessageManager.getString("label.reverse")); + showReverse.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + showReverse_actionPerformed(false); + } + }); + showReverseComplement.setText(MessageManager + .getString("label.reverse_complement")); + showReverseComplement.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + showReverse_actionPerformed(true); + } + }); + + JMenuItem extractScores = new JMenuItem( + MessageManager.getString("label.extract_scores")); extractScores.addActionListener(new ActionListener() { @Override @@ -1738,17 +1734,26 @@ public class GAlignFrame extends JInternalFrame extractScores_actionPerformed(e); } }); - extractScores.setVisible(true); // JBPNote: TODO: make gui for regex based - // score extraction + extractScores.setVisible(true); + // JBPNote: TODO: make gui for regex based score extraction + + // for show products actions see AlignFrame.canShowProducts showProducts.setText(MessageManager.getString("label.get_cross_refs")); - /* - * showProducts.addActionListener(new ActionListener() { - * - * public void actionPerformed(ActionEvent e) { - * showProducts_actionPerformed(e); } }); - */ - openFeatureSettings.setText(MessageManager - .getString("label.feature_settings")); + + runGroovy.setText(MessageManager.getString("label.run_groovy")); + runGroovy.setToolTipText(MessageManager + .getString("label.run_groovy_tip")); + runGroovy.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + runGroovy_actionPerformed(); + } + }); + + JMenuItem openFeatureSettings = new JMenuItem( + MessageManager.getString("action.feature_settings")); openFeatureSettings.addActionListener(new ActionListener() { @Override @@ -1757,8 +1762,8 @@ public class GAlignFrame extends JInternalFrame featureSettings_actionPerformed(e); } }); - fetchSequence - .setText(MessageManager.getString("label.fetch_sequences")); + JMenuItem fetchSequence = new JMenuItem( + MessageManager.getString("label.fetch_sequences")); fetchSequence.addActionListener(new ActionListener() { @Override @@ -1768,8 +1773,8 @@ public class GAlignFrame extends JInternalFrame } }); - annotationColour.setText(MessageManager - .getString("action.by_annotation")); + JMenuItem annotationColour = new JMenuItem( + MessageManager.getString("action.by_annotation")); annotationColour.addActionListener(new ActionListener() { @Override @@ -1779,6 +1784,17 @@ public class GAlignFrame extends JInternalFrame } }); + JMenuItem annotationColumn = new JMenuItem( + MessageManager.getString("action.select_by_annotation")); + annotationColumn.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + annotationColumn_actionPerformed(e); + } + }); + rnahelicesColour.setText(MessageManager .getString("action.by_rna_helixes")); rnahelicesColour.addActionListener(new ActionListener() @@ -1790,8 +1806,8 @@ public class GAlignFrame extends JInternalFrame } }); - associatedData.setText(MessageManager - .getString("label.load_features_annotations")); + JMenuItem associatedData = new JMenuItem( + MessageManager.getString("label.load_features_annotations")); associatedData.addActionListener(new ActionListener() { @Override @@ -1845,9 +1861,10 @@ public class GAlignFrame extends JInternalFrame } }); - addSequenceMenu - .setText(MessageManager.getString("label.add_sequences")); - addFromFile.setText(MessageManager.getString("label.from_file")); + JMenu addSequenceMenu = new JMenu( + MessageManager.getString("label.add_sequences")); + JMenuItem addFromFile = new JMenuItem( + MessageManager.getString("label.from_file")); addFromFile.addActionListener(new ActionListener() { @Override @@ -1856,7 +1873,8 @@ public class GAlignFrame extends JInternalFrame addFromFile_actionPerformed(e); } }); - addFromText.setText(MessageManager.getString("label.from_textbox")); + JMenuItem addFromText = new JMenuItem( + MessageManager.getString("label.from_textbox")); addFromText.addActionListener(new ActionListener() { @Override @@ -1865,7 +1883,8 @@ public class GAlignFrame extends JInternalFrame addFromText_actionPerformed(e); } }); - addFromURL.setText(MessageManager.getString("label.from_url")); + JMenuItem addFromURL = new JMenuItem( + MessageManager.getString("label.from_url")); addFromURL.addActionListener(new ActionListener() { @Override @@ -1874,8 +1893,8 @@ public class GAlignFrame extends JInternalFrame addFromURL_actionPerformed(e); } }); - exportFeatures.setText(MessageManager - .getString("label.export_features")); + JMenuItem exportFeatures = new JMenuItem( + MessageManager.getString("label.export_features")); exportFeatures.addActionListener(new ActionListener() { @Override @@ -1884,8 +1903,8 @@ public class GAlignFrame extends JInternalFrame exportFeatures_actionPerformed(e); } }); - exportAnnotations.setText(MessageManager - .getString("label.export_annotations")); + JMenuItem exportAnnotations = new JMenuItem( + MessageManager.getString("label.export_annotations")); exportAnnotations.addActionListener(new ActionListener() { @Override @@ -1894,9 +1913,9 @@ public class GAlignFrame extends JInternalFrame exportAnnotations_actionPerformed(e); } }); - statusPanel.setLayout(gridLayout1); - jMenu3.setText(MessageManager.getString("action.show")); - showAllSeqs.setText(MessageManager.getString("label.all_sequences")); + statusPanel.setLayout(new GridLayout()); + JMenuItem showAllSeqs = new JMenuItem( + MessageManager.getString("label.all_sequences")); showAllSeqs.setToolTipText(MessageManager .getString("label.toggle_sequence_visibility")); showAllSeqs.addActionListener(new ActionListener() @@ -1907,7 +1926,8 @@ public class GAlignFrame extends JInternalFrame showAllSeqs_actionPerformed(e); } }); - showAllColumns.setText(MessageManager.getString("label.all_columns")); + JMenuItem showAllColumns = new JMenuItem( + MessageManager.getString("label.all_columns")); showAllColumns.setToolTipText(MessageManager .getString("label.toggle_columns_visibility")); showAllColumns.addActionListener(new ActionListener() @@ -1918,9 +1938,9 @@ public class GAlignFrame extends JInternalFrame showAllColumns_actionPerformed(e); } }); - hideMenu.setText(MessageManager.getString("action.hide")); - hideSelSequences.setText(MessageManager - .getString("label.selected_sequences")); + JMenu hideMenu = new JMenu(MessageManager.getString("action.hide")); + JMenuItem hideSelSequences = new JMenuItem( + MessageManager.getString("label.selected_sequences")); hideSelSequences.setToolTipText(MessageManager .getString("label.toggle_sequence_visibility")); hideSelSequences.addActionListener(new ActionListener() @@ -1931,8 +1951,8 @@ public class GAlignFrame extends JInternalFrame hideSelSequences_actionPerformed(e); } }); - hideSelColumns.setText(MessageManager - .getString("label.selected_columns")); + JMenuItem hideSelColumns = new JMenuItem( + MessageManager.getString("label.selected_columns")); hideSelColumns.setToolTipText(MessageManager .getString("label.toggle_columns_visibility")); hideSelColumns.addActionListener(new ActionListener() @@ -1943,8 +1963,8 @@ public class GAlignFrame extends JInternalFrame hideSelColumns_actionPerformed(e); } }); - hideAllSelection.setText(MessageManager - .getString("label.selected_region")); + JMenuItem hideAllSelection = new JMenuItem( + MessageManager.getString("label.selected_region")); hideAllSelection.addActionListener(new ActionListener() { @Override @@ -1954,8 +1974,8 @@ public class GAlignFrame extends JInternalFrame } }); // TODO: should be hidden if no selection exists. - hideAllButSelection.setText(MessageManager - .getString("label.all_but_selected_region")); + JMenuItem hideAllButSelection = new JMenuItem( + MessageManager.getString("label.all_but_selected_region")); hideAllButSelection.addActionListener(new ActionListener() { @Override @@ -1964,8 +1984,8 @@ public class GAlignFrame extends JInternalFrame hideAllButSelection_actionPerformed(e); } }); - showAllhidden.setText(MessageManager - .getString("label.all_sequences_columns")); + JMenuItem showAllhidden = new JMenuItem( + MessageManager.getString("label.all_sequences_columns")); showAllhidden.setToolTipText(MessageManager .getString("label.toggles_visibility_hidden_selected_regions")); showAllhidden.addActionListener(new ActionListener() @@ -1986,20 +2006,32 @@ public class GAlignFrame extends JInternalFrame hiddenMarkers_actionPerformed(e); } }); - invertColSel.setText(MessageManager - .getString("action.invert_column_selection")); - invertColSel.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_I, Toolkit.getDefaultToolkit() - .getMenuShortcutKeyMask() - | java.awt.event.KeyEvent.ALT_MASK, false)); - invertColSel.addActionListener(new ActionListener() + + JMenuItem invertColSel = new JMenuItem( + MessageManager.getString("action.invert_column_selection")); + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_I, Toolkit + .getDefaultToolkit().getMenuShortcutKeyMask() + | KeyEvent.ALT_MASK, false); + al = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { invertColSel_actionPerformed(e); } + }; + addMenuActionAndAccelerator(keyStroke, invertColSel, al); + + showComplementMenuItem.setVisible(false); + showComplementMenuItem.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + showComplement_actionPerformed(showComplementMenuItem.getState()); + } }); + tabbedPane.addChangeListener(new javax.swing.event.ChangeListener() { @Override @@ -2015,7 +2047,19 @@ public class GAlignFrame extends JInternalFrame @Override public void mousePressed(MouseEvent e) { - tabbedPane_mousePressed(e); + if (e.isPopupTrigger()) // Mac + { + tabbedPane_mousePressed(e); + } + } + + @Override + public void mouseReleased(MouseEvent e) + { + if (e.isPopupTrigger()) // Windows + { + tabbedPane_mousePressed(e); + } } }); tabbedPane.addFocusListener(new FocusAdapter() @@ -2026,18 +2070,20 @@ public class GAlignFrame extends JInternalFrame tabbedPane_focusGained(e); } }); - save.setText(MessageManager.getString("action.save")); - save.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_S, Toolkit.getDefaultToolkit() - .getMenuShortcutKeyMask(), false)); - save.addActionListener(new ActionListener() + + JMenuItem save = new JMenuItem(MessageManager.getString("action.save")); + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_S, Toolkit + .getDefaultToolkit().getMenuShortcutKeyMask(), false); + al = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { save_actionPerformed(e); } - }); + }; + addMenuActionAndAccelerator(keyStroke, save, al); + reload.setEnabled(false); reload.setText(MessageManager.getString("action.reload")); reload.addActionListener(new ActionListener() @@ -2048,23 +2094,26 @@ public class GAlignFrame extends JInternalFrame reload_actionPerformed(e); } }); - newView.setText(MessageManager.getString("action.new_view")); - newView.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_T, Toolkit.getDefaultToolkit() - .getMenuShortcutKeyMask(), false)); - newView.addActionListener(new ActionListener() + + JMenuItem newView = new JMenuItem( + MessageManager.getString("action.new_view")); + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_T, Toolkit + .getDefaultToolkit().getMenuShortcutKeyMask(), false); + al = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { newView_actionPerformed(e); } - }); + }; + addMenuActionAndAccelerator(keyStroke, newView, al); + tabbedPane.setToolTipText("" + MessageManager.getString("label.rename_tab_eXpand_reGroup") + ""); - textColour.setText(MessageManager.getString("label.colour_text") - + "..."); + JMenuItem textColour = new JMenuItem( + MessageManager.getString("action.set_text_colour")); textColour.addActionListener(new ActionListener() { @Override @@ -2074,7 +2123,7 @@ public class GAlignFrame extends JInternalFrame } }); formatMenu.setText(MessageManager.getString("action.format")); - selectMenu.setText(MessageManager.getString("action.select")); + JMenu selectMenu = new JMenu(MessageManager.getString("action.select")); idRightAlign.setText(MessageManager .getString("label.right_align_sequence_id")); idRightAlign.addActionListener(new ActionListener() @@ -2085,32 +2134,35 @@ public class GAlignFrame extends JInternalFrame idRightAlign_actionPerformed(e); } }); + gatherViews.setEnabled(false); gatherViews.setText(MessageManager.getString("action.gather_views")); - gatherViews.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_G, 0, false)); - gatherViews.addActionListener(new ActionListener() + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_G, 0, false); + al = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { gatherViews_actionPerformed(e); } - }); + }; + addMenuActionAndAccelerator(keyStroke, gatherViews, al); + expandViews.setEnabled(false); expandViews.setText(MessageManager.getString("action.expand_views")); - expandViews.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_X, 0, false)); - expandViews.addActionListener(new ActionListener() + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_X, 0, false); + al = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { expandViews_actionPerformed(e); } - }); - pageSetup - .setText(MessageManager.getString("action.page_setup") + "..."); + }; + addMenuActionAndAccelerator(keyStroke, expandViews, al); + + JMenuItem pageSetup = new JMenuItem( + MessageManager.getString("action.page_setup")); pageSetup.addActionListener(new ActionListener() { @Override @@ -2119,8 +2171,8 @@ public class GAlignFrame extends JInternalFrame pageSetup_actionPerformed(e); } }); - alignmentProperties.setText(MessageManager - .getString("label.alignment_props") + "..."); + JMenuItem alignmentProperties = new JMenuItem( + MessageManager.getString("label.alignment_props")); alignmentProperties.addActionListener(new ActionListener() { @Override @@ -2129,10 +2181,14 @@ public class GAlignFrame extends JInternalFrame alignmentProperties(); } }); - tooltipSettingsMenu.setText(MessageManager - .getString("label.sequence_id_tooltip")); - autoAnnMenu.setText(MessageManager - .getString("label.autocalculated_annotation")); + JMenu tooltipSettingsMenu = new JMenu( + MessageManager.getString("label.sequence_id_tooltip")); + JMenu autoAnnMenu = new JMenu( + MessageManager.getString("label.autocalculated_annotation")); + + JMenu exportImageMenu = new JMenu( + MessageManager.getString("label.export_image")); + JMenu fileMenu = new JMenu(MessageManager.getString("action.file")); alignFrameMenuBar.add(fileMenu); alignFrameMenuBar.add(editMenu); alignFrameMenuBar.add(selectMenu); @@ -2142,6 +2198,7 @@ public class GAlignFrame extends JInternalFrame alignFrameMenuBar.add(colourMenu); alignFrameMenuBar.add(calculateMenu); alignFrameMenuBar.add(webService); + fileMenu.add(fetchSequence); fileMenu.add(addSequenceMenu); fileMenu.add(reload); @@ -2153,13 +2210,16 @@ public class GAlignFrame extends JInternalFrame fileMenu.add(pageSetup); fileMenu.add(printMenuItem); fileMenu.addSeparator(); - fileMenu.add(jMenu2); + fileMenu.add(exportImageMenu); fileMenu.add(exportFeatures); fileMenu.add(exportAnnotations); - fileMenu.add(LoadtreeMenuItem); + fileMenu.add(loadTreeMenuItem); fileMenu.add(associatedData); fileMenu.addSeparator(); fileMenu.add(closeMenuItem); + + pasteMenu.add(pasteNew); + pasteMenu.add(pasteThis); editMenu.add(undoMenuItem); editMenu.add(redoMenuItem); editMenu.add(cut); @@ -2179,31 +2239,26 @@ public class GAlignFrame extends JInternalFrame // editMenu.add(justifyRightMenuItem); // editMenu.addSeparator(); editMenu.add(padGapsMenuitem); + + showMenu.add(showAllColumns); + showMenu.add(showAllSeqs); + showMenu.add(showAllhidden); + hideMenu.add(hideSelColumns); + hideMenu.add(hideSelSequences); + hideMenu.add(hideAllSelection); + hideMenu.add(hideAllButSelection); viewMenu.add(newView); viewMenu.add(expandViews); viewMenu.add(gatherViews); viewMenu.addSeparator(); - viewMenu.add(jMenu3); + viewMenu.add(showMenu); viewMenu.add(hideMenu); + viewMenu.add(showComplementMenuItem); viewMenu.addSeparator(); viewMenu.add(followHighlightMenuItem); - annotationsMenu.add(annotationPanelMenuItem); - annotationsMenu.add(showAllAnnotations); - annotationsMenu.add(hideAllAnnotations); - annotationsMenu.add(sortAnnBySequence); - annotationsMenu.add(sortAnnByType); - autoAnnMenu.add(applyAutoAnnotationSettings); - autoAnnMenu.add(showConsensusHistogram); - autoAnnMenu.add(showSequenceLogo); - autoAnnMenu.add(normaliseSequenceLogo); - autoAnnMenu.addSeparator(); - autoAnnMenu.add(showGroupConservation); - autoAnnMenu.add(showGroupConsensus); - annotationsMenu.add(autoAnnMenu); viewMenu.addSeparator(); viewMenu.add(showSeqFeatures); // viewMenu.add(showSeqFeaturesHeight); - viewMenu.add(openFeatureSettings); tooltipSettingsMenu.add(showDbRefsMenuitem); tooltipSettingsMenu.add(showNpFeatsMenuitem); @@ -2212,6 +2267,29 @@ public class GAlignFrame extends JInternalFrame viewMenu.add(alignmentProperties); viewMenu.addSeparator(); viewMenu.add(overviewMenuItem); + + annotationsMenu.add(annotationPanelMenuItem); + annotationsMenu.addSeparator(); + annotationsMenu.add(showAllAlAnnotations); + annotationsMenu.add(hideAllAlAnnotations); + annotationsMenu.addSeparator(); + annotationsMenu.add(showAllSeqAnnotations); + annotationsMenu.add(hideAllSeqAnnotations); + annotationsMenu.add(sortAnnBySequence); + annotationsMenu.add(sortAnnByLabel); + annotationsMenu.addSeparator(); + autoAnnMenu.add(showAutoFirst); + autoAnnMenu.add(showAutoLast); + autoAnnMenu.addSeparator(); + autoAnnMenu.add(applyAutoAnnotationSettings); + autoAnnMenu.add(showConsensusHistogram); + autoAnnMenu.add(showSequenceLogo); + autoAnnMenu.add(normaliseSequenceLogo); + autoAnnMenu.addSeparator(); + autoAnnMenu.add(showGroupConservation); + autoAnnMenu.add(showGroupConsensus); + annotationsMenu.add(autoAnnMenu); + colourMenu.add(applyToAllGroups); colourMenu.add(textColour); colourMenu.addSeparator(); @@ -2239,6 +2317,12 @@ public class GAlignFrame extends JInternalFrame colourMenu.add(modifyPID); colourMenu.add(annotationColour); colourMenu.add(rnahelicesColour); + + sort.add(sortIDMenuItem); + sort.add(sortLengthMenuItem); + sort.add(sortGroupMenuItem); + sort.add(sortPairwiseMenuItem); + sort.add(sortByTreeMenu); calculateMenu.add(sort); calculateMenu.add(calculateTree); calculateMenu.addSeparator(); @@ -2246,37 +2330,31 @@ public class GAlignFrame extends JInternalFrame calculateMenu.add(PCAMenuItem); calculateMenu.addSeparator(); calculateMenu.add(showTranslation); + calculateMenu.add(showReverse); + calculateMenu.add(showReverseComplement); calculateMenu.add(showProducts); calculateMenu.add(autoCalculate); calculateMenu.add(sortByTree); calculateMenu.addSeparator(); + calculateMenu.add(expandAlignment); calculateMenu.add(extractScores); + calculateMenu.addSeparator(); + calculateMenu.add(runGroovy); + webServiceNoServices = new JMenuItem( MessageManager.getString("label.no_services")); webService.add(webServiceNoServices); - pasteMenu.add(pasteNew); - pasteMenu.add(pasteThis); - sort.add(sortIDMenuItem); - sort.add(sortLengthMenuItem); - sort.add(sortGroupMenuItem); - sort.add(sortPairwiseMenuItem); - sort.add(sortByTreeMenu); - jMenu2.add(htmlMenuItem); - jMenu2.add(epsFile); - jMenu2.add(createPNG); + exportImageMenu.add(htmlMenuItem); + exportImageMenu.add(epsFile); + exportImageMenu.add(createPNG); + exportImageMenu.add(createBioJS); + exportImageMenu.add(createSVG); addSequenceMenu.add(addFromFile); addSequenceMenu.add(addFromText); addSequenceMenu.add(addFromURL); this.getContentPane().add(statusPanel, java.awt.BorderLayout.SOUTH); statusPanel.add(statusBar, null); this.getContentPane().add(tabbedPane, java.awt.BorderLayout.CENTER); - jMenu3.add(showAllColumns); - jMenu3.add(showAllSeqs); - jMenu3.add(showAllhidden); - hideMenu.add(hideSelColumns); - hideMenu.add(hideSelSequences); - hideMenu.add(hideAllSelection); - hideMenu.add(hideAllButSelection); formatMenu.add(font); formatMenu.addSeparator(); @@ -2303,7 +2381,7 @@ public class GAlignFrame extends JInternalFrame selectMenu.add(unGroup); selectMenu.add(grpsFromSelection); selectMenu.add(deleteGroups); - calculateMenu.add(expandAlignment); + selectMenu.add(annotationColumn); // TODO - determine if the listenToViewSelections button is needed : see bug // JAL-574 // selectMenu.addSeparator(); @@ -2311,36 +2389,89 @@ public class GAlignFrame extends JInternalFrame } /** + * Generate the reverse sequence (or reverse complement if the flag is true) + * and add it to the alignment + * + * @param complement + */ + protected void showReverse_actionPerformed(boolean complement) + { + } + + /** + * Try to run script in a Groovy console, having first ensured that this + * alignframe is set as currentAlignFrame in Desktop + */ + protected void runGroovy_actionPerformed() + { + + } + + /** + * Adds the given action listener and key accelerator to the given menu item. + * Also saves in a lookup table to support lookup of action by key stroke. + * + * @param keyStroke + * @param menuItem + * @param actionListener + */ + protected void addMenuActionAndAccelerator(KeyStroke keyStroke, + JMenuItem menuItem, ActionListener actionListener) + { + menuItem.setAccelerator(keyStroke); + accelerators.put(keyStroke, menuItem); + menuItem.addActionListener(actionListener); + } + + /** * Action on clicking sort annotations by type. * * @param sortOrder */ - protected void sortAnnotations_actionPerformed(SortOrder sortOrder) + protected void sortAnnotations_actionPerformed() { } /** * Action on clicking Show all annotations. + * + * @param forSequences + * update sequence-related annotations + * @param forAlignment + * update non-sequence-related annotations */ - protected void showAllAnnotations_actionPerformed() + protected void showAllAnnotations_actionPerformed(boolean forSequences, + boolean forAlignment) { - setAllAnnotationsVisibility(true); + setAnnotationsVisibility(true, forSequences, forAlignment); } /** * Action on clicking Hide all annotations. + * + * @param forSequences + * update sequence-related annotations + * @param forAlignment + * update non-sequence-related annotations */ - protected void hideAllAnnotations_actionPerformed() + protected void hideAllAnnotations_actionPerformed(boolean forSequences, + boolean forAlignment) { - setAllAnnotationsVisibility(false); + setAnnotationsVisibility(false, forSequences, forAlignment); } /** - * Set the visibility of all annotations to true or false. + * Set the visibility of annotations to true or false. Can act on + * sequence-related annotations, or alignment-related, or both. * * @param visible + * @param forSequences + * update sequence-related annotations + * @param forAlignment + * update non-sequence-related annotations */ - protected void setAllAnnotationsVisibility(boolean visible) + protected void setAnnotationsVisibility(boolean visible, + boolean forSequences, boolean forAlignment) { } @@ -2417,13 +2548,6 @@ public class GAlignFrame extends JInternalFrame } - protected void showSeqFeaturesHeight_actionPerformed( - ActionEvent actionEvent) - { - // TODO Auto-generated method stub - - } - protected void justifyRightMenuItem_actionPerformed(ActionEvent e) { // TODO Auto-generated method stub @@ -2458,10 +2582,6 @@ public class GAlignFrame extends JInternalFrame { } - protected void showProducts_actionPerformed(ActionEvent e) - { - } - protected void buildSortByAnnotationScoresMenu() { } @@ -2503,6 +2623,11 @@ public class GAlignFrame extends JInternalFrame { } + protected void bioJSMenuItem_actionPerformed(ActionEvent e) + { + + } + protected void closeMenuItem_actionPerformed(boolean b) { } @@ -2756,7 +2881,12 @@ public class GAlignFrame extends JInternalFrame { } - protected void LoadtreeMenuItem_actionPerformed(ActionEvent e) + public void createSVG(java.io.File f) + { + + } + + protected void loadTreeMenuItem_actionPerformed(ActionEvent e) { } @@ -2854,6 +2984,11 @@ public class GAlignFrame extends JInternalFrame } + public void annotationColumn_actionPerformed(ActionEvent e) + { + + } + public void rnahelicesColour_actionPerformed(ActionEvent e) { @@ -2989,4 +3124,71 @@ public class GAlignFrame extends JInternalFrame // TODO Auto-generated method stub } + + protected boolean isShowAutoCalculatedAbove() + { + return showAutoCalculatedAbove; + } + + protected void setShowAutoCalculatedAbove(boolean showAutoCalculatedAbove) + { + this.showAutoCalculatedAbove = showAutoCalculatedAbove; + } + + protected SequenceAnnotationOrder getAnnotationSortOrder() + { + return annotationSortOrder; + } + + protected void setAnnotationSortOrder( + SequenceAnnotationOrder annotationSortOrder) + { + this.annotationSortOrder = annotationSortOrder; + } + + public Map getAccelerators() + { + return this.accelerators; + } + + /** + * Returns the selected index of the tabbed pane, or -1 if none selected + * (including the case where the tabbed pane has not been made visible). + * + * @return + */ + public int getTabIndex() + { + return tabbedPane.getSelectedIndex(); + } + + public JPanel getStatusPanel() + { + return statusPanel; + } + + /** + * Sets a reference to the containing split frame. Also makes the 'toggle + * split view' menu item visible and checked. + * + * @param sf + */ + public void setSplitFrame(SplitContainerI sf) + { + this.splitFrame = sf; + if (sf != null) + { + this.showComplementMenuItem.setVisible(true); + this.showComplementMenuItem.setState(true); + } + } + + public SplitContainerI getSplitViewContainer() + { + return this.splitFrame; + } + + protected void showComplement_actionPerformed(boolean complement) + { + } }