X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fschemes%2FResidueColourScheme.java;h=03fc129a2e99b8747c35a3709ad5fae405b7c37f;hb=a45b4529c64901e9e4b53b6c74ee804370c91002;hp=fc8b1b13ca5d67207bf70c26a5f527758812418e;hpb=09d9063e70931a6cb75d16b230f5cd0665f0f340;p=jalview.git diff --git a/src/jalview/schemes/ResidueColourScheme.java b/src/jalview/schemes/ResidueColourScheme.java index fc8b1b1..03fc129 100755 --- a/src/jalview/schemes/ResidueColourScheme.java +++ b/src/jalview/schemes/ResidueColourScheme.java @@ -20,10 +20,11 @@ */ package jalview.schemes; -import jalview.datamodel.AlignmentI; import jalview.datamodel.AnnotatedCollectionI; import jalview.datamodel.SequenceCollectionI; +import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; +import jalview.util.Comparison; import java.awt.Color; import java.util.Map; @@ -86,10 +87,18 @@ public abstract class ResidueColourScheme implements ColourSchemeI /** * Find a colour without an index in a sequence */ - @Override public Color findColour(char c) { - return colors == null ? Color.white : colors[symbolIndex[c]]; + Color colour = Color.white; + + if (!Comparison.isGap(c) && colors != null && symbolIndex != null + && c < symbolIndex.length + && symbolIndex[c] < colors.length) + { + colour = colors[symbolIndex[c]]; + } + + return colour; } /** @@ -104,18 +113,19 @@ public abstract class ResidueColourScheme implements ColourSchemeI return findColour(c, j, seq); } + /** + * Default implementation looks up the residue colour in a fixed scheme, or + * returns White if not found. Override this method for a colour scheme that + * depends on the column position or sequence. + * + * @param c + * @param j + * @param seq + * @return + */ protected Color findColour(char c, int j, SequenceI seq) { - Color colour = Color.white; - - if (colors != null && symbolIndex != null && c < symbolIndex.length - && symbolIndex[c] < colors.length) - { - colour = colors[symbolIndex[c]]; - } - // colour = adjustColour(c, j, colour); - - return colour; + return findColour(c); } @Override @@ -136,30 +146,26 @@ public abstract class ResidueColourScheme implements ColourSchemeI { return true; } - - /* - * inspect the data context (alignment) for residue type - */ - boolean nucleotide = false; - if (ac instanceof AlignmentI) + if (ac == null) { - nucleotide = ((AlignmentI) ac).isNucleotide(); + return true; } - else + /* + * pop-up menu on selection group before group created + * (no alignment context) + */ + // TODO: add nucleotide flag to SequenceGroup? + if (ac instanceof SequenceGroup && ac.getContext() == null) { - AnnotatedCollectionI context = ac.getContext(); - if (context instanceof AlignmentI) - { - nucleotide = ((AlignmentI) context).isNucleotide(); - } - else - { - // not sure what's going on, play safe - return true; - } + return true; } /* + * inspect the data context (alignment) for residue type + */ + boolean nucleotide = ac.isNucleotide(); + + /* * does data type match colour scheme type? */ return (nucleotide && isNucleotideSpecific())