X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fschemes%2FResidueColourScheme.java;h=03fc129a2e99b8747c35a3709ad5fae405b7c37f;hb=10eedfb43dacd4cf32d4b5fe27d8d5987c70eaf8;hp=6a2a479244c4c9d52ea709fb2dedc34796a69cea;hpb=8e1be43e250107a4d86898bd554cf03098fa5957;p=jalview.git diff --git a/src/jalview/schemes/ResidueColourScheme.java b/src/jalview/schemes/ResidueColourScheme.java index 6a2a479..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; @@ -84,23 +85,20 @@ public abstract class ResidueColourScheme implements ColourSchemeI } /** - * Returns the colour for symbol 'A'. Intended for use in a 'fixed colour' - * colour scheme (for example a feature colour). - */ - @Override - public Color findColour() - { - // TODO delete this method in favour of ColorUtils.parseColourString()? - return findColour('A'); - } - - /** * 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; } /** @@ -115,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 @@ -147,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())