+ 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<String, UserColourScheme> 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();
+ }
+ });