(JAL-812,JAL-811) - generic test for 'calculation involving annotation' in progress...
[jalview.git] / src / jalview / workers / ConservationThread.java
index bd025a5..7d5c661 100644 (file)
@@ -17,6 +17,9 @@
  */
 package jalview.workers;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import jalview.analysis.Conservation;
 import jalview.api.AlignCalcWorkerI;
 import jalview.api.AlignmentViewPanel;
@@ -34,7 +37,10 @@ public class ConservationThread extends AlignCalcWorker implements AlignCalcWork
     super(alignViewport, alignPanel);
     ConsPercGaps = alignViewport.getConsPercGaps();
   }
-
+  
+  private Conservation cons;
+  AlignmentAnnotation conservation,quality;
+  int alWidth;
   public void run()
   {
     try
@@ -58,13 +64,15 @@ public class ConservationThread extends AlignCalcWorker implements AlignCalcWork
       if (alignViewport.isClosed()) {
         abortAndDestroy();
       }
-
+      List<AlignmentAnnotation>ourAnnot = new ArrayList<AlignmentAnnotation>();
       AlignmentI alignment=alignViewport.getAlignment();
-      AlignmentAnnotation conservation=alignViewport.getAlignmentConservationAnnotation();
-      AlignmentAnnotation quality=alignViewport.getAlignmentQualityAnnot();
+      conservation=alignViewport.getAlignmentConservationAnnotation();
+      quality=alignViewport.getAlignmentQualityAnnot();
+      ourAnnot.add(conservation);
+      ourAnnot.add(quality);
+      ourAnnots = ourAnnot;
+      
       // AlignViewport.UPDATING_CONSERVATION = true;
-
-      int alWidth;
       
       if (alignment==null || (alWidth=alignment.getWidth())< 0)
       {
@@ -75,11 +83,10 @@ public class ConservationThread extends AlignCalcWorker implements AlignCalcWork
         return;
       }
 
-      Conservation cons = Conservation.calculateConservation("All",
+      cons = Conservation.calculateConservation("All",
               jalview.schemes.ResidueProperties.propHash, 3,
               alignment.getSequences(), 0, alWidth - 1, false, ConsPercGaps, quality!=null);
-      cons.completeAnnotations(conservation,
-              quality, 0, alWidth);
+      updateResultAnnotation(true);
     } catch (OutOfMemoryError error)
     {
       ap.raiseOOMWarning("calculating conservation", error);
@@ -96,4 +103,17 @@ public class ConservationThread extends AlignCalcWorker implements AlignCalcWork
     }
 
   }
+
+  private void updateResultAnnotation(boolean b)
+  {
+    if (b || !calcMan.isWorking(this) && cons!=null && conservation!=null && quality!=null)
+    cons.completeAnnotations(conservation,
+            quality, 0, alWidth);
+  }
+  @Override
+  public void updateAnnotation()
+  {
+    updateResultAnnotation(false);
+    
+  }
 }