+ * Builds the group colour sub-menu, including any user-defined colours which
+ * were loaded at startup or during the Jalview session
+ */
+ protected void buildColourMenu()
+ {
+ SequenceGroup sg = getGroup();
+ colourMenu.removeAll();
+ colourMenu.add(textColour);
+ colourMenu.addSeparator();
+ colourMenu.add(noColourmenuItem);
+ colourMenu.add(clustalColour);
+ // in Java 8, isApplicableTo can be a static method on the interface
+ clustalColour.setEnabled(new ClustalxColourScheme(sg, null)
+ .isApplicableTo(sg));
+ colourMenu.add(BLOSUM62Colour);
+ BLOSUM62Colour
+ .setEnabled(new Blosum62ColourScheme().isApplicableTo(sg));
+ colourMenu.add(PIDColour);
+ PIDColour.setEnabled(new PIDColourScheme().isApplicableTo(sg));
+ colourMenu.add(zappoColour);
+ zappoColour.setEnabled(new ZappoColourScheme().isApplicableTo(sg));
+ colourMenu.add(taylorColour);
+ taylorColour.setEnabled(new TaylorColourScheme().isApplicableTo(sg));
+ colourMenu.add(hydrophobicityColour);
+ hydrophobicityColour.setEnabled(new HydrophobicColourScheme()
+ .isApplicableTo(sg));
+ colourMenu.add(helixColour);
+ helixColour.setEnabled(new HelixColourScheme().isApplicableTo(sg));
+ colourMenu.add(strandColour);
+ strandColour.setEnabled(new StrandColourScheme().isApplicableTo(sg));
+ colourMenu.add(turnColour);
+ turnColour.setEnabled(new TurnColourScheme().isApplicableTo(sg));
+ colourMenu.add(buriedColour);
+ buriedColour.setEnabled(new BuriedColourScheme().isApplicableTo(sg));
+ colourMenu.add(nucleotideColour);
+ nucleotideColour.setEnabled(new NucleotideColourScheme()
+ .isApplicableTo(sg));
+ colourMenu.add(purinePyrimidineColour);
+ purinePyrimidineColour.setEnabled(new PurinePyrimidineColourScheme()
+ .isApplicableTo(sg));
+ colourMenu.add(tcoffeeColour);
+ tcoffeeColour
+ .setEnabled(new TCoffeeColourScheme(sg).isApplicableTo(sg));
+
+ /*
+ * add some of these items to a ButtonGroup so their
+ * selection is mutually exclusive
+ */
+ ButtonGroup colours = new ButtonGroup();
+
+ /*
+ * add any user-defined colours loaded on startup or
+ * during the application session
+ */
+ SortedMap<String, UserColourScheme> userColourSchemes = UserDefinedColours
+ .getUserColourSchemes();
+ if (userColourSchemes != null)
+ {
+ for (String userColour : userColourSchemes.keySet())
+ {
+ JRadioButtonMenuItem item = new JRadioButtonMenuItem(userColour);
+ item.setName(userColour); // button name identifies selected colour
+ item.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent evt)
+ {
+ userDefinedColour_actionPerformed(evt);
+ }
+ });
+ colourMenu.add(item);
+ colours.add(item);
+ }
+ }
+ colourMenu.add(userDefinedColour);
+
+ colourMenu.addSeparator();
+ colourMenu.add(conservationMenuItem);
+ colourMenu.add(abovePIDColour);
+
+ colours.add(noColourmenuItem);
+ colours.add(clustalColour);
+ colours.add(BLOSUM62Colour);
+ colours.add(PIDColour);
+ colours.add(zappoColour);
+ colours.add(taylorColour);
+ colours.add(hydrophobicityColour);
+ colours.add(helixColour);
+ colours.add(strandColour);
+ colours.add(turnColour);
+ colours.add(buriedColour);
+ colours.add(purinePyrimidineColour);
+ colours.add(tcoffeeColour);
+ colours.add(nucleotideColour);
+ colours.add(userDefinedColour);
+ colours.add(abovePIDColour);
+ // colours.add(RNAInteractionColour);
+
+ }
+
+ /**