X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fjbgui%2FGAlignFrame.java;h=b38fab4d1fba9bbc140939b2a1383025292dd97f;hb=b0cee3aaf7d8873910939f97b6acb217d518968d;hp=7ea492f9ee4ffb07ab5f64d0f38d2c90a3c92759;hpb=a9f33c53af5893a2437b2cf7a417b96862101102;p=jalview.git diff --git a/src/jalview/jbgui/GAlignFrame.java b/src/jalview/jbgui/GAlignFrame.java index 7ea492f..b38fab4 100755 --- a/src/jalview/jbgui/GAlignFrame.java +++ b/src/jalview/jbgui/GAlignFrame.java @@ -1,196 +1,171 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7) - * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors * * This file is part of Jalview. * * Jalview is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * * Jalview is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License along with Jalview. If not, see . + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. */ package jalview.jbgui; -import java.awt.*; -import java.awt.event.*; - -import javax.swing.*; -import javax.swing.event.*; - -import jalview.schemes.*; +import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder; +import jalview.api.SplitContainerI; +import jalview.bin.Cache; +import jalview.gui.Desktop; +import jalview.gui.JvOptionPane; +import jalview.gui.JvSwingUtils; +import jalview.gui.Preferences; +import jalview.gui.UserDefinedColours; +import jalview.io.FileFormat; +import jalview.schemes.JalviewColourScheme; +import jalview.schemes.ResidueColourScheme; +import jalview.schemes.UserColourScheme; +import jalview.util.MessageManager; +import jalview.util.Platform; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.GridLayout; +import java.awt.Toolkit; +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; +import javax.swing.JCheckBoxMenuItem; +import javax.swing.JInternalFrame; +import javax.swing.JLabel; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +import javax.swing.JPanel; +import javax.swing.JRadioButtonMenuItem; +import javax.swing.JTabbedPane; +import javax.swing.KeyStroke; +import javax.swing.event.ChangeEvent; +import javax.swing.event.MenuEvent; +import javax.swing.event.MenuListener; public class GAlignFrame extends JInternalFrame { - protected JMenuBar alignFrameMenuBar = new JMenuBar(); + protected static final String USER_DEFINED_COLOUR_SCHEME = "USER_DEFINED"; - protected JMenu fileMenu = new JMenu(); + protected JMenuBar alignFrameMenuBar = new JMenuBar(); protected JMenuItem closeMenuItem = new JMenuItem(); - protected JMenu editMenu = new JMenu(); - - protected JMenu viewMenu = 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 JCheckBoxMenuItem viewBoxesMenuItem = new JCheckBoxMenuItem(); - protected JMenuItem sortPairwiseMenuItem = new JMenuItem(); - - protected JMenuItem sortIDMenuItem = new JMenuItem(); - - protected JMenuItem sortLengthMenuItem = new JMenuItem(); - - protected JMenuItem sortGroupMenuItem = new JMenuItem(); + protected JCheckBoxMenuItem viewTextMenuItem = new JCheckBoxMenuItem(); 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(); + protected JRadioButtonMenuItem textColour; - protected JRadioButtonMenuItem zappoColour = new JRadioButtonMenuItem(); + protected JRadioButtonMenuItem clustalColour; - protected JRadioButtonMenuItem taylorColour = new JRadioButtonMenuItem(); + protected JRadioButtonMenuItem zappoColour; - protected JRadioButtonMenuItem hydrophobicityColour = new JRadioButtonMenuItem(); + protected JRadioButtonMenuItem taylorColour; - protected JRadioButtonMenuItem helixColour = new JRadioButtonMenuItem(); + protected JRadioButtonMenuItem hydrophobicityColour; - protected JRadioButtonMenuItem strandColour = new JRadioButtonMenuItem(); + protected JRadioButtonMenuItem helixColour; - protected JRadioButtonMenuItem turnColour = new JRadioButtonMenuItem(); + protected JRadioButtonMenuItem strandColour; - protected JRadioButtonMenuItem buriedColour = new JRadioButtonMenuItem(); + protected JRadioButtonMenuItem turnColour; - protected JRadioButtonMenuItem userDefinedColour = new JRadioButtonMenuItem(); + protected JRadioButtonMenuItem buriedColour; - protected JRadioButtonMenuItem PIDColour = new JRadioButtonMenuItem(); + protected JRadioButtonMenuItem userDefinedColour; - protected JRadioButtonMenuItem BLOSUM62Colour = new JRadioButtonMenuItem(); + protected JRadioButtonMenuItem PIDColour; - protected JRadioButtonMenuItem nucleotideColour = new JRadioButtonMenuItem(); + protected JRadioButtonMenuItem BLOSUM62Colour; - protected JRadioButtonMenuItem purinePyrimidineColour = new JRadioButtonMenuItem(); + protected JRadioButtonMenuItem nucleotideColour; - // protected JRadioButtonMenuItem covariationColour = new - // JRadioButtonMenuItem(); + protected JRadioButtonMenuItem purinePyrimidineColour; - JMenuItem njTreeBlosumMenuItem = new JMenuItem(); + protected JRadioButtonMenuItem RNAInteractionColour; - JMenuItem avDistanceTreeBlosumMenuItem = new JMenuItem(); + // protected JRadioButtonMenuItem covariationColour; - public JCheckBoxMenuItem annotationPanelMenuItem = new JCheckBoxMenuItem(); + protected JRadioButtonMenuItem tcoffeeColour; - public JCheckBoxMenuItem colourTextMenuItem = new JCheckBoxMenuItem(); + protected JCheckBoxMenuItem annotationPanelMenuItem = new JCheckBoxMenuItem(); - public JCheckBoxMenuItem showNonconservedMenuItem = new JCheckBoxMenuItem(); + protected JCheckBoxMenuItem colourTextMenuItem = new JCheckBoxMenuItem(); - JMenuItem htmlMenuItem = new JMenuItem(); - - JMenuItem overviewMenuItem = new JMenuItem(); + protected JCheckBoxMenuItem showNonconservedMenuItem = new JCheckBoxMenuItem(); protected JMenuItem undoMenuItem = new JMenuItem(); protected JMenuItem redoMenuItem = new JMenuItem(); - public JCheckBoxMenuItem conservationMenuItem = new JCheckBoxMenuItem(); - - JRadioButtonMenuItem noColourmenuItem = new JRadioButtonMenuItem(); + protected JCheckBoxMenuItem conservationMenuItem; - public JCheckBoxMenuItem wrapMenuItem = new JCheckBoxMenuItem(); + JRadioButtonMenuItem noColourmenuItem; - JMenuItem printMenuItem = new JMenuItem(); + protected JCheckBoxMenuItem wrapMenuItem = new JCheckBoxMenuItem(); - public JCheckBoxMenuItem renderGapsMenuItem = new JCheckBoxMenuItem(); + protected JCheckBoxMenuItem renderGapsMenuItem = new JCheckBoxMenuItem(); - JMenuItem findMenuItem = new JMenuItem(); - - public JCheckBoxMenuItem abovePIDThreshold = new JCheckBoxMenuItem(); + protected JCheckBoxMenuItem abovePIDThreshold; public JCheckBoxMenuItem showSeqFeatures = new JCheckBoxMenuItem(); - public JCheckBoxMenuItem showSeqFeaturesHeight = new JCheckBoxMenuItem(); - - JMenuItem deleteGroups = new JMenuItem(); - - JMenuItem delete = new JMenuItem(); - JMenuItem copy = new JMenuItem(); JMenuItem cut = new JMenuItem(); JMenu pasteMenu = new JMenu(); - JMenuItem pasteNew = new JMenuItem(); + protected JCheckBoxMenuItem applyToAllGroups; - JMenuItem pasteThis = new JMenuItem(); + protected JCheckBoxMenuItem seqLimits = new JCheckBoxMenuItem(); - public JCheckBoxMenuItem applyToAllGroups = new JCheckBoxMenuItem(); + protected JCheckBoxMenuItem scaleAbove = new JCheckBoxMenuItem(); - JMenuItem createPNG = new JMenuItem(); + protected JCheckBoxMenuItem scaleLeft = new JCheckBoxMenuItem(); - protected JMenuItem font = new JMenuItem(); + protected JCheckBoxMenuItem scaleRight = new JCheckBoxMenuItem(); - public JCheckBoxMenuItem seqLimits = new JCheckBoxMenuItem(); + protected JMenuItem modifyPID; - JMenuItem epsFile = new JMenuItem(); + protected JMenuItem modifyConservation; - 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 JMenuItem annotationColour; protected JMenu sortByTreeMenu = new JMenu(); @@ -198,8 +173,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(); @@ -208,23 +181,17 @@ 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 JMenu showProducts = new JMenu(); - - public JMenuItem openFeatureSettings = new JMenuItem(); + protected JMenuItem showReverse = new JMenuItem(); - JMenuItem fetchSequence = new JMenuItem(); + protected JMenuItem showReverseComplement = new JMenuItem(); - JMenuItem annotationColour = new JMenuItem(); + protected JMenu showProducts = new JMenu(); - protected JMenuItem rnahelicesColour = new JMenuItem(); + protected JMenuItem runGroovy = new JMenuItem(); - JMenuItem associatedData = new JMenuItem(); + protected JMenuItem rnahelicesColour; protected JCheckBoxMenuItem autoCalculate = new JCheckBoxMenuItem(); @@ -232,57 +199,25 @@ public class GAlignFrame extends JInternalFrame 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(); + protected JMenuItem showAllSeqAnnotations = new JMenuItem(); - JMenu hideMenu = new JMenu(); + protected JMenuItem hideAllSeqAnnotations = new JMenuItem(); - JMenuItem hideSelSequences = new JMenuItem(); + protected JMenuItem showAllAlAnnotations = new JMenuItem(); - JMenuItem hideSelColumns = new JMenuItem(); + protected JMenuItem hideAllAlAnnotations = new JMenuItem(); - JMenuItem hideAllButSelection = new JMenuItem(); - - JMenuItem hideAllSelection = new JMenuItem(); - - JMenuItem showAllhidden = new JMenuItem(); + 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(); @@ -294,18 +229,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(); @@ -318,7 +241,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() { @@ -328,13 +257,13 @@ public class GAlignFrame extends JInternalFrame setJMenuBar(alignFrameMenuBar); // dynamically fill save as menu with available formats - for (int i = 0; i < jalview.io.FormatAdapter.WRITEABLE_FORMATS.length; i++) + for (String ff : FileFormat.getWritableFormats(true)) { - JMenuItem item = new JMenuItem( - jalview.io.FormatAdapter.WRITEABLE_FORMATS[i]); + JMenuItem item = new JMenuItem(ff); - item.addActionListener(new java.awt.event.ActionListener() + item.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { outputText_actionPerformed(e); @@ -345,9 +274,10 @@ public class GAlignFrame extends JInternalFrame } } catch (Exception e) { + System.err.println(e.toString()); } - if (!new jalview.util.Platform().isAMac()) + if (!Platform.isAMac()) { closeMenuItem.setMnemonic('C'); outputTextboxMenu.setMnemonic('T'); @@ -358,691 +288,639 @@ public class GAlignFrame extends JInternalFrame pasteMenu.setMnemonic('P'); reload.setMnemonic('R'); } - - if (jalview.gui.UserDefinedColours.getUserColourSchemes() != null) - { - java.util.Enumeration userColours = jalview.gui.UserDefinedColours - .getUserColourSchemes().keys(); - - while (userColours.hasMoreElements()) - { - final JRadioButtonMenuItem radioItem = new JRadioButtonMenuItem( - userColours.nextElement().toString()); - radioItem.setName("USER_DEFINED"); - radioItem.addMouseListener(new MouseAdapter() - { - public void mousePressed(MouseEvent evt) - { - if (evt.isControlDown() - || SwingUtilities.isRightMouseButton(evt)) - { - radioItem.removeActionListener(radioItem.getActionListeners()[0]); - - int option = JOptionPane.showInternalConfirmDialog( - jalview.gui.Desktop.desktop, - "Remove from default list?", - "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() - { - public void actionPerformed(ActionEvent evt) - { - userDefinedColour_actionPerformed(evt); - } - }); - } - } - } - }); - radioItem.addActionListener(new ActionListener() - { - public void actionPerformed(ActionEvent evt) - { - userDefinedColour_actionPerformed(evt); - } - }); - colourMenu.insert(radioItem, 15); - colours.add(radioItem); - } - } - colours.add(noColourmenuItem); - colours.add(clustalColour); - colours.add(zappoColour); - colours.add(taylorColour); - colours.add(hydrophobicityColour); - colours.add(helixColour); - colours.add(strandColour); - colours.add(turnColour); - colours.add(buriedColour); - colours.add(userDefinedColour); - colours.add(PIDColour); - colours.add(BLOSUM62Colour); - colours.add(nucleotideColour); - colours.add(purinePyrimidineColour); - // colours.add(covariationColour); - - setColourSelected(jalview.bin.Cache - .getDefault("DEFAULT_COLOUR", "None")); - } public void setColourSelected(String defaultColour) { - - if (defaultColour != null) + JalviewColourScheme scheme = JalviewColourScheme.forName(defaultColour); + if (scheme == null) + { + noColourmenuItem.setSelected(true); + return; + } + switch (scheme) { - int index = ColourSchemeProperty - .getColourIndexFromName(defaultColour); - switch (index) - { - case ColourSchemeProperty.CLUSTAL: + case Clustal: clustalColour.setSelected(true); - break; - - case ColourSchemeProperty.BLOSUM: + case Blosum62: BLOSUM62Colour.setSelected(true); - break; - - case ColourSchemeProperty.PID: + case PID: PIDColour.setSelected(true); - break; - - case ColourSchemeProperty.ZAPPO: + case Zappo: zappoColour.setSelected(true); - break; - - case ColourSchemeProperty.TAYLOR: + case Taylor: taylorColour.setSelected(true); break; - - case ColourSchemeProperty.HYDROPHOBIC: + case Hydrophobic: hydrophobicityColour.setSelected(true); - break; - - case ColourSchemeProperty.HELIX: + case Helix: helixColour.setSelected(true); - break; - - case ColourSchemeProperty.STRAND: + case Strand: strandColour.setSelected(true); - break; - - case ColourSchemeProperty.TURN: + case Turn: turnColour.setSelected(true); - break; - - case ColourSchemeProperty.BURIED: + case Buried: buriedColour.setSelected(true); - break; - - case ColourSchemeProperty.NUCLEOTIDE: + case Nucleotide: nucleotideColour.setSelected(true); - break; - - case ColourSchemeProperty.PURINEPYRIMIDINE: + case TCoffee: + tcoffeeColour.setSelected(true); + break; + case PurinePyrimidine: purinePyrimidineColour.setSelected(true); - break; - /* - * case ColourSchemeProperty.COVARIATION: - * covariationColour.setSelected(true); - * - * break; - */ - case ColourSchemeProperty.USER_DEFINED: + // case RNAInteraction: + // RNAInteractionColour.setSelected(true); + // break; + case RNAHelices: + rnahelicesColour.setSelected(true); + break; + case UserDefined: userDefinedColour.setSelected(true); - break; - case ColourSchemeProperty.NONE: default: noColourmenuItem.setSelected(true); break; - } - } - } private void jbInit() throws Exception { - fileMenu.setText("File"); - saveAs.setText("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() + initColourMenu(); + buildColourMenu(); + + JMenuItem saveAs = new JMenuItem( + MessageManager.getString("action.save_as")); + ActionListener al = new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { saveAs_actionPerformed(e); } - }); - closeMenuItem.setText("Close"); - closeMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_W, Toolkit.getDefaultToolkit() - .getMenuShortcutKeyMask(), false)); - closeMenuItem.addActionListener(new java.awt.event.ActionListener() + }; + + // FIXME getDefaultToolkit throws an exception in Headless mode + KeyStroke keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_S, Toolkit + .getDefaultToolkit().getMenuShortcutKeyMask() + | KeyEvent.SHIFT_MASK, false); + addMenuActionAndAccelerator(keyStroke, saveAs, al); + + closeMenuItem.setText(MessageManager.getString("action.close")); + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_W, Toolkit + .getDefaultToolkit().getMenuShortcutKeyMask(), false); + al = new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { closeMenuItem_actionPerformed(false); } - }); - editMenu.setText("Edit"); - viewMenu.setText("View"); - colourMenu.setText("Colour"); - calculateMenu.setText("Calculate"); - webService.setText("Web Service"); - selectAllSequenceMenuItem.setText("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() - { - public void actionPerformed(ActionEvent e) - { - selectAllSequenceMenuItem_actionPerformed(e); - } - }); - deselectAllSequenceMenuItem.setText("Deselect All"); - deselectAllSequenceMenuItem.setAccelerator(javax.swing.KeyStroke - .getKeyStroke(java.awt.event.KeyEvent.VK_ESCAPE, 0, false)); - deselectAllSequenceMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - deselectAllSequenceMenuItem_actionPerformed(e); - } - }); - invertSequenceMenuItem.setText("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() - { - public void actionPerformed(ActionEvent e) - { - invertSequenceMenuItem_actionPerformed(e); - } - }); - grpsFromSelection.setText("Make Groups for selection"); - grpsFromSelection.addActionListener(new java.awt.event.ActionListener() + }; + 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")); + JMenu calculateMenu = new JMenu( + MessageManager.getString("action.calculate")); + webService.setText(MessageManager.getString("action.web_service")); + 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) { - makeGrpsFromSelection_actionPerformed(e); + selectAllSequenceMenuItem_actionPerformed(e); } - }); + }; + addMenuActionAndAccelerator(keyStroke, selectAllSequenceMenuItem, al); - remove2LeftMenuItem.setText("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() - { - public void actionPerformed(ActionEvent e) - { - remove2LeftMenuItem_actionPerformed(e); - } - }); - remove2RightMenuItem.setText("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() - { - public void actionPerformed(ActionEvent e) - { - remove2RightMenuItem_actionPerformed(e); - } - }); - removeGappedColumnMenuItem.setText("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() - { - public void actionPerformed(ActionEvent e) - { - removeGappedColumnMenuItem_actionPerformed(e); - } - }); - removeAllGapsMenuItem.setText("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() - { - public void actionPerformed(ActionEvent e) - { - removeAllGapsMenuItem_actionPerformed(e); - } - }); - justifyLeftMenuItem.setText("Left Justify Alignment"); - justifyLeftMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - justifyLeftMenuItem_actionPerformed(e); - } - }); - justifyRightMenuItem.setText("Right Justify Alignment"); - justifyRightMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - justifyRightMenuItem_actionPerformed(e); - } - }); - viewBoxesMenuItem.setText("Boxes"); - viewBoxesMenuItem.setState(true); - viewBoxesMenuItem.addActionListener(new java.awt.event.ActionListener() + 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) { - viewBoxesMenuItem_actionPerformed(e); + deselectAllSequenceMenuItem_actionPerformed(e); } - }); - viewTextMenuItem.setText("Text"); - viewTextMenuItem.setState(true); - viewTextMenuItem.addActionListener(new java.awt.event.ActionListener() + }; + 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) { - viewTextMenuItem_actionPerformed(e); + invertSequenceMenuItem_actionPerformed(e); } - }); - showNonconservedMenuItem.setText("Show nonconserved"); - showNonconservedMenuItem.setState(false); - showNonconservedMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - showUnconservedMenuItem_actionPerformed(e); - } - }); - sortPairwiseMenuItem.setText("by Pairwise Identity"); - sortPairwiseMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - sortPairwiseMenuItem_actionPerformed(e); - } - }); - sortIDMenuItem.setText("by ID"); - sortIDMenuItem.addActionListener(new java.awt.event.ActionListener() + }; + addMenuActionAndAccelerator(keyStroke, invertSequenceMenuItem, al); + + JMenuItem grpsFromSelection = new JMenuItem( + MessageManager.getString("action.make_groups_selection")); + grpsFromSelection.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - sortIDMenuItem_actionPerformed(e); + makeGrpsFromSelection_actionPerformed(e); } }); - sortLengthMenuItem.setText("By Length"); - sortLengthMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - sortLengthMenuItem_actionPerformed(e); - } - }); - sortGroupMenuItem.setText("by Group"); - sortGroupMenuItem.addActionListener(new java.awt.event.ActionListener() + JMenuItem expandAlignment = new JMenuItem( + MessageManager.getString("action.view_flanking_regions")); + expandAlignment.setToolTipText(MessageManager + .getString("label.view_flanking_regions")); + expandAlignment.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - sortGroupMenuItem_actionPerformed(e); + expand_newalign(e); } }); - removeRedundancyMenuItem.setText("Remove Redundancy..."); - removeRedundancyMenuItem.setAccelerator(javax.swing.KeyStroke - .getKeyStroke(java.awt.event.KeyEvent.VK_D, Toolkit - .getDefaultToolkit().getMenuShortcutKeyMask(), false)); - removeRedundancyMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - removeRedundancyMenuItem_actionPerformed(e); - } - }); - pairwiseAlignmentMenuItem.setText("Pairwise Alignments..."); - pairwiseAlignmentMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - pairwiseAlignmentMenuItem_actionPerformed(e); - } - }); - PCAMenuItem.setText("Principal Component Analysis"); - PCAMenuItem.addActionListener(new java.awt.event.ActionListener() + 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) { - PCAMenuItem_actionPerformed(e); + remove2LeftMenuItem_actionPerformed(e); } - }); - averageDistanceTreeMenuItem - .setText("Average Distance Using % Identity"); - averageDistanceTreeMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - averageDistanceTreeMenuItem_actionPerformed(e); - } - }); - neighbourTreeMenuItem.setText("Neighbour Joining Using % Identity"); - neighbourTreeMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - neighbourTreeMenuItem_actionPerformed(e); - } - }); - this.getContentPane().setLayout(borderLayout1); - alignFrameMenuBar.setFont(new java.awt.Font("Verdana", 0, 11)); - statusBar.setBackground(Color.white); - statusBar.setFont(new java.awt.Font("Verdana", 0, 11)); - statusBar.setBorder(BorderFactory.createLineBorder(Color.black)); - statusBar.setText("Status bar"); - outputTextboxMenu.setText("Output to Textbox"); - clustalColour.setText("Clustalx"); + }; + addMenuActionAndAccelerator(keyStroke, remove2LeftMenuItem, al); - clustalColour.addActionListener(new java.awt.event.ActionListener() + 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) { - clustalColour_actionPerformed(e); + remove2RightMenuItem_actionPerformed(e); } - }); - zappoColour.setText("Zappo"); - zappoColour.addActionListener(new java.awt.event.ActionListener() + }; + 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) { - zappoColour_actionPerformed(e); + removeGappedColumnMenuItem_actionPerformed(e); } - }); - taylorColour.setText("Taylor"); - taylorColour.addActionListener(new java.awt.event.ActionListener() + }; + 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) { - taylorColour_actionPerformed(e); + justifyLeftMenuItem_actionPerformed(e); } }); - hydrophobicityColour.setText("Hydrophobicity"); - hydrophobicityColour - .addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - hydrophobicityColour_actionPerformed(e); - } - }); - helixColour.setText("Helix Propensity"); - helixColour.addActionListener(new java.awt.event.ActionListener() + JMenuItem justifyRightMenuItem = new JMenuItem( + MessageManager.getString("action.right_justify_alignment")); + justifyRightMenuItem.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - helixColour_actionPerformed(e); + justifyRightMenuItem_actionPerformed(e); } }); - strandColour.setText("Strand Propensity"); - strandColour.addActionListener(new java.awt.event.ActionListener() + viewBoxesMenuItem.setText(MessageManager.getString("action.boxes")); + viewBoxesMenuItem.setState(true); + viewBoxesMenuItem.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - strandColour_actionPerformed(e); + viewBoxesMenuItem_actionPerformed(e); } }); - turnColour.setText("Turn Propensity"); - turnColour.addActionListener(new java.awt.event.ActionListener() + viewTextMenuItem.setText(MessageManager.getString("action.text")); + viewTextMenuItem.setState(true); + viewTextMenuItem.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - turnColour_actionPerformed(e); + viewTextMenuItem_actionPerformed(e); } }); - buriedColour.setText("Buried Index"); - buriedColour.addActionListener(new java.awt.event.ActionListener() + showNonconservedMenuItem.setText(MessageManager + .getString("label.show_non_conserved")); + showNonconservedMenuItem.setState(false); + showNonconservedMenuItem.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - buriedColour_actionPerformed(e); + showUnconservedMenuItem_actionPerformed(e); } }); - userDefinedColour.setText("User Defined..."); - userDefinedColour.addActionListener(new java.awt.event.ActionListener() + JMenuItem sortPairwiseMenuItem = new JMenuItem( + MessageManager.getString("action.by_pairwise_id")); + sortPairwiseMenuItem.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - userDefinedColour_actionPerformed(e); + sortPairwiseMenuItem_actionPerformed(e); } }); - PIDColour.setText("Percentage Identity"); - PIDColour.addActionListener(new java.awt.event.ActionListener() + JMenuItem sortIDMenuItem = new JMenuItem( + MessageManager.getString("action.by_id")); + sortIDMenuItem.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - PIDColour_actionPerformed(e); + sortIDMenuItem_actionPerformed(e); } }); - BLOSUM62Colour.setText("BLOSUM62 Score"); - BLOSUM62Colour.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) { - BLOSUM62Colour_actionPerformed(e); + sortLengthMenuItem_actionPerformed(e); } }); - nucleotideColour.setText("Nucleotide"); - nucleotideColour.addActionListener(new java.awt.event.ActionListener() + JMenuItem sortGroupMenuItem = new JMenuItem( + MessageManager.getString("action.by_group")); + sortGroupMenuItem.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - nucleotideColour_actionPerformed(e); + sortGroupMenuItem_actionPerformed(e); } }); - purinePyrimidineColour.setText("Purine/Pyrimidine"); - purinePyrimidineColour - .addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - purinePyrimidineColour_actionPerformed(e); - } - }); - /* - * covariationColour.setText("Covariation"); - * covariationColour.addActionListener(new java.awt.event.ActionListener() { - * public void actionPerformed(ActionEvent e) { - * covariationColour_actionPerformed(e); } }); - */ + 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); - avDistanceTreeBlosumMenuItem.setText("Average Distance Using BLOSUM62"); - avDistanceTreeBlosumMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - avTreeBlosumMenuItem_actionPerformed(e); - } - }); - njTreeBlosumMenuItem.setText("Neighbour Joining using BLOSUM62"); - njTreeBlosumMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - njTreeBlosumMenuItem_actionPerformed(e); - } - }); - annotationPanelMenuItem.setActionCommand(""); - annotationPanelMenuItem.setText("Show Annotations"); - annotationPanelMenuItem.setState(jalview.bin.Cache.getDefault( - "SHOW_ANNOTATIONS", true)); - annotationPanelMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - annotationPanelMenuItem_actionPerformed(e); - } - }); - colourTextMenuItem.setText("Colour Text"); - colourTextMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - colourTextMenuItem_actionPerformed(e); - } - }); - htmlMenuItem.setText("HTML"); - htmlMenuItem.addActionListener(new java.awt.event.ActionListener() + JMenuItem pairwiseAlignmentMenuItem = new JMenuItem( + MessageManager.getString("action.pairwise_alignment")); + pairwiseAlignmentMenuItem.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - htmlMenuItem_actionPerformed(e); + pairwiseAlignmentMenuItem_actionPerformed(e); } }); - overviewMenuItem.setText("Overview Window"); - overviewMenuItem.addActionListener(new java.awt.event.ActionListener() + JMenuItem PCAMenuItem = new JMenuItem( + MessageManager.getString("label.principal_component_analysis")); + PCAMenuItem.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - overviewMenuItem_actionPerformed(e); + PCAMenuItem_actionPerformed(e); } }); - undoMenuItem.setEnabled(false); - undoMenuItem.setText("Undo"); - undoMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_Z, Toolkit.getDefaultToolkit() - .getMenuShortcutKeyMask(), false)); - undoMenuItem.addActionListener(new java.awt.event.ActionListener() + JMenuItem averageDistanceTreeMenuItem = new JMenuItem( + MessageManager.getString("label.average_distance_identity")); + averageDistanceTreeMenuItem.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - undoMenuItem_actionPerformed(e); + averageDistanceTreeMenuItem_actionPerformed(e); } }); - redoMenuItem.setEnabled(false); - redoMenuItem.setText("Redo"); - redoMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_Y, Toolkit.getDefaultToolkit() - .getMenuShortcutKeyMask(), false)); - redoMenuItem.addActionListener(new java.awt.event.ActionListener() + JMenuItem neighbourTreeMenuItem = new JMenuItem( + MessageManager.getString("label.neighbour_joining_identity")); + neighbourTreeMenuItem.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - redoMenuItem_actionPerformed(e); + neighbourTreeMenuItem_actionPerformed(e); } }); - conservationMenuItem.setText("By Conservation"); - conservationMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - conservationMenuItem_actionPerformed(e); - } - }); - noColourmenuItem.setText("None"); - noColourmenuItem.addActionListener(new java.awt.event.ActionListener() + + 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)); + statusBar.setBorder(BorderFactory.createLineBorder(Color.black)); + statusBar.setText(MessageManager.getString("label.status_bar")); + outputTextboxMenu.setText(MessageManager + .getString("label.out_to_textbox")); + + + JMenuItem avDistanceTreeBlosumMenuItem = new JMenuItem( + MessageManager.getString("label.average_distance_bloslum62")); + avDistanceTreeBlosumMenuItem.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - noColourmenuItem_actionPerformed(e); + avTreeBlosumMenuItem_actionPerformed(e); } }); - wrapMenuItem.setText("Wrap"); - wrapMenuItem.addActionListener(new java.awt.event.ActionListener() + JMenuItem njTreeBlosumMenuItem = new JMenuItem( + MessageManager.getString("label.neighbour_blosum62")); + njTreeBlosumMenuItem.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - wrapMenuItem_actionPerformed(e); + njTreeBlosumMenuItem_actionPerformed(e); } }); - printMenuItem.setText("Print ..."); - printMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_P, Toolkit.getDefaultToolkit() - .getMenuShortcutKeyMask(), false)); - printMenuItem.addActionListener(new java.awt.event.ActionListener() + annotationPanelMenuItem.setActionCommand(""); + annotationPanelMenuItem.setText(MessageManager + .getString("label.show_annotations")); + annotationPanelMenuItem.setState(Cache.getDefault("SHOW_ANNOTATIONS", + true)); + annotationPanelMenuItem.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - printMenuItem_actionPerformed(e); + annotationPanelMenuItem_actionPerformed(e); } }); - renderGapsMenuItem.setText("Show Gaps"); - renderGapsMenuItem.setState(true); - renderGapsMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - renderGapsMenuItem_actionPerformed(e); - } - }); - findMenuItem.setText("Find..."); - findMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_F, Toolkit.getDefaultToolkit() - .getMenuShortcutKeyMask(), false)); - findMenuItem.addActionListener(new java.awt.event.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) { - findMenuItem_actionPerformed(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(true, false); + } + }); + hideAllSeqAnnotations.setText(MessageManager + .getString("label.hide_all_seq_annotations")); + hideAllSeqAnnotations.setEnabled(isAnnotationPanelShown); + hideAllSeqAnnotations.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + hideAllAnnotations_actionPerformed(true, false); + } + }); + 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) + { + boolean newState = sortAnnBySequence.getState(); + sortAnnByLabel.setSelected(false); + setAnnotationSortOrder(newState ? SequenceAnnotationOrder.SEQUENCE_AND_LABEL + : SequenceAnnotationOrder.NONE); + sortAnnotations_actionPerformed(); + } + }); + sortAnnByLabel + .setSelected(sortAnnotationsBy == SequenceAnnotationOrder.LABEL_AND_SEQUENCE); + sortAnnByLabel.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + boolean newState = sortAnnByLabel.getState(); + sortAnnBySequence.setSelected(false); + setAnnotationSortOrder(newState ? SequenceAnnotationOrder.LABEL_AND_SEQUENCE + : SequenceAnnotationOrder.NONE); + sortAnnotations_actionPerformed(); + } + }); + colourTextMenuItem = new JCheckBoxMenuItem( + MessageManager + .getString("label.colour_text")); + colourTextMenuItem.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + colourTextMenuItem_actionPerformed(e); } }); - abovePIDThreshold.setText("Above Identity Threshold"); - abovePIDThreshold.addActionListener(new java.awt.event.ActionListener() + + JMenuItem htmlMenuItem = new JMenuItem( + MessageManager.getString("label.html")); + htmlMenuItem.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - abovePIDThreshold_actionPerformed(e); + htmlMenuItem_actionPerformed(e); } }); - showSeqFeatures.setText("Show Sequence Features"); + + 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) + { + overviewMenuItem_actionPerformed(e); + } + }); + + undoMenuItem.setEnabled(false); + undoMenuItem.setText(MessageManager.getString("action.undo")); + 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")); + 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); + + wrapMenuItem.setText(MessageManager.getString("label.wrap")); + wrapMenuItem.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + wrapMenuItem_actionPerformed(e); + } + }); + + 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) + { + renderGapsMenuItem_actionPerformed(e); + } + }); + + 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"))); + al = new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + findMenuItem_actionPerformed(e); + } + }; + addMenuActionAndAccelerator(keyStroke, findMenuItem, al); + + showSeqFeatures.setText(MessageManager + .getString("label.show_sequence_features")); showSeqFeatures.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent actionEvent) { showSeqFeatures_actionPerformed(actionEvent); @@ -1054,30 +932,36 @@ public class GAlignFrame extends JInternalFrame * void actionPerformed(ActionEvent actionEvent) { * showSeqFeaturesHeight_actionPerformed(actionEvent); } }); */ - showDbRefsMenuitem.setText("Show Database Refs"); + showDbRefsMenuitem.setText(MessageManager + .getString("label.show_database_refs")); showDbRefsMenuitem.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { showDbRefs_actionPerformed(e); } }); - showNpFeatsMenuitem.setText("Show Non-Positional Features"); + showNpFeatsMenuitem.setText(MessageManager + .getString("label.show_non_positional_features")); showNpFeatsMenuitem.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { showNpFeats_actionPerformed(e); } }); - showGroupConservation.setText("Group Conservation"); + showGroupConservation.setText(MessageManager + .getString("label.group_conservation")); showGroupConservation.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { showGroupConservation_actionPerformed(e); @@ -1085,191 +969,290 @@ public class GAlignFrame extends JInternalFrame }); - showGroupConsensus.setText("Group Consensus"); + showGroupConsensus.setText(MessageManager + .getString("label.group_consensus")); showGroupConsensus.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { showGroupConsensus_actionPerformed(e); } }); - showConsensusHistogram.setText("Show Consensus Histogram"); + showConsensusHistogram.setText(MessageManager + .getString("label.show_consensus_histogram")); showConsensusHistogram.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { showConsensusHistogram_actionPerformed(e); } }); - showSequenceLogo.setText("Show Consensus Logo"); + showSequenceLogo.setText(MessageManager + .getString("label.show_consensus_logo")); showSequenceLogo.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { showSequenceLogo_actionPerformed(e); } }); - normaliseSequenceLogo.setText("Normalise Consensus Logo"); + normaliseSequenceLogo.setText(MessageManager + .getString("label.norm_consensus_logo")); normaliseSequenceLogo.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { normaliseSequenceLogo_actionPerformed(e); } }); - applyAutoAnnotationSettings.setText("Apply to all groups"); + applyAutoAnnotationSettings.setText(MessageManager + .getString("label.apply_all_groups")); applyAutoAnnotationSettings.setState(false); applyAutoAnnotationSettings.setVisible(true); applyAutoAnnotationSettings.addActionListener(new ActionListener() { - + @Override public void actionPerformed(ActionEvent e) { applyAutoAnnotationSettings_actionPerformed(e); } - }); - nucleotideColour.setText("Nucleotide"); - nucleotideColour.addActionListener(new java.awt.event.ActionListener() + 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) { - nucleotideColour_actionPerformed(e); + setShowAutoCalculatedAbove(showAutoFirst.isSelected()); + sortAnnotations_actionPerformed(); } }); - deleteGroups.setText("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() + showAutoLast.setSelected(!showAutoFirst.isSelected()); + showAutoLast.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) + { + setShowAutoCalculatedAbove(!showAutoLast.isSelected()); + sortAnnotations_actionPerformed(); + } + }); + + 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); } + }; + addMenuActionAndAccelerator(keyStroke, deleteGroups, al); + + JMenuItem annotationColumn = new JMenuItem( + MessageManager.getString("action.select_by_annotation")); + annotationColumn.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + annotationColumn_actionPerformed(e); + } }); - copy.setText("Copy"); - copy.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_C, Toolkit.getDefaultToolkit() - .getMenuShortcutKeyMask(), false)); - copy.addActionListener(new java.awt.event.ActionListener() + 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); + } + }; + 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")); + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_C, Toolkit + .getDefaultToolkit().getMenuShortcutKeyMask(), false); + + al = new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { copy_actionPerformed(e); } - }); - cut.setText("Cut"); - cut.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_X, Toolkit.getDefaultToolkit() - .getMenuShortcutKeyMask(), false)); - cut.addActionListener(new java.awt.event.ActionListener() + }; + addMenuActionAndAccelerator(keyStroke, copy, al); + + cut.setText(MessageManager.getString("action.cut")); + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_X, Toolkit + .getDefaultToolkit().getMenuShortcutKeyMask(), false); + al = new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { cut_actionPerformed(e); } - }); - delete.setText("Delete"); - delete.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_BACK_SPACE, 0, false)); - 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) { delete_actionPerformed(e); } }); - pasteMenu.setText("Paste"); - pasteNew.setText("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() + + pasteMenu.setText(MessageManager.getString("action.paste")); + 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("Add 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); } - }); - applyToAllGroups.setText("Apply Colour To All Groups"); - applyToAllGroups.addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - applyToAllGroups_actionPerformed(e); - } - }); - createPNG.addActionListener(new java.awt.event.ActionListener() + }; + addMenuActionAndAccelerator(keyStroke, pasteThis, al); + + JMenuItem createPNG = new JMenuItem("PNG"); + createPNG.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { createPNG(null); } }); - createPNG.setActionCommand("Save As PNG Image"); - createPNG.setText("PNG"); - font.setText("Font..."); - font.addActionListener(new java.awt.event.ActionListener() + createPNG.setActionCommand(MessageManager + .getString("label.save_png_image")); + + JMenuItem font = new JMenuItem(MessageManager.getString("action.font")); + font.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { font_actionPerformed(e); } }); - - seqLimits.setText("Show Sequence Limits"); + 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) { 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) { createEPS(null); } }); - LoadtreeMenuItem.setActionCommand("Load a tree for this sequence set"); - LoadtreeMenuItem.setText("Load Associated Tree"); - LoadtreeMenuItem.addActionListener(new java.awt.event.ActionListener() + + 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.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - LoadtreeMenuItem_actionPerformed(e); + loadTreeMenuItem_actionPerformed(e); } }); + scaleAbove.setVisible(false); - scaleAbove.setText("Scale Above"); - scaleAbove.addActionListener(new java.awt.event.ActionListener() + scaleAbove.setText(MessageManager.getString("action.scale_above")); + scaleAbove.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { scaleAbove_actionPerformed(e); @@ -1277,9 +1260,10 @@ public class GAlignFrame extends JInternalFrame }); scaleLeft.setVisible(false); scaleLeft.setSelected(true); - scaleLeft.setText("Scale Left"); - scaleLeft.addActionListener(new java.awt.event.ActionListener() + scaleLeft.setText(MessageManager.getString("action.scale_left")); + scaleLeft.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { scaleLeft_actionPerformed(e); @@ -1287,9 +1271,10 @@ public class GAlignFrame extends JInternalFrame }); scaleRight.setVisible(false); scaleRight.setSelected(true); - scaleRight.setText("Scale Right"); - scaleRight.addActionListener(new java.awt.event.ActionListener() + scaleRight.setText(MessageManager.getString("action.scale_right")); + scaleRight.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { scaleRight_actionPerformed(e); @@ -1297,21 +1282,24 @@ public class GAlignFrame extends JInternalFrame }); centreColumnLabelsMenuItem.setVisible(true); centreColumnLabelsMenuItem.setState(false); - centreColumnLabelsMenuItem.setText("Centre Column Labels"); - centreColumnLabelsMenuItem - .addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - centreColumnLabels_actionPerformed(e); - } - }); + centreColumnLabelsMenuItem.setText(MessageManager + .getString("label.centre_column_labels")); + centreColumnLabelsMenuItem.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + centreColumnLabels_actionPerformed(e); + } + }); followHighlightMenuItem.setVisible(true); followHighlightMenuItem.setState(true); - followHighlightMenuItem.setText("Automatic Scrolling"); + followHighlightMenuItem.setText(MessageManager + .getString("label.automatic_scrolling")); followHighlightMenuItem.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { followHighlight_actionPerformed(); @@ -1319,53 +1307,44 @@ public class GAlignFrame extends JInternalFrame }); - modifyPID.setText("Modify Identity Threshold..."); - modifyPID.addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - modifyPID_actionPerformed(e); - } - }); - modifyConservation.setText("Modify Conservation Threshold..."); - modifyConservation - .addActionListener(new java.awt.event.ActionListener() - { - public void actionPerformed(ActionEvent e) - { - modifyConservation_actionPerformed(e); - } - }); - sortByTreeMenu.setText("By Tree Order"); - sort.setText("Sort"); + sortByTreeMenu + .setText(MessageManager.getString("action.by_tree_order")); + sort.setText(MessageManager.getString("action.sort")); sort.addMenuListener(new MenuListener() { + @Override public void menuSelected(MenuEvent e) { buildTreeMenu(); } + @Override public void menuDeselected(MenuEvent e) { } + @Override public void menuCanceled(MenuEvent e) { } }); - sortByAnnotScore.setText("by Score"); + 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 public void menuCanceled(MenuEvent e) { } + @Override public void menuDeselected(MenuEvent e) { } + @Override public void menuSelected(MenuEvent e) { buildSortByAnnotationScoresMenu(); @@ -1373,259 +1352,339 @@ public class GAlignFrame extends JInternalFrame }); sortByAnnotScore.setVisible(false); - calculateTree.setText("Calculate Tree"); + calculateTree + .setText(MessageManager.getString("action.calculate_tree")); - jMenu2.setText("Export Image"); - padGapsMenuitem.setText("Pad Gaps"); + padGapsMenuitem.setText(MessageManager.getString("label.pad_gaps")); padGapsMenuitem.setState(jalview.bin.Cache .getDefault("PAD_GAPS", false)); padGapsMenuitem.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { padGapsMenuitem_actionPerformed(e); } }); + JMenuItem vamsasStore = new JMenuItem( + MessageManager.getString("label.vamsas_store")); vamsasStore.setVisible(false); - vamsasStore.setText("VAMSAS store"); vamsasStore.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { vamsasStore_actionPerformed(e); } }); - showTranslation.setText("Translate cDNA"); + showTranslation.setText(MessageManager + .getString("label.translate_cDNA")); showTranslation.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { showTranslation_actionPerformed(e); } }); - extractScores.setText("Extract Scores..."); - extractScores.addActionListener(new ActionListener() + showReverse.setText(MessageManager.getString("label.reverse")); + showReverse.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - extractScores_actionPerformed(e); + showReverse_actionPerformed(false); } }); - extractScores.setVisible(true); // JBPNote: TODO: make gui for regex based - // score extraction - showProducts.setText("Get Cross References"); - /* - * showProducts.addActionListener(new ActionListener() { - * - * public void actionPerformed(ActionEvent e) { - * showProducts_actionPerformed(e); } }); - */ - openFeatureSettings.setText("Feature Settings..."); - openFeatureSettings.addActionListener(new ActionListener() + showReverseComplement.setText(MessageManager + .getString("label.reverse_complement")); + showReverseComplement.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - featureSettings_actionPerformed(e); + showReverse_actionPerformed(true); } }); - fetchSequence.setText("Fetch Sequence(s)..."); - fetchSequence.addActionListener(new ActionListener() + + JMenuItem extractScores = new JMenuItem( + MessageManager.getString("label.extract_scores")); + extractScores.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - fetchSequence_actionPerformed(e); + extractScores_actionPerformed(e); } }); + extractScores.setVisible(true); + // JBPNote: TODO: make gui for regex based score extraction - annotationColour.setText("By Annotation..."); - annotationColour.addActionListener(new ActionListener() + // for show products actions see AlignFrame.canShowProducts + showProducts.setText(MessageManager.getString("label.get_cross_refs")); + + 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) { - annotationColour_actionPerformed(e); + runGroovy_actionPerformed(); } }); - rnahelicesColour.setText("By RNA helices"); - rnahelicesColour.addActionListener(new ActionListener() + JMenuItem openFeatureSettings = new JMenuItem( + MessageManager.getString("action.feature_settings")); + openFeatureSettings.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { - rnahelicesColour_actionPerformed(e); + featureSettings_actionPerformed(e); + } + }); + JMenuItem fetchSequence = new JMenuItem( + MessageManager.getString("label.fetch_sequences")); + fetchSequence.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + fetchSequence_actionPerformed(e); } }); - associatedData.setText("Load Features / Annotations"); + JMenuItem associatedData = new JMenuItem( + MessageManager.getString("label.load_features_annotations")); associatedData.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { associatedData_actionPerformed(e); } }); - autoCalculate.setText("Autocalculate Consensus"); + autoCalculate.setText(MessageManager + .getString("label.autocalculate_consensus")); autoCalculate.setState(jalview.bin.Cache.getDefault( "AUTO_CALC_CONSENSUS", true)); autoCalculate.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { autoCalculate_actionPerformed(e); } }); - sortByTree.setText("Sort Alignment With New Tree"); - sortByTree.setToolTipText("Enable this to automatically sort
the alignment when you open
a new tree."); - sortByTree.setState(jalview.bin.Cache.getDefault( - "SORT_BY_TREE", false)); + sortByTree.setText(MessageManager + .getString("label.sort_alignment_new_tree")); + sortByTree + .setToolTipText("" + + MessageManager + .getString("label.enable_automatically_sort_alignment_when_open_new_tree")); + sortByTree + .setState(jalview.bin.Cache.getDefault("SORT_BY_TREE", false)); sortByTree.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { sortByTreeOption_actionPerformed(e); } }); - listenToViewSelections.setText("Listen for selections"); - listenToViewSelections.setToolTipText("When selected, selections in this view will mirror
selections made on the same sequences in other views."); - listenToViewSelections.setState(false); + listenToViewSelections.setText(MessageManager + .getString("label.listen_for_selections")); + listenToViewSelections + .setToolTipText("" + + MessageManager + .getString("label.selections_mirror_selections_made_same_sequences_other_views")); + listenToViewSelections.setState(false); listenToViewSelections.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { listenToViewSelections_actionPerformed(e); } }); - addSequenceMenu.setText("Add Sequences"); - addFromFile.setText("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 public void actionPerformed(ActionEvent e) { addFromFile_actionPerformed(e); } }); - addFromText.setText("From Textbox"); + JMenuItem addFromText = new JMenuItem( + MessageManager.getString("label.from_textbox")); addFromText.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { addFromText_actionPerformed(e); } }); - addFromURL.setText("From URL"); + JMenuItem addFromURL = new JMenuItem( + MessageManager.getString("label.from_url")); addFromURL.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { addFromURL_actionPerformed(e); } }); - exportFeatures.setText("Export Features..."); + JMenuItem exportFeatures = new JMenuItem( + MessageManager.getString("label.export_features")); exportFeatures.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { exportFeatures_actionPerformed(e); } }); - exportAnnotations.setText("Export Annotations..."); + JMenuItem exportAnnotations = new JMenuItem( + MessageManager.getString("label.export_annotations")); exportAnnotations.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { exportAnnotations_actionPerformed(e); } }); - statusPanel.setLayout(gridLayout1); - jMenu3.setText("Show"); - showAllSeqs.setText("All Sequences"); - showAllSeqs.setToolTipText("Shift+H toggles sequence visiblity."); + 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() { + @Override public void actionPerformed(ActionEvent e) { showAllSeqs_actionPerformed(e); } }); - showAllColumns.setText("All Columns"); - showAllColumns.setToolTipText("Ctrl+H toggles column visiblity."); + JMenuItem showAllColumns = new JMenuItem( + MessageManager.getString("label.all_columns")); + showAllColumns.setToolTipText(MessageManager + .getString("label.toggle_columns_visibility")); showAllColumns.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { showAllColumns_actionPerformed(e); } }); - hideMenu.setText("Hide"); - hideSelSequences.setText("Selected Sequences"); - hideSelSequences.setToolTipText("Shift+H toggles sequence visiblity."); + 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() { + @Override public void actionPerformed(ActionEvent e) { hideSelSequences_actionPerformed(e); } }); - hideSelColumns.setText("Selected Columns"); - hideSelColumns.setToolTipText("Ctrl+H toggles column visiblity."); + JMenuItem hideSelColumns = new JMenuItem( + MessageManager.getString("label.selected_columns")); + hideSelColumns.setToolTipText(MessageManager + .getString("label.toggle_columns_visibility")); hideSelColumns.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { hideSelColumns_actionPerformed(e); } }); - hideAllSelection.setText("Selected Region"); + JMenuItem hideAllSelection = new JMenuItem( + MessageManager.getString("label.selected_region")); hideAllSelection.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { hideAllSelection_actionPerformed(e); } }); // TODO: should be hidden if no selection exists. - hideAllButSelection.setText("All but Selected Region (Shift+Ctrl+H)"); + JMenuItem hideAllButSelection = new JMenuItem( + MessageManager.getString("label.all_but_selected_region")); hideAllButSelection.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { hideAllButSelection_actionPerformed(e); } }); - showAllhidden.setText("All Sequences and Columns"); - showAllhidden - .setToolTipText("H toggles visibility of hidden or selected regions."); + JMenuItem showAllhidden = new JMenuItem( + MessageManager.getString("label.all_sequences_columns")); + showAllhidden.setToolTipText(MessageManager + .getString("label.toggles_visibility_hidden_selected_regions")); showAllhidden.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { showAllhidden_actionPerformed(e); } }); - - hiddenMarkers.setText("Show Hidden Markers"); + hiddenMarkers.setText(MessageManager + .getString("action.show_hidden_markers")); hiddenMarkers.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { hiddenMarkers_actionPerformed(e); } }); - invertColSel.setText("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 public void stateChanged(ChangeEvent evt) { JTabbedPane pane = (JTabbedPane) evt.getSource(); @@ -1635,117 +1694,165 @@ public class GAlignFrame extends JInternalFrame }); tabbedPane.addMouseListener(new MouseAdapter() { + @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() { + @Override public void focusGained(FocusEvent e) { tabbedPane_focusGained(e); } }); - save.setText("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("Reload"); + reload.setText(MessageManager.getString("action.reload")); reload.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { reload_actionPerformed(e); } }); - newView.setText("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); } - }); - tabbedPane.setToolTipText(" Right-click to rename tab" - + "
Press X to eXpand tabs, G to reGroup.
"); - textColour.setText("Colour Text ..."); - textColour.addActionListener(new ActionListener() - { - public void actionPerformed(ActionEvent e) - { - textColour_actionPerformed(e); - } - }); - formatMenu.setText("Format"); - selectMenu.setText("Select"); - idRightAlign.setText("Right Align Sequence Id"); + }; + addMenuActionAndAccelerator(keyStroke, newView, al); + + tabbedPane.setToolTipText("" + + MessageManager.getString("label.rename_tab_eXpand_reGroup") + + ""); + + formatMenu.setText(MessageManager.getString("action.format")); + JMenu selectMenu = new JMenu(MessageManager.getString("action.select")); + idRightAlign.setText(MessageManager + .getString("label.right_align_sequence_id")); idRightAlign.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { idRightAlign_actionPerformed(e); } }); + gatherViews.setEnabled(false); - gatherViews.setText("Gather Views"); - gatherViews.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_G, 0, false)); - gatherViews.addActionListener(new ActionListener() + gatherViews.setText(MessageManager.getString("action.gather_views")); + 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("Expand Views"); - expandViews.setAccelerator(javax.swing.KeyStroke.getKeyStroke( - java.awt.event.KeyEvent.VK_X, 0, false)); - expandViews.addActionListener(new ActionListener() + expandViews.setText(MessageManager.getString("action.expand_views")); + keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_X, 0, false); + al = new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { expandViews_actionPerformed(e); } - }); - pageSetup.setText("Page Setup ..."); + }; + addMenuActionAndAccelerator(keyStroke, expandViews, al); + + JMenuItem pageSetup = new JMenuItem( + MessageManager.getString("action.page_setup")); pageSetup.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { pageSetup_actionPerformed(e); } }); - alignmentProperties.setText("Alignment Properties..."); + JMenuItem alignmentProperties = new JMenuItem( + MessageManager.getString("label.alignment_props")); alignmentProperties.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent actionEvent) { alignmentProperties(); } }); - tooltipSettingsMenu.setText("Sequence ID Tooltip"); - autoAnnMenu.setText("Autocalculated Annotation"); + JMenuItem selectHighlighted = new JMenuItem( + MessageManager.getString("action.select_highlighted_columns")); + selectHighlighted.setToolTipText(MessageManager + .getString("tooltip.select_highlighted_columns")); + al = new ActionListener() + { + @Override + public void actionPerformed(ActionEvent actionEvent) + { + selectHighlightedColumns_actionPerformed(actionEvent); + } + }; + selectHighlighted.addActionListener(al); + 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); alignFrameMenuBar.add(viewMenu); + alignFrameMenuBar.add(annotationsMenu); alignFrameMenuBar.add(formatMenu); alignFrameMenuBar.add(colourMenu); alignFrameMenuBar.add(calculateMenu); alignFrameMenuBar.add(webService); + fileMenu.add(fetchSequence); fileMenu.add(addSequenceMenu); fileMenu.add(reload); @@ -1757,13 +1864,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); @@ -1783,15 +1893,48 @@ 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); - viewMenu.add(annotationPanelMenuItem); + viewMenu.addSeparator(); + viewMenu.add(showSeqFeatures); + // viewMenu.add(showSeqFeaturesHeight); + viewMenu.add(openFeatureSettings); + tooltipSettingsMenu.add(showDbRefsMenuitem); + tooltipSettingsMenu.add(showNpFeatsMenuitem); + viewMenu.add(tooltipSettingsMenu); + viewMenu.addSeparator(); + 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); @@ -1799,124 +1942,589 @@ public class GAlignFrame extends JInternalFrame autoAnnMenu.addSeparator(); autoAnnMenu.add(showGroupConservation); autoAnnMenu.add(showGroupConsensus); - viewMenu.add(autoAnnMenu); - viewMenu.addSeparator(); - viewMenu.add(showSeqFeatures); - // viewMenu.add(showSeqFeaturesHeight); + annotationsMenu.add(autoAnnMenu); + + + sort.add(sortIDMenuItem); + sort.add(sortLengthMenuItem); + sort.add(sortGroupMenuItem); + sort.add(sortPairwiseMenuItem); + sort.add(sortByTreeMenu); + calculateMenu.add(sort); + calculateMenu.add(calculateTree); + calculateMenu.addSeparator(); + calculateMenu.add(pairwiseAlignmentMenuItem); + 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); + 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); + + formatMenu.add(font); + formatMenu.addSeparator(); + formatMenu.add(wrapMenuItem); + formatMenu.add(scaleAbove); + formatMenu.add(scaleLeft); + formatMenu.add(scaleRight); + formatMenu.add(seqLimits); + formatMenu.add(idRightAlign); + formatMenu.add(hiddenMarkers); + formatMenu.add(viewBoxesMenuItem); + formatMenu.add(viewTextMenuItem); + formatMenu.add(colourTextMenuItem); + formatMenu.add(renderGapsMenuItem); + formatMenu.add(centreColumnLabelsMenuItem); + formatMenu.add(showNonconservedMenuItem); + selectMenu.add(findMenuItem); + selectMenu.addSeparator(); + selectMenu.add(selectAllSequenceMenuItem); + selectMenu.add(deselectAllSequenceMenuItem); + selectMenu.add(invertSequenceMenuItem); + selectMenu.add(invertColSel); + selectMenu.add(createGroup); + selectMenu.add(unGroup); + selectMenu.add(grpsFromSelection); + selectMenu.add(deleteGroups); + selectMenu.add(annotationColumn); + selectMenu.add(selectHighlighted); + // TODO - determine if the listenToViewSelections button is needed : see bug + // JAL-574 + // selectMenu.addSeparator(); + // selectMenu.add(listenToViewSelections); + } + + /** + * Rebuilds the Colour menu, including any user-defined colours which have + * been loaded either on startup or during the session + */ + public void buildColourMenu() + { + colourMenu.removeAll(); + colours = new ButtonGroup(); + + colourMenu.add(applyToAllGroups); + colourMenu.add(textColour); + colourMenu.addSeparator(); + colourMenu.add(noColourmenuItem); + colourMenu.add(clustalColour); + colourMenu.add(BLOSUM62Colour); + colourMenu.add(PIDColour); + colourMenu.add(zappoColour); + colourMenu.add(taylorColour); + colourMenu.add(hydrophobicityColour); + colourMenu.add(helixColour); + colourMenu.add(strandColour); + colourMenu.add(turnColour); + colourMenu.add(buriedColour); + colourMenu.add(nucleotideColour); + colourMenu.add(purinePyrimidineColour); + // colourMenu.add(RNAInteractionColour); + // colourMenu.add(covariationColour); + colourMenu.add(tcoffeeColour); + + /* + * add any user-defined colours + */ + Map userColourSchemes = UserDefinedColours + .getUserColourSchemes(); + if (userColourSchemes != null) + { + for (String userColour : userColourSchemes.keySet()) + { + final JRadioButtonMenuItem radioItem = new JRadioButtonMenuItem( + userColour); + radioItem.setName(USER_DEFINED_COLOUR_SCHEME); + radioItem.addMouseListener(new MouseAdapter() + { + @Override + public void mousePressed(MouseEvent evt) + { + if (evt.isPopupTrigger()) // Mac + { + offerRemoval(); + } + } + + @Override + public void mouseReleased(MouseEvent evt) + { + if (evt.isPopupTrigger()) // Windows + { + offerRemoval(); + } + } + + void offerRemoval() + { + radioItem.removeActionListener(radioItem.getActionListeners()[0]); + + int option = JvOptionPane.showInternalConfirmDialog( + Desktop.desktop, MessageManager + .getString("label.remove_from_default_list"), + MessageManager + .getString("label.remove_user_defined_colour"), + JvOptionPane.YES_NO_OPTION); + if (option == JvOptionPane.YES_OPTION) + { + UserDefinedColours.removeColourFromDefaults(radioItem + .getText()); + colourMenu.remove(radioItem); + } + else + { + radioItem.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent evt) + { + userDefinedColour_actionPerformed(evt); + } + }); + } + } + }); + radioItem.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent evt) + { + userDefinedColour_actionPerformed(evt); + } + }); + colourMenu.add(radioItem); + colours.add(radioItem); + } + } + + colourMenu.add(userDefinedColour); + colourMenu.addSeparator(); + colourMenu.add(conservationMenuItem); + colourMenu.add(modifyConservation); + colourMenu.add(abovePIDThreshold); + colourMenu.add(modifyPID); + colourMenu.add(annotationColour); + colourMenu.add(rnahelicesColour); + + /* + * add colours to a ButtonGroup to make their + * selection mutually exclusive + */ + colours.add(noColourmenuItem); + colours.add(clustalColour); + colours.add(zappoColour); + colours.add(taylorColour); + colours.add(hydrophobicityColour); + colours.add(helixColour); + colours.add(strandColour); + colours.add(turnColour); + colours.add(buriedColour); + colours.add(userDefinedColour); + colours.add(PIDColour); + colours.add(BLOSUM62Colour); + colours.add(nucleotideColour); + colours.add(purinePyrimidineColour); + // colours.add(covariationColour); + colours.add(tcoffeeColour); + colours.add(RNAInteractionColour); + setColourSelected(Cache.getDefault(Preferences.DEFAULT_COLOUR, + ResidueColourScheme.NONE)); + + } + + /** + * Constructs the entries on the Colour menu (but does not add them to the + * menu) + */ + protected void initColourMenu() + { + applyToAllGroups = new JCheckBoxMenuItem( + MessageManager.getString("label.apply_colour_to_all_groups")); + applyToAllGroups.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + applyToAllGroups_actionPerformed(); + } + }); + + textColour = new JRadioButtonMenuItem( + MessageManager.getString("action.set_text_colour")); + textColour.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + textColour_actionPerformed(); + } + }); + clustalColour = new JRadioButtonMenuItem( + MessageManager.getString("label.clustalx")); + clustalColour.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + clustalColour_actionPerformed(); + } + }); + zappoColour = new JRadioButtonMenuItem( + MessageManager.getString("label.zappo")); + zappoColour.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + zappoColour_actionPerformed(); + } + }); + taylorColour = new JRadioButtonMenuItem( + MessageManager.getString("label.taylor")); + taylorColour.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + taylorColour_actionPerformed(); + } + }); + hydrophobicityColour = new JRadioButtonMenuItem( + MessageManager + .getString("label.hydrophobicity")); + hydrophobicityColour.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + hydrophobicityColour_actionPerformed(); + } + }); + helixColour = new JRadioButtonMenuItem( + MessageManager.getString("label.helix_propensity")); + helixColour.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + helixColour_actionPerformed(); + } + }); + strandColour = new JRadioButtonMenuItem( + MessageManager + .getString("label.strand_propensity")); + strandColour.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + strandColour_actionPerformed(); + } + }); + turnColour = new JRadioButtonMenuItem( + MessageManager.getString("label.turn_propensity")); + turnColour.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + turnColour_actionPerformed(); + } + }); + buriedColour = new JRadioButtonMenuItem( + MessageManager.getString("label.buried_index")); + buriedColour.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + buriedColour_actionPerformed(); + } + }); + userDefinedColour = new JRadioButtonMenuItem( + MessageManager + .getString("action.user_defined")); + userDefinedColour.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + userDefinedColour_actionPerformed(e); + } + }); + PIDColour = new JRadioButtonMenuItem( + MessageManager.getString("label.percentage_identity")); + PIDColour.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + PIDColour_actionPerformed(); + } + }); + BLOSUM62Colour = new JRadioButtonMenuItem( + MessageManager.getString("label.blosum62_score")); + BLOSUM62Colour.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + BLOSUM62Colour_actionPerformed(); + } + }); + nucleotideColour = new JRadioButtonMenuItem( + MessageManager.getString("label.nucleotide")); + nucleotideColour.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + nucleotideColour_actionPerformed(); + } + }); + purinePyrimidineColour = new JRadioButtonMenuItem( + MessageManager.getString("label.purine_pyrimidine")); + purinePyrimidineColour.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + purinePyrimidineColour_actionPerformed(); + } + }); - viewMenu.add(openFeatureSettings); - tooltipSettingsMenu.add(showDbRefsMenuitem); - tooltipSettingsMenu.add(showNpFeatsMenuitem); - viewMenu.add(tooltipSettingsMenu); - viewMenu.addSeparator(); - viewMenu.add(alignmentProperties); - viewMenu.addSeparator(); - viewMenu.add(overviewMenuItem); - colourMenu.add(applyToAllGroups); - colourMenu.add(textColour); - colourMenu.addSeparator(); - colourMenu.add(noColourmenuItem); - colourMenu.add(clustalColour); - colourMenu.add(BLOSUM62Colour); - colourMenu.add(PIDColour); - colourMenu.add(zappoColour); - colourMenu.add(taylorColour); - colourMenu.add(hydrophobicityColour); - colourMenu.add(helixColour); - colourMenu.add(strandColour); - colourMenu.add(turnColour); - colourMenu.add(buriedColour); - colourMenu.add(nucleotideColour); - colourMenu.add(purinePyrimidineColour); - // colourMenu.add(covariationColour); - colourMenu.add(userDefinedColour); - colourMenu.addSeparator(); - colourMenu.add(conservationMenuItem); - colourMenu.add(modifyConservation); - colourMenu.add(abovePIDThreshold); - colourMenu.add(modifyPID); - colourMenu.add(annotationColour); - colourMenu.add(rnahelicesColour); - calculateMenu.add(sort); - calculateMenu.add(calculateTree); - calculateMenu.addSeparator(); - calculateMenu.add(pairwiseAlignmentMenuItem); - calculateMenu.add(PCAMenuItem); - calculateMenu.addSeparator(); - calculateMenu.add(showTranslation); - calculateMenu.add(showProducts); - calculateMenu.add(autoCalculate); - calculateMenu.add(sortByTree); - calculateMenu.addSeparator(); - calculateMenu.add(extractScores); - webServiceNoServices = new JMenuItem(""); - webService.add(webServiceNoServices); - pasteMenu.add(pasteNew); - pasteMenu.add(pasteThis); - sort.add(sortIDMenuItem); - sort.add(sortLengthMenuItem); - sort.add(sortGroupMenuItem); - sort.add(sortPairwiseMenuItem); - sort.add(sortByTreeMenu); - calculateTree.add(averageDistanceTreeMenuItem); - calculateTree.add(neighbourTreeMenuItem); - calculateTree.add(avDistanceTreeBlosumMenuItem); - calculateTree.add(njTreeBlosumMenuItem); - jMenu2.add(htmlMenuItem); - jMenu2.add(epsFile); - jMenu2.add(createPNG); - 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); + tcoffeeColour = new JRadioButtonMenuItem( + MessageManager.getString("label.tcoffee_scores")); + tcoffeeColour.setEnabled(false); + tcoffeeColour.addActionListener(new ActionListener() + { + + @Override + public void actionPerformed(ActionEvent e) + { + tcoffeeColorScheme_actionPerformed(); + } + }); + + RNAInteractionColour = new JRadioButtonMenuItem("RNA Interaction type"); + RNAInteractionColour.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + RNAInteractionColour_actionPerformed(); + } + }); + /* + * covariationColour = new JRadioButtonMenuItem("Covariation"); + * covariationColour.addActionListener(new ActionListener() { public void + * actionPerformed(ActionEvent e) { covariationColour_actionPerformed(); } + * }); + */ + + conservationMenuItem = new JCheckBoxMenuItem( + MessageManager.getString("action.by_conservation")); + conservationMenuItem.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + conservationMenuItem_actionPerformed(); + } + }); + noColourmenuItem = new JRadioButtonMenuItem( + MessageManager.getString("label.none")); + noColourmenuItem.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + noColourmenuItem_actionPerformed(); + } + }); + + abovePIDThreshold = new JCheckBoxMenuItem( + MessageManager.getString("label.above_identity_threshold")); + abovePIDThreshold.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + abovePIDThreshold_actionPerformed(); + } + }); + modifyPID = new JMenuItem( + MessageManager.getString("label.modify_identity_threshold")); + modifyPID.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + modifyPID_actionPerformed(); + } + }); + modifyConservation = new JMenuItem( + MessageManager + .getString("label.modify_conservation_threshold")); + modifyConservation.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + modifyConservation_actionPerformed(); + } + }); + + annotationColour = new JMenuItem( + MessageManager.getString("action.by_annotation")); + annotationColour.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + annotationColour_actionPerformed(); + } + }); + + rnahelicesColour = new JMenuItem( + MessageManager.getString("action.by_rna_helixes")); + rnahelicesColour.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + rnahelicesColour_actionPerformed(); + } + }); + } + + protected void selectHighlightedColumns_actionPerformed( + ActionEvent actionEvent) + { + // TODO Auto-generated method stub + + } + + /** + * 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() + { + } + + /** + * Action on clicking Show all annotations. + * + * @param forSequences + * update sequence-related annotations + * @param forAlignment + * update non-sequence-related annotations + */ + protected void showAllAnnotations_actionPerformed(boolean forSequences, + boolean forAlignment) + { + 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(boolean forSequences, + boolean forAlignment) + { + setAnnotationsVisibility(false, forSequences, forAlignment); + } + + /** + * 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 setAnnotationsVisibility(boolean visible, + boolean forSequences, boolean forAlignment) + { - formatMenu.add(font); - formatMenu.addSeparator(); - formatMenu.add(wrapMenuItem); - formatMenu.add(scaleAbove); - formatMenu.add(scaleLeft); - formatMenu.add(scaleRight); - formatMenu.add(seqLimits); - formatMenu.add(idRightAlign); - formatMenu.add(hiddenMarkers); - formatMenu.add(viewBoxesMenuItem); - formatMenu.add(viewTextMenuItem); - formatMenu.add(colourTextMenuItem); - formatMenu.add(renderGapsMenuItem); - formatMenu.add(centreColumnLabelsMenuItem); - formatMenu.add(showNonconservedMenuItem); - selectMenu.add(findMenuItem); - selectMenu.addSeparator(); - selectMenu.add(selectAllSequenceMenuItem); - selectMenu.add(deselectAllSequenceMenuItem); - selectMenu.add(invertSequenceMenuItem); - selectMenu.add(invertColSel); - selectMenu.add(deleteGroups); - selectMenu.add(grpsFromSelection); - // TODO - determine if the listenToViewSelections button is needed : see bug JAL-574 - //selectMenu.addSeparator(); - //selectMenu.add(listenToViewSelections); } protected void normaliseSequenceLogo_actionPerformed(ActionEvent e) { // TODO Auto-generated method stub - + } protected void listenToViewSelections_actionPerformed(ActionEvent e) { // TODO Auto-generated method stub - + } protected void showAllhidden_actionPerformed(ActionEvent e) @@ -1979,13 +2587,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 @@ -2020,10 +2621,6 @@ public class GAlignFrame extends JInternalFrame { } - protected void showProducts_actionPerformed(ActionEvent e) - { - } - protected void buildSortByAnnotationScoresMenu() { } @@ -2065,6 +2662,11 @@ public class GAlignFrame extends JInternalFrame { } + protected void bioJSMenuItem_actionPerformed(ActionEvent e) + { + + } + protected void closeMenuItem_actionPerformed(boolean b) { } @@ -2173,35 +2775,35 @@ public class GAlignFrame extends JInternalFrame { } - protected void clustalColour_actionPerformed(ActionEvent e) + protected void clustalColour_actionPerformed() { } - protected void zappoColour_actionPerformed(ActionEvent e) + protected void zappoColour_actionPerformed() { } - protected void taylorColour_actionPerformed(ActionEvent e) + protected void taylorColour_actionPerformed() { } - protected void hydrophobicityColour_actionPerformed(ActionEvent e) + protected void hydrophobicityColour_actionPerformed() { } - protected void helixColour_actionPerformed(ActionEvent e) + protected void helixColour_actionPerformed() { } - protected void strandColour_actionPerformed(ActionEvent e) + protected void strandColour_actionPerformed() { } - protected void turnColour_actionPerformed(ActionEvent e) + protected void turnColour_actionPerformed() { } - protected void buriedColour_actionPerformed(ActionEvent e) + protected void buriedColour_actionPerformed() { } @@ -2209,27 +2811,31 @@ public class GAlignFrame extends JInternalFrame { } - protected void PIDColour_actionPerformed(ActionEvent e) + protected void PIDColour_actionPerformed() + { + } + + protected void BLOSUM62Colour_actionPerformed() { } - protected void BLOSUM62Colour_actionPerformed(ActionEvent e) + protected void purinePyrimidineColour_actionPerformed() { } - protected void purinePyrimidineColour_actionPerformed(ActionEvent e) + protected void RNAInteractionColour_actionPerformed() { } /* - * protected void covariationColour_actionPerformed(ActionEvent e) { } + * protected void covariationColour_actionPerformed() { } */ - protected void noColourmenuItem_actionPerformed(ActionEvent e) + protected void noColourmenuItem_actionPerformed() { } - protected void conservationMenuItem_actionPerformed(ActionEvent e) + protected void conservationMenuItem_actionPerformed() { } @@ -2245,7 +2851,7 @@ public class GAlignFrame extends JInternalFrame { } - protected void abovePIDThreshold_actionPerformed(ActionEvent e) + protected void abovePIDThreshold_actionPerformed() { } @@ -2253,7 +2859,7 @@ public class GAlignFrame extends JInternalFrame { } - protected void nucleotideColour_actionPerformed(ActionEvent e) + protected void nucleotideColour_actionPerformed() { } @@ -2261,6 +2867,14 @@ public class GAlignFrame extends JInternalFrame { } + protected void createGroup_actionPerformed(ActionEvent e) + { + } + + protected void unGroup_actionPerformed(ActionEvent e) + { + } + protected void copy_actionPerformed(ActionEvent e) { } @@ -2281,7 +2895,7 @@ public class GAlignFrame extends JInternalFrame { } - protected void applyToAllGroups_actionPerformed(ActionEvent e) + protected void applyToAllGroups_actionPerformed() { } @@ -2306,8 +2920,37 @@ public class GAlignFrame extends JInternalFrame { } - protected void LoadtreeMenuItem_actionPerformed(ActionEvent e) + public void createSVG(java.io.File f) + { + + } + + protected void loadTreeMenuItem_actionPerformed(ActionEvent e) + { + + } + + /** + * Template method to handle the 'load T-Coffee scores' menu event. + *

+ * Subclasses override this method to provide a custom action. + * + * @param event + * The raised event + */ + protected void loadScores_actionPerformed(ActionEvent event) + { + + } + + /** + * Template method to handle the 'Color T-Coffee scores' menu event. + *

+ * Subclasses override this method to provide a custom action. + */ + protected void tcoffeeColorScheme_actionPerformed() { + } protected void jpred_actionPerformed(ActionEvent e) @@ -2326,11 +2969,11 @@ public class GAlignFrame extends JInternalFrame { } - protected void modifyPID_actionPerformed(ActionEvent e) + protected void modifyPID_actionPerformed() { } - protected void modifyConservation_actionPerformed(ActionEvent e) + protected void modifyConservation_actionPerformed() { } @@ -2372,12 +3015,15 @@ public class GAlignFrame extends JInternalFrame } - public void annotationColour_actionPerformed(ActionEvent e) + public void annotationColour_actionPerformed() { + } + public void annotationColumn_actionPerformed(ActionEvent e) + { } - public void rnahelicesColour_actionPerformed(ActionEvent e) + public void rnahelicesColour_actionPerformed() { } @@ -2472,7 +3118,7 @@ public class GAlignFrame extends JInternalFrame } - public void textColour_actionPerformed(ActionEvent e) + public void textColour_actionPerformed() { } @@ -2506,4 +3152,77 @@ public class GAlignFrame extends JInternalFrame { } + + protected void expand_newalign(ActionEvent e) + { + // 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) + { + } }