JAL-885 - catch race condition when rna structure width is different to alignment...
[jalview.git] / src / jalview / renderer / AnnotationRenderer.java
index c3d4ef5..0d7d4ca 100644 (file)
@@ -37,7 +37,7 @@ public class AnnotationRenderer
     int x2 = (x * charWidth);
     Regex closeparen = new Regex("(\\))");
   
-    String dc = column == 0 ? ""
+    String dc = (column == 0 || row.annotations[column-1]==null) ? ""
             : row.annotations[column - 1].displayCharacter;
   
     boolean diffupstream = sCol == 0 || row.annotations[sCol - 1] == null
@@ -163,7 +163,8 @@ public class AnnotationRenderer
     {
       if (aa.autoCalculated && aa.label.startsWith("StrucConsensus"))
       {
-        if (aa.groupRef != null && aa.groupRef.consensusData != null
+        // TODO implement group structure consensus
+        /* if (aa.groupRef != null && aa.groupRef.consensusData != null
                 && aa.groupRef.isShowSequenceLogo())
         {
           //TODO check what happens for group selections
@@ -171,11 +172,12 @@ public class AnnotationRenderer
                   aa.groupRef.consensusData[column], aa.groupRef
                           .getIgnoreGapsConsensus());
         }
+        */
         // TODO extend annotation row to enable dynamic and static profile data
         // to
         // be stored
         if (aa.groupRef == null && aa.sequenceRef == null
-                && av_renderProfile)
+                && av_renderProfile && hStrucConsensus!=null && hStrucConsensus.length>column)
         {
           return StructureFrequency.extractProfile(hStrucConsensus[column],
                   av_ignoreGapsConsensus);
@@ -344,7 +346,11 @@ public class AnnotationRenderer
               }
             }
           }
-  
+          if (!row.isValidStruc())
+          {
+            g.setColor(Color.orange);
+            g.fillRect((int)row.getInvalidStrucPos()*charWidth, y, charWidth, charHeight);
+          }
           if (validCharWidth
                   && validRes
                   && row.annotations[column].displayCharacter != null
@@ -471,6 +477,15 @@ public class AnnotationRenderer
       {
         validEnd = true;
       }
+      if ((row.annotations == null) || (row.annotations.length <= column)
+              || (row.annotations[column] == null))
+      {
+        validRes = false;
+      }
+      else
+      {
+        validRes = true;
+      }
   
       // x ++;