JAL - 3690 AlignCalc rebuilt - FutureTask-based manager
[jalview.git] / src / jalview / workers / ConservationThread.java
index 11ec521..3752841 100644 (file)
@@ -51,72 +51,49 @@ public class ConservationThread extends AlignCalcWorker
   @Override
   public void run()
   {
-    try
+    if ((alignViewport == null) || (calcMan == null)
+            || (alignViewport.isClosed()))
     {
-      calcMan.notifyStart(this); // updatingConservation = true;
-
-      while (!calcMan.notifyWorking(this))
-      {
-        try
-        {
-          if (ap != null)
-          {
-            // ap.paintAlignment(false);
-          }
-          Thread.sleep(200);
-        } catch (Exception ex)
-        {
-          ex.printStackTrace();
-        }
-      }
-      if (alignViewport.isClosed())
-      {
-        abortAndDestroy();
-        return;
-      }
-      List<AlignmentAnnotation> ourAnnot = new ArrayList<AlignmentAnnotation>();
-      AlignmentI alignment = alignViewport.getAlignment();
-      conservation = alignViewport.getAlignmentConservationAnnotation();
-      quality = alignViewport.getAlignmentQualityAnnot();
-      ourAnnot.add(conservation);
-      ourAnnot.add(quality);
-      ourAnnots = ourAnnot;
-      ConsPercGaps = alignViewport.getConsPercGaps();
-      // AlignViewport.UPDATING_CONSERVATION = true;
-
-      if (alignment == null || (alWidth = alignment.getWidth()) < 0)
-      {
-        calcMan.workerComplete(this);
-        // .updatingConservation = false;
-        // AlignViewport.UPDATING_CONSERVATION = false;
+      abortAndDestroy();
+      return;
+    }
+    List<AlignmentAnnotation> ourAnnot = new ArrayList<>();
+    AlignmentI alignment = alignViewport.getAlignment();
+    conservation = alignViewport.getAlignmentConservationAnnotation();
+    quality = alignViewport.getAlignmentQualityAnnot();
+    ourAnnot.add(conservation);
+    ourAnnot.add(quality);
+    ourAnnots = ourAnnot;
+    ConsPercGaps = alignViewport.getConsPercGaps();
+    // AlignViewport.UPDATING_CONSERVATION = true;
 
-        return;
-      }
-      try
-      {
-        cons = Conservation.calculateConservation("All", 3,
-                alignment.getSequences(), 0, alWidth - 1, false,
-                ConsPercGaps, quality != null);
-      } catch (IndexOutOfBoundsException x)
-      {
-        // probable race condition. just finish and return without any fuss.
-        calcMan.workerComplete(this);
-        return;
-      }
-      updateResultAnnotation(true);
-    } catch (OutOfMemoryError error)
+    if (alignment == null || (alWidth = alignment.getWidth()) < 0)
     {
-      ap.raiseOOMWarning("calculating conservation", error);
-      calcMan.disableWorker(this);
-      // alignViewport.conservation = null;
-      // this.alignViewport.quality = null;
-
+      // .updatingConservation = false;
+      // AlignViewport.UPDATING_CONSERVATION = false;
+      return;
     }
-    calcMan.workerComplete(this);
+    try
+    {
+      cons = Conservation.calculateConservation("All",
+              alignment.getSequences(), 0, alWidth - 1, false,
+              ConsPercGaps, quality != null);
+    } catch (IndexOutOfBoundsException x)
+    {
+      // probable race condition. just finish and return without any fuss.
+      return;
+    }
+    updateResultAnnotation(true);
 
+    if ((alignViewport == null) || (calcMan == null)
+            || (alignViewport.isClosed()))
+    {
+      abortAndDestroy();
+      return;
+    }
     if (ap != null)
     {
-      ap.paintAlignment(true);
+      ap.paintAlignment(true, true);
     }
 
   }