Merge branch 'develop' into merge/JAL-3127
authorgmungoc <g.m.carstairs@dundee.ac.uk>
Mon, 11 Mar 2019 15:07:39 +0000 (15:07 +0000)
committergmungoc <g.m.carstairs@dundee.ac.uk>
Mon, 11 Mar 2019 15:07:39 +0000 (15:07 +0000)
Conflicts:
src/jalview/viewmodel/AlignmentViewport.java

1  2 
src/jalview/project/Jalview2XML.java
src/jalview/viewmodel/AlignmentViewport.java
test/jalview/project/Jalview2xmlTests.java

@@@ -3859,7 -3859,7 +3859,7 @@@ public class Jalview2XM
            }
            else
            {
 -            cs = ColourSchemeProperty.getColourScheme(al,
 +            cs = ColourSchemeProperty.getColourScheme(null, al,
                      jGroup.getColour());
            }
          }
        }
        else
        {
 -        cs = ColourSchemeProperty.getColourScheme(al, view.getBgColour());
 +        cs = ColourSchemeProperty.getColourScheme(af.getViewport(), al,
 +                view.getBgColour());
        }
      }
  
+     /*
+      * turn off 'alignment colour applies to all groups'
+      * while restoring global colour scheme
+      */
+     viewport.setColourAppliesToAllGroups(false);
      viewport.setGlobalColourScheme(cs);
      viewport.getResidueShading().setThreshold(pidThreshold,
              view.isIgnoreGapsinConsensus());
      viewport.getResidueShading()
              .setConsensus(viewport.getSequenceConsensusHash());
-     viewport.setColourAppliesToAllGroups(false);
      if (safeBoolean(view.isConservationSelected()) && cs != null)
      {
        viewport.getResidueShading()
                .setConservationInc(safeInt(view.getConsThreshold()));
      }
      af.changeColour(cs);
      viewport.setColourAppliesToAllGroups(true);
  
      viewport
      else
      {
        cs = new AnnotationColourGradient(matchedAnnotation,
 -              ColourSchemeProperty.getColourScheme(al,
 +              ColourSchemeProperty.getColourScheme(af.getViewport(), al,
                        viewAnnColour.getColourScheme()),
                safeInt(viewAnnColour.getAboveThreshold()));
      }
@@@ -662,7 -662,8 +662,8 @@@ public abstract class AlignmentViewpor
           * retain any colour thresholds per group while
           * changing choice of colour scheme (JAL-2386)
           */
-         sg.setColourScheme(cs.getInstance(this, sg));
+         sg.setColourScheme(
 -                cs == null ? null : cs.getInstance(sg, hiddenRepSequences));
++                cs == null ? null : cs.getInstance(this, sg));
          if (cs != null)
          {
            sg.getGroupColourScheme().alignmentChanged(sg,
    {
      return currentTree;
    }
 +
 +  /**
 +   * flag set to indicate if structure views might be out of sync with sequences
 +   * in the alignment
 +   */
 +
 +  private boolean needToUpdateStructureViews = false;
 +
 +  @Override
 +  public boolean isUpdateStructures()
 +  {
 +    return needToUpdateStructureViews;
 +  }
 +
 +  @Override
 +  public void setUpdateStructures(boolean update)
 +  {
 +    needToUpdateStructureViews = update;
 +  }
 +
 +  @Override
 +  public boolean needToUpdateStructureViews()
 +  {
 +    boolean update = needToUpdateStructureViews;
 +    needToUpdateStructureViews = false;
 +    return update;
 +  }
 +
 +  @Override
 +  public void addSequenceGroup(SequenceGroup sequenceGroup)
 +  {
 +    alignment.addGroup(sequenceGroup);
 +
 +    Color col = sequenceGroup.idColour;
 +    if (col != null)
 +    {
 +      col = col.brighter();
 +
 +      for (SequenceI sq : sequenceGroup.getSequences())
 +      {
 +        setSequenceColour(sq, col);
 +      }
 +    }
 +
 +    if (codingComplement != null)
 +    {
 +      SequenceGroup mappedGroup = MappingUtils
 +              .mapSequenceGroup(sequenceGroup, this, codingComplement);
 +      if (mappedGroup.getSequences().size() > 0)
 +      {
 +        codingComplement.getAlignment().addGroup(mappedGroup);
 +
 +        if (col != null)
 +        {
 +          for (SequenceI seq : mappedGroup.getSequences())
 +          {
 +            codingComplement.setSequenceColour(seq, col);
 +          }
 +        }
 +      }
 +      // propagate the structure view update flag according to our own setting
 +      codingComplement.setUpdateStructures(needToUpdateStructureViews);
 +    }
 +  }
  }
@@@ -147,13 -147,12 +147,13 @@@ public class Jalview2xmlTests extends J
              DataSourceType.FILE);
      assertNotNull(af, "Didn't read input file " + inFile);
      af.loadJalviewDataFile(inAnnot, DataSourceType.FILE, null, null);
 -    assertSame(af.getViewport().getGlobalColourScheme().getClass(),
 +    AlignViewport viewport = af.getViewport();
 +    assertSame(viewport.getGlobalColourScheme().getClass(),
              TCoffeeColourScheme.class, "Didn't set T-coffee colourscheme");
      assertNotNull(
 -            ColourSchemeProperty.getColourScheme(
 -                    af.getViewport().getAlignment(),
 -                    af.getViewport().getGlobalColourScheme()
 +            ColourSchemeProperty.getColourScheme(viewport,
 +                    viewport.getAlignment(),
 +                    viewport.getGlobalColourScheme()
                              .getSchemeName()),
              "Recognise T-Coffee score from string");
  
      af = new FileLoader().LoadFileWaitTillLoaded(tfile,
              DataSourceType.FILE);
      assertNotNull(af, "Failed to import new project");
 -    assertSame(af.getViewport().getGlobalColourScheme().getClass(),
 +    assertSame(viewport.getGlobalColourScheme().getClass(),
              TCoffeeColourScheme.class,
              "Didn't set T-coffee colourscheme for imported project.");
      System.out.println(
      /*
       * Colour alignment by Buried Index, Above 10% PID, By Conservation 20%
       */
+     av.setColourAppliesToAllGroups(false);
      af.changeColour_actionPerformed(JalviewColourScheme.Buried.toString());
      assertTrue(av.getGlobalColourScheme() instanceof BuriedColourScheme);
      af.abovePIDThreshold_actionPerformed(true);