From 5b29190f1ea9500d3ad9f690ffb359f6aab17b80 Mon Sep 17 00:00:00 2001 From: Jim Procter Date: Sun, 27 Apr 2014 16:12:42 +0100 Subject: [PATCH] JAL-952 refactor code to select annotation for colouring the alignment --- src/jalview/schemes/RNAHelicesColour.java | 33 ++++++++++++++++++++-- src/jalview/schemes/RNAHelicesColourChooser.java | 23 ++------------- 2 files changed, 33 insertions(+), 23 deletions(-) diff --git a/src/jalview/schemes/RNAHelicesColour.java b/src/jalview/schemes/RNAHelicesColour.java index 7cbca66..06553f0 100644 --- a/src/jalview/schemes/RNAHelicesColour.java +++ b/src/jalview/schemes/RNAHelicesColour.java @@ -20,8 +20,11 @@ package jalview.schemes; import java.awt.*; import java.util.Hashtable; +import java.util.Map; import jalview.datamodel.AlignmentAnnotation; +import jalview.datamodel.AnnotatedCollectionI; +import jalview.datamodel.SequenceCollectionI; import jalview.datamodel.SequenceI; /** @@ -62,14 +65,40 @@ public class RNAHelicesColour extends ResidueColourScheme this.annotation = annotation; refresh(); } + public RNAHelicesColour(AnnotatedCollectionI alignment) + { + super(ResidueProperties.nucleotideIndex); + alignmentChanged(alignment, null); + } + + @Override + public void alignmentChanged(AnnotatedCollectionI alignment, + Map hiddenReps) + { + // This loop will find the first rna structure annotation by which to colour + // the sequences. + AlignmentAnnotation[] annotations = alignment.getAlignmentAnnotation(); + for (int i = 0; i < annotations.length; i++) { + + // is this a sensible way of determining type of annotation? + if (annotations[i].getRNAStruc() != null) { + annotation = annotations[i]; + break; + } + } + + refresh(); + + } private long lastrefresh = -1; public void refresh() { - if ((annotation._rnasecstr == null + + if (annotation!=null && ((annotation._rnasecstr == null || lastrefresh != annotation._rnasecstr.hashCode()) - && annotation.isValidStruc()) + && annotation.isValidStruc())) { annotation.getRNAStruc(); lastrefresh = annotation._rnasecstr.hashCode(); diff --git a/src/jalview/schemes/RNAHelicesColourChooser.java b/src/jalview/schemes/RNAHelicesColourChooser.java index 45c374d..bcac5c7 100644 --- a/src/jalview/schemes/RNAHelicesColourChooser.java +++ b/src/jalview/schemes/RNAHelicesColourChooser.java @@ -97,28 +97,9 @@ public class RNAHelicesColourChooser { return; } - - // This loop will find the first rna structure annotation by which to colour - // the sequences. - AlignmentAnnotation[] annotations = av.getAlignment().getAlignmentAnnotation(); - for (int i = 0; i < annotations.length; i++) { - - // is this a sensible way of determining type of annotation? - if (annotations[i].getRNAStruc() != null) { - currentAnnotation = annotations[i]; - break; - } - } - if (currentAnnotation == null) - { - System.err.println("Jalview is about to try and colour by RNAHelices even" - + " though there are no RNA secondary structure annotations present!"); - currentAnnotation = av.getAlignment().getAlignmentAnnotation()[0];// annotations.getSelectedIndex()]; - } - RNAHelicesColour rhc = null; - rhc = new RNAHelicesColour(currentAnnotation); + rhc = new RNAHelicesColour(av.getAlignment()); av.setGlobalColourScheme(rhc); @@ -131,7 +112,7 @@ public class RNAHelicesColourChooser continue; } - sg.cs = new RNAHelicesColour(currentAnnotation); + sg.cs = new RNAHelicesColour(sg); } } -- 1.7.10.2