Merge branch 'develop' into features/JAL-2360colourSchemeApplicability
authorgmungoc <g.m.carstairs@dundee.ac.uk>
Fri, 20 Jan 2017 11:56:07 +0000 (11:56 +0000)
committergmungoc <g.m.carstairs@dundee.ac.uk>
Fri, 20 Jan 2017 11:56:07 +0000 (11:56 +0000)
Conflicts:
src/jalview/appletgui/APopupMenu.java
src/jalview/appletgui/SliderPanel.java
src/jalview/gui/PopupMenu.java

1  2 
src/jalview/appletgui/APopupMenu.java
src/jalview/appletgui/SliderPanel.java
src/jalview/gui/Jalview2XML.java

@@@ -42,13 -42,10 +42,13 @@@ import jalview.io.SequenceAnnotationRep
  import jalview.schemes.Blosum62ColourScheme;
  import jalview.schemes.BuriedColourScheme;
  import jalview.schemes.ClustalxColourScheme;
 +import jalview.schemes.ColourSchemeI;
  import jalview.schemes.HelixColourScheme;
  import jalview.schemes.HydrophobicColourScheme;
 +import jalview.schemes.JalviewColourScheme;
  import jalview.schemes.NucleotideColourScheme;
  import jalview.schemes.PIDColourScheme;
 +import jalview.schemes.PurinePyrimidineColourScheme;
  import jalview.schemes.StrandColourScheme;
  import jalview.schemes.TaylorColourScheme;
  import jalview.schemes.TurnColourScheme;
@@@ -70,7 -67,6 +70,7 @@@ import java.util.Collections
  import java.util.LinkedHashMap;
  import java.util.List;
  import java.util.Map;
 +import java.util.SortedMap;
  import java.util.TreeMap;
  import java.util.Vector;
  
@@@ -81,50 -77,46 +81,50 @@@ public class APopupMenu extends java.aw
  
    MenuItem editGroupName = new MenuItem();
  
 -  protected MenuItem clustalColour = new MenuItem();
 +  CheckboxMenuItem noColour = new CheckboxMenuItem();
  
 -  protected MenuItem zappoColour = new MenuItem();
 +  protected CheckboxMenuItem clustalColour = new CheckboxMenuItem();
  
 -  protected MenuItem taylorColour = new MenuItem();
 +  protected CheckboxMenuItem zappoColour = new CheckboxMenuItem();
  
 -  protected MenuItem hydrophobicityColour = new MenuItem();
 +  protected CheckboxMenuItem taylorColour = new CheckboxMenuItem();
  
 -  protected MenuItem helixColour = new MenuItem();
 +  protected CheckboxMenuItem hydrophobicityColour = new CheckboxMenuItem();
  
 -  protected MenuItem strandColour = new MenuItem();
 +  protected CheckboxMenuItem helixColour = new CheckboxMenuItem();
  
 -  protected MenuItem turnColour = new MenuItem();
 +  protected CheckboxMenuItem strandColour = new CheckboxMenuItem();
  
 -  protected MenuItem buriedColour = new MenuItem();
 +  protected CheckboxMenuItem turnColour = new CheckboxMenuItem();
  
 -  protected MenuItem userDefinedColour = new MenuItem();
 +  protected CheckboxMenuItem buriedColour = new CheckboxMenuItem();
  
 -  protected MenuItem PIDColour = new MenuItem();
 +  protected CheckboxMenuItem PIDColour = new CheckboxMenuItem();
  
 -  protected MenuItem BLOSUM62Colour = new MenuItem();
 +  protected CheckboxMenuItem BLOSUM62Colour = new CheckboxMenuItem();
  
 -  MenuItem noColourmenuItem = new MenuItem();
 +  CheckboxMenuItem nucleotideColour = new CheckboxMenuItem();
 +
 +  CheckboxMenuItem purinePyrimidineColour = new CheckboxMenuItem();
 +
 +  protected MenuItem userDefinedColour = new MenuItem();
  
    protected CheckboxMenuItem abovePIDColour = new CheckboxMenuItem();
  
    MenuItem modifyPID = new MenuItem();
  
 -  protected CheckboxMenuItem conservationMenuItem = new CheckboxMenuItem();
 +  protected CheckboxMenuItem conservationColour = new CheckboxMenuItem();
  
    MenuItem modifyConservation = new MenuItem();
  
 +  MenuItem noColourmenuItem = new MenuItem();
 +
    final AlignmentPanel ap;
  
    MenuItem unGroupMenuItem = new MenuItem();
  
    MenuItem createGroupMenuItem = new MenuItem();
  
 -  MenuItem nucleotideMenuItem = new MenuItem();
 -
    Menu colourMenu = new Menu();
  
    CheckboxMenuItem showBoxes = new CheckboxMenuItem();
          if (sg.cs != null)
          {
            abovePIDColour.setState(sg.cs.getThreshold() > 0);
 +          conservationColour.setState(sg.cs.conservationApplied());
            modifyPID.setEnabled(abovePIDColour.getState());
 -          conservationMenuItem.setState(sg.cs.conservationApplied());
 -          modifyConservation.setEnabled(conservationMenuItem.getState());
 +          modifyConservation.setEnabled(conservationColour.getState());
          }
        }
 +      setSelectedColour(sg.cs);
      }
      else
      {
    }
  
    /**
 +   * Select the menu item (if any) matching the current colour scheme. This
 +   * works by matching the menu item name (not display text) to the canonical
 +   * name of the colour scheme.
 +   * 
 +   * @param cs
 +   */
 +  protected void setSelectedColour(ColourSchemeI cs)
 +  {
 +    if (cs == null)
 +    {
 +      noColour.setState(true);
 +    }
 +    else
 +    {
 +      for (int i = 0; i < colourMenu.getItemCount(); i++)
 +      {
 +        MenuItem item = colourMenu.getItem(i);
 +        if (item instanceof CheckboxMenuItem)
 +        {
 +          if (cs.getSchemeName().equals(item.getName()))
 +          {
 +            ((CheckboxMenuItem) item).setState(true);
 +          }
 +        }
 +      }
 +    }
 +  }
 +
 +  /**
     * Adds a 'Link' menu item with a sub-menu item for each hyperlink provided.
     * 
     * @param seq
       * Temporary store to hold distinct calcId / type pairs for the tooltip.
       * Using TreeMap means calcIds are shown in alphabetical order.
       */
 -    Map<String, String> tipEntries = new TreeMap<String, String>();
 +    SortedMap<String, String> tipEntries = new TreeMap<String, String>();
      final Map<SequenceI, List<AlignmentAnnotation>> candidates = new LinkedHashMap<SequenceI, List<AlignmentAnnotation>>();
      AlignmentI al = this.ap.av.getAlignment();
      AlignmentUtils.findAddableReferenceAnnotations(forSequences,
      linkMenu.add(item);
    }
  
 +  /**
 +   * Actions on selecting / unselecting a checkbox menu item
 +   */
    @Override
    public void itemStateChanged(ItemEvent evt)
    {
      Object source = evt.getSource();
 -    if (source == abovePIDColour)
 +    if (source == noColour)
      {
 -      abovePIDColour_itemStateChanged();
 -    }
 -    else if (source == conservationMenuItem)
 -    {
 -      conservationMenuItem_itemStateChanged();
 -    }
 -    else if (source == showColourText)
 -    {
 -      showColourText_itemStateChanged();
 +      noColourmenuItem_actionPerformed();
      }
 -    else if (source == showText)
 +    else if (source == clustalColour)
      {
 -      showText_itemStateChanged();
 -    }
 -    else if (source == showBoxes)
 -    {
 -      showBoxes_itemStateChanged();
 +      clustalColour_actionPerformed();
      }
 -    else if (source == displayNonconserved)
 +    else if (source == BLOSUM62Colour)
      {
 -      this.showNonconserved_itemStateChanged();
 +      BLOSUM62Colour_actionPerformed();
      }
 -  }
 -
 -  @Override
 -  public void actionPerformed(ActionEvent evt)
 -  {
 -    Object source = evt.getSource();
 -    if (source == clustalColour)
 +    else if (source == PIDColour)
      {
 -      clustalColour_actionPerformed();
 +      PIDColour_actionPerformed();
      }
      else if (source == zappoColour)
      {
      {
        buriedColour_actionPerformed();
      }
 -    else if (source == nucleotideMenuItem)
 +    else if (source == nucleotideColour)
      {
        nucleotideMenuItem_actionPerformed();
      }
 -
 -    else if (source == userDefinedColour)
 +    else if (source == purinePyrimidineColour)
      {
 -      userDefinedColour_actionPerformed();
 +      purinePyrimidineColour_actionPerformed();
      }
 -    else if (source == PIDColour)
 +    else if (source == abovePIDColour)
      {
 -      PIDColour_actionPerformed();
 +      abovePIDColour_itemStateChanged();
      }
 -    else if (source == BLOSUM62Colour)
 +    else if (source == conservationColour)
      {
 -      BLOSUM62Colour_actionPerformed();
 +      conservationMenuItem_itemStateChanged();
      }
 -    else if (source == noColourmenuItem)
 +    else if (source == showColourText)
      {
 -      noColourmenuItem_actionPerformed();
 +      showColourText_itemStateChanged();
 +    }
 +    else if (source == showText)
 +    {
 +      showText_itemStateChanged();
 +    }
 +    else if (source == showBoxes)
 +    {
 +      showBoxes_itemStateChanged();
 +    }
 +    else if (source == displayNonconserved)
 +    {
 +      this.showNonconserved_itemStateChanged();
 +    }
 +  }
 +
 +  /**
 +   * Actions on clicking a menu item
 +   */
 +  @Override
 +  public void actionPerformed(ActionEvent evt)
 +  {
 +    Object source = evt.getSource();
 +    if (source == userDefinedColour)
 +    {
 +      userDefinedColour_actionPerformed();
      }
      else if (source == modifyConservation)
      {
    void addPDB()
    {
      Vector<PDBEntry> pdbs = seq.getAllPDBEntries();
 -    if (pdbs != null&& !pdbs.isEmpty())
 +    if (pdbs != null && !pdbs.isEmpty())
      {
        PDBEntry entry = pdbs.firstElement();
  
        if (ap.av.applet.jmolAvailable)
        {
 -        new jalview.appletgui.AppletJmol(entry, new SequenceI[] { seq },
 -                null, ap, DataSourceType.URL);
 +        new AppletJmol(entry, new SequenceI[] { seq }, null, ap,
 +                DataSourceType.URL);
        }
        else
        {
        cap.setPDBImport(seq);
        Frame frame = new Frame();
        frame.add(cap);
 -      jalview.bin.JalviewLite.addFrame(frame, MessageManager.formatMessage(
 +      JalviewLite.addFrame(frame, MessageManager.formatMessage(
                "label.paste_pdb_file_for_sequence",
                new Object[] { seq.getName() }), 400, 300);
      }
              .getString("action.create_group"));
      createGroupMenuItem.addActionListener(this);
  
 -    nucleotideMenuItem.setLabel(MessageManager
 -            .getString("label.nucleotide"));
 -    nucleotideMenuItem.addActionListener(this);
 -    conservationMenuItem.addItemListener(this);
 -    abovePIDColour.addItemListener(this);
 -    modifyPID.setLabel(MessageManager
 -            .getString("label.modify_identity_threshold"));
 -    modifyPID.addActionListener(this);
 -    modifyConservation.setLabel(MessageManager
 -            .getString("label.modify_conservation_threshold"));
 -    modifyPID.setEnabled(abovePIDColour.getState());
 -    modifyConservation.setEnabled(conservationMenuItem.getState());
 -    modifyConservation.addActionListener(this);
      colourMenu.setLabel(MessageManager.getString("label.group_colour"));
      showBoxes.setLabel(MessageManager.getString("action.boxes"));
      showBoxes.setState(true);
      sequenceDetails.addActionListener(this);
      selSeqDetails.addActionListener(this);
      displayNonconserved.setLabel(MessageManager
 -            .getString("label.show_non_conversed"));
 +            .getString("label.show_non_conserved"));
      displayNonconserved.setState(false);
      displayNonconserved.addItemListener(this);
      showText.setLabel(MessageManager.getString("action.text"));
      groupMenu.add(unGroupMenuItem);
      groupMenu.add(menu1);
  
 -    colourMenu.add(noColourmenuItem);
 +    colourMenu.add(noColour);
      colourMenu.add(clustalColour);
      colourMenu.add(BLOSUM62Colour);
      colourMenu.add(PIDColour);
      colourMenu.add(strandColour);
      colourMenu.add(turnColour);
      colourMenu.add(buriedColour);
 -    colourMenu.add(nucleotideMenuItem);
 +    colourMenu.add(nucleotideColour);
 +    colourMenu.add(purinePyrimidineColour);
      colourMenu.add(userDefinedColour);
      colourMenu.addSeparator();
 -    colourMenu.add(conservationMenuItem);
 +    colourMenu.add(conservationColour);
      colourMenu.add(modifyConservation);
      colourMenu.add(abovePIDColour);
      colourMenu.add(modifyPID);
  
 -    noColourmenuItem.setLabel(MessageManager.getString("label.none"));
 -    noColourmenuItem.addActionListener(this);
 +    noColour.setLabel(MessageManager.getString("label.none"));
 +    noColour.addItemListener(this);
  
 +    /*
 +     * setName allows setSelectedColour to do its thing
 +     */
      clustalColour.setLabel(MessageManager
 -            .getString("label.clustalx_colours"));
 -    clustalColour.addActionListener(this);
 -    zappoColour.setLabel(MessageManager.getString("label.zappo"));
 -    zappoColour.addActionListener(this);
 -    taylorColour.setLabel(MessageManager.getString("label.taylor"));
 -    taylorColour.addActionListener(this);
 +            .getString("label.colourScheme_clustal"));
 +    clustalColour.setName(JalviewColourScheme.Clustal.toString());
 +    clustalColour.addItemListener(this);
 +    BLOSUM62Colour.setLabel(MessageManager
 +            .getString("label.colourScheme_blosum62"));
 +    BLOSUM62Colour.setName(JalviewColourScheme.Blosum62.toString());
 +    BLOSUM62Colour.addItemListener(this);
 +    PIDColour.setLabel(MessageManager
 +            .getString("label.colourScheme_%_identity"));
 +    PIDColour.setName(JalviewColourScheme.PID.toString());
 +    PIDColour.addItemListener(this);
 +    zappoColour.setLabel(MessageManager
 +            .getString("label.colourScheme_zappo"));
 +    zappoColour.setName(JalviewColourScheme.Zappo.toString());
 +    zappoColour.addItemListener(this);
 +    taylorColour.setLabel(MessageManager
 +            .getString("label.colourScheme_taylor"));
 +    taylorColour.setName(JalviewColourScheme.Taylor.toString());
 +    taylorColour.addItemListener(this);
      hydrophobicityColour.setLabel(MessageManager
 -            .getString("label.hydrophobicity"));
 -    hydrophobicityColour.addActionListener(this);
 -    helixColour
 -            .setLabel(MessageManager.getString("label.helix_propensity"));
 -    helixColour.addActionListener(this);
 +            .getString("label.colourScheme_hydrophobic"));
 +    hydrophobicityColour
 +            .setName(JalviewColourScheme.Hydrophobic.toString());
 +    hydrophobicityColour.addItemListener(this);
 +    helixColour.setLabel(MessageManager
 +            .getString("label.colourScheme_helix_propensity"));
 +    helixColour.setName(JalviewColourScheme.Helix.toString());
 +    helixColour.addItemListener(this);
      strandColour.setLabel(MessageManager
 -            .getString("label.strand_propensity"));
 -    strandColour.addActionListener(this);
 -    turnColour.setLabel(MessageManager.getString("label.turn_propensity"));
 -    turnColour.addActionListener(this);
 -    buriedColour.setLabel(MessageManager.getString("label.buried_index"));
 -    buriedColour.addActionListener(this);
 -    abovePIDColour.setLabel(MessageManager
 -            .getString("label.above_identity_percentage"));
 +            .getString("label.colourScheme_strand_propensity"));
 +    strandColour.setName(JalviewColourScheme.Strand.toString());
 +    strandColour.addItemListener(this);
 +    turnColour.setLabel(MessageManager
 +            .getString("label.colourScheme_turn_propensity"));
 +    turnColour.setName(JalviewColourScheme.Turn.toString());
 +    turnColour.addItemListener(this);
 +    buriedColour.setLabel(MessageManager
 +            .getString("label.colourScheme_buried_index"));
 +    buriedColour.setName(JalviewColourScheme.Buried.toString());
 +    buriedColour.addItemListener(this);
 +    nucleotideColour.setLabel(MessageManager
 +            .getString("label.colourScheme_nucleotide"));
 +    nucleotideColour.setName(JalviewColourScheme.Nucleotide.toString());
 +    nucleotideColour.addItemListener(this);
 +    purinePyrimidineColour.setLabel(MessageManager
 +            .getString("label.colourScheme_purine/pyrimidine"));
 +    purinePyrimidineColour.setName(JalviewColourScheme.PurinePyrimidine
 +            .toString());
 +    purinePyrimidineColour.addItemListener(this);
  
      userDefinedColour.setLabel(MessageManager
              .getString("action.user_defined"));
      userDefinedColour.addActionListener(this);
 -    PIDColour.setLabel(MessageManager
 -            .getString("label.percentage_identity"));
 +
 +    abovePIDColour.setLabel(MessageManager
 +            .getString("label.above_identity_threshold"));
 +    abovePIDColour.addItemListener(this);
 +    modifyPID.setLabel(MessageManager
 +            .getString("label.modify_identity_threshold"));
 +    modifyPID.addActionListener(this);
 +    conservationColour.setLabel(MessageManager
 +            .getString("action.by_conservation"));
 +    conservationColour.addItemListener(this);
 +    modifyConservation.setLabel(MessageManager
 +            .getString("label.modify_conservation_threshold"));
 +    modifyConservation.addActionListener(this);
 +
+     PIDColour.addActionListener(this);
 -    BLOSUM62Colour.setLabel("BLOSUM62");
+     BLOSUM62Colour.addActionListener(this);
 -    conservationMenuItem.setLabel(MessageManager
 -            .getString("action.by_conservation"));
      editMenu.add(copy);
      copy.addActionListener(this);
      editMenu.add(cut);
      refresh();
    }
  
 +  public void purinePyrimidineColour_actionPerformed()
 +  {
 +    getGroup().cs = new PurinePyrimidineColourScheme();
 +    refresh();
 +  }
 +
    protected void abovePIDColour_itemStateChanged()
    {
      SequenceGroup sg = getGroup();
        return;
      }
  
 -    if (conservationMenuItem.getState())
 +    if (conservationColour.getState())
      {
        sg.cs.setConservation(Conservation.calculateConservation("Group", sg
                .getSequences(ap.av.getHiddenRepSequences()), 0, ap.av
        SliderPanel.hideConservationSlider();
        sg.cs.setConservation(null);
      }
 -    modifyConservation.setEnabled(conservationMenuItem.getState());
 +    modifyConservation.setEnabled(conservationColour.getState());
      refresh();
    }
  
@@@ -186,20 -186,20 +186,20 @@@ public class SliderPanel extends Panel 
      if (PIDSlider != null)
      {
        PIDSlider.setVisible(false);
+       PIDSlider = null;
      }
    }
  
    /**
 -   * Hides the conservation slider panel if it is shown
 +   * Hides the Conservation slider panel if it is shown
     */
    public static void hideConservationSlider()
    {
      if (conservationSlider != null)
      {
        conservationSlider.setVisible(false);
+       conservationSlider = null;
      }
-     conservationSlider = null;
    }
    public SliderPanel(AlignmentPanel ap, int value, boolean forConserve,
            ColourSchemeI cs)
@@@ -1186,7 -1186,7 +1186,7 @@@ public class Jalview2XM
              }
              else
              {
 -              jGroup.setColour(ColourSchemeProperty.getColourName(sg.cs));
 +              jGroup.setColour(sg.cs.getSchemeName());
              }
            }
            else if (sg.cs instanceof jalview.schemes.AnnotationColourGradient)
            }
            else
            {
 -            jGroup.setColour(ColourSchemeProperty.getColourName(sg.cs));
 +            jGroup.setColour(sg.cs.getSchemeName());
            }
  
            jGroup.setPidThreshold(sg.cs.getThreshold());
      }
      else
      {
 -      ac.setColourScheme(ColourSchemeProperty.getColourName(acg
 -              .getBaseColour()));
 +      ac.setColourScheme(ColourSchemeProperty.getColourName(acg.getBaseColour()));
      }
  
      ac.setMaxColour(acg.getMaxColour().getRGB());
            }
            else
            {
 -            cs = ColourSchemeProperty.getColour(al, jGroup.getColour());
 +            cs = ColourSchemeProperty.getColourScheme(al, jGroup.getColour());
            }
  
            if (cs != null)
            {
              cs.setThreshold(jGroup.getPidThreshold(), true);
+             cs.setConservationInc(jGroup.getConsThreshold());
            }
          }
  
        }
        else
        {
 -        cs = ColourSchemeProperty.getColour(al, view.getBgColour());
 +        cs = ColourSchemeProperty.getColourScheme(al, view.getBgColour());
        }
  
        if (cs != null)
                      );
            }
  
 -          if (viewAnnColour.getColourScheme().equals("None"))
 +          if (viewAnnColour.getColourScheme().equals(
 +                  ResidueColourScheme.NONE))
            {
              cs = new AnnotationColourGradient(
                      annAlignment.getAlignmentAnnotation()[i],
            {
              cs = new AnnotationColourGradient(
                      annAlignment.getAlignmentAnnotation()[i],
 -                    ColourSchemeProperty.getColour(al,
 +                    ColourSchemeProperty.getColourScheme(al,
                              viewAnnColour.getColourScheme()),
                      viewAnnColour.getAboveThreshold());
            }
                }
  
                /*
 -               * if (viewAnnColour.getColourScheme().equals("None" )) { sg.cs =
 +               * if (viewAnnColour.getColourScheme().equals(ResidueColourScheme.NONE)) { sg.cs =
                 * new AnnotationColourGradient(
                 * annAlignment.getAlignmentAnnotation()[i], new
                 * java.awt.Color(viewAnnColour. getMinColour()), new