import jalview.datamodel.CigarArray;
import jalview.datamodel.ColumnSelection;
import jalview.datamodel.HiddenSequences;
-import jalview.datamodel.SearchResults;
+import jalview.datamodel.ProfilesI;
+import jalview.datamodel.SearchResultsI;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceCollectionI;
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.schemes.ResidueProperties;
import jalview.structure.CommandListener;
import jalview.structure.StructureSelectionManager;
import jalview.structure.VamsasSource;
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.setConservationApplied(recalc = getConservationSelected());
+ recalc = getConservationSelected();
if (getAbovePIDThreshold() || cs instanceof PIDColourScheme
|| 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.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.applyTo(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;
}
/**
* results of alignment consensus analysis for visible portion of view
*/
- protected Hashtable[] hconsensus = null;
+ protected ProfilesI hconsensus = null;
/**
* results of cDNA complement consensus visible portion of view
}
@Override
- public void setSequenceConsensusHash(Hashtable[] hconsensus)
+ public void setSequenceConsensusHash(ProfilesI hconsensus)
{
this.hconsensus = hconsensus;
}
}
@Override
- public Hashtable[] getSequenceConsensusHash()
+ public ProfilesI getSequenceConsensusHash()
{
return hconsensus;
}
groupConservation = null;
hconsensus = null;
hcomplementConsensus = null;
- // TODO removed listeners from changeSupport?
+ // colour scheme may hold reference to consensus
+ globalColourScheme = null;
+ // TODO remove listeners from changeSupport?
changeSupport = null;
setAlignment(null);
}
public boolean isHiddenRepSequence(SequenceI seq)
{
return (hiddenRepSequences != null && hiddenRepSequences
- .containsKey(seq));
+ .containsKey(seq));
}
/**
*/
void resetAllColourSchemes()
{
- ColourSchemeI cs = globalColourScheme;
+ CollectionColourScheme cs = globalColourScheme;
if (cs != null)
{
cs.alignmentChanged(alignment, hiddenRepSequences);
if (cs.conservationApplied())
{
cs.setConservation(Conservation.calculateConservation("All",
- ResidueProperties.propHash, 3, alignment.getSequences(), 0,
- alignment.getWidth(), false, getConsPercGaps(), false));
+ alignment.getSequences(), 0, alignment.getWidth(), false,
+ getConsPercGaps(), false));
}
}
* the SearchResults to add to
* @return the offset (below top of visible region) of the matched sequence
*/
- protected int findComplementScrollTarget(SearchResults sr)
+ protected int findComplementScrollTarget(SearchResultsI sr)
{
final AlignViewportI complement = getCodingComplement();
if (complement == null || !complement.isFollowHighlight())
public void expandColSelection(SequenceGroup sg, boolean wholewidth)
{
int sgs, sge;
- if (sg != null
- && (sgs = sg.getStartRes()) >= 0
+ if (sg != null && (sgs = sg.getStartRes()) >= 0
&& sg.getStartRes() <= (sge = sg.getEndRes())
&& !this.hasSelectedColumns())
{
*/
private boolean selectionIsDefinedGroup = false;
+
@Override
public boolean isSelectionDefinedGroup()
{
return selectionGroup.getContext() == alignment
|| selectionIsDefinedGroup;
}
+
+ /**
+ * null, or currently highlighted results on this view
+ */
+ private SearchResultsI searchResults = null;
+
+ @Override
+ public boolean hasSearchResults()
+ {
+ return searchResults != null;
+ }
+
+ @Override
+ public void setSearchResults(SearchResultsI results)
+ {
+ searchResults = results;
+ }
+
+ @Override
+ public SearchResultsI getSearchResults()
+ {
+ return searchResults;
+ }
}