import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
import jalview.schemes.Blosum62ColourScheme;
+import jalview.schemes.CollectionColourScheme;
+import jalview.schemes.CollectionColourSchemeI;
import jalview.schemes.ColourSchemeI;
import jalview.schemes.PIDColourScheme;
import jalview.structure.CommandListener;
protected boolean ignoreGapsInConsensusCalculation = false;
- protected ColourSchemeI globalColourScheme = null;
+ protected CollectionColourScheme globalColourScheme;
@Override
public void setGlobalColourScheme(ColourSchemeI cs)
// - means that caller decides if they want to just modify state and defer
// calculation till later or to do all calculations in thread.
// via changecolour
- globalColourScheme = cs;
+
+ /*
+ * only instantiate colour scheme once, thereafter update it
+ */
+ if (globalColourScheme == null)
+ {
+ globalColourScheme = new CollectionColourScheme();
+ }
+ globalColourScheme.setColourScheme(cs);
+
boolean recalc = false;
if (cs != null)
{
|| cs instanceof Blosum62ColourScheme)
{
recalc = true;
- cs.setThreshold(viewStyle.getThreshold(),
+ globalColourScheme.setThreshold(viewStyle.getThreshold(),
ignoreGapsInConsensusCalculation);
}
else
{
- cs.setThreshold(0, ignoreGapsInConsensusCalculation);
+ globalColourScheme
+ .setThreshold(0, ignoreGapsInConsensusCalculation);
}
if (recalc)
{
- cs.setConsensus(hconsensus);
- cs.setConservation(hconservation);
+ globalColourScheme.setConsensus(hconsensus);
+ globalColourScheme.setConservation(hconservation);
}
- cs.setConservationApplied(getConservationSelected());
- cs.alignmentChanged(alignment, hiddenRepSequences);
+ globalColourScheme.setConservationApplied(getConservationSelected());
+ globalColourScheme.alignmentChanged(alignment, hiddenRepSequences);
}
if (getColourAppliesToAllGroups())
{
{
if (cs == null)
{
- sg.cs = null;
+ sg.setColourScheme(null);
continue;
}
- sg.cs = cs.getInstance(sg, getHiddenRepSequences());
+ CollectionColourScheme groupColour = new CollectionColourScheme(cs.getInstance(sg,
+ getHiddenRepSequences()));
+ sg.setGroupColourScheme(groupColour);
sg.setConsPercGaps(ConsPercGaps);
if (getAbovePIDThreshold() || cs instanceof PIDColourScheme
|| cs instanceof Blosum62ColourScheme)
{
- sg.cs.setThreshold(viewStyle.getThreshold(),
+ groupColour.setThreshold(viewStyle.getThreshold(),
isIgnoreGapsConsensus());
recalc = true;
}
else
{
- sg.cs.setThreshold(0, isIgnoreGapsConsensus());
+ groupColour.setThreshold(0, isIgnoreGapsConsensus());
}
if (getConservationSelected())
{
- sg.cs.setConservationApplied(true);
+ groupColour.setConservationApplied(true);
recalc = true;
}
else
{
- sg.cs.setConservation(null);
+ groupColour.setConservation(null);
// sg.cs.setThreshold(0, getIgnoreGapsConsensus());
}
if (recalc)
}
else
{
- sg.cs.alignmentChanged(sg, hiddenRepSequences);
+ groupColour.alignmentChanged(sg, hiddenRepSequences);
}
}
}
@Override
public ColourSchemeI getGlobalColourScheme()
{
+ return globalColourScheme == null ? null : globalColourScheme
+ .getColourScheme();
+ }
+
+ @Override
+ public CollectionColourSchemeI getViewportColourScheme()
+ {
return globalColourScheme;
}
*/
void resetAllColourSchemes()
{
- ColourSchemeI cs = globalColourScheme;
+ CollectionColourScheme cs = globalColourScheme;
if (cs != null)
{
cs.alignmentChanged(alignment, hiddenRepSequences);