JAL-952 refactor code to select annotation for colouring the alignment
authorJim Procter <jprocter@dundee.ac.uk>
Sun, 27 Apr 2014 15:12:42 +0000 (16:12 +0100)
committerJim Procter <jprocter@dundee.ac.uk>
Sun, 27 Apr 2014 15:12:42 +0000 (16:12 +0100)
src/jalview/schemes/RNAHelicesColour.java
src/jalview/schemes/RNAHelicesColourChooser.java

index 7cbca66..06553f0 100644 (file)
@@ -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<SequenceI, SequenceCollectionI> 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();
index 45c374d..bcac5c7 100644 (file)
@@ -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);
 
       }
     }