JAL-1003 visual delay when running a sequence or alignment annotation job
authorjprocter <jprocter@compbio.dundee.ac.uk>
Thu, 14 Jun 2012 10:45:28 +0000 (11:45 +0100)
committerjprocter <jprocter@compbio.dundee.ac.uk>
Thu, 14 Jun 2012 14:01:34 +0000 (15:01 +0100)
src/jalview/ws/jws2/JabawsAlignCalcWorker.java

index 1f5250a..eb898b3 100644 (file)
@@ -8,6 +8,7 @@ import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.SequenceI;
 import jalview.gui.AlignFrame;
+import jalview.gui.IProgressIndicator;
 import jalview.workers.AlignCalcWorker;
 import jalview.ws.jws2.dm.JabaWsParamSet;
 import jalview.ws.jws2.jabaws2.Jws2Instance;
@@ -47,10 +48,13 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker
     super(alignViewport, alignPanel);
   }
 
+  IProgressIndicator guiProgress;
+
   public JabawsAlignCalcWorker(Jws2Instance service, AlignFrame alignFrame,
           WsParamSetI preset, List<Argument> paramset)
   {
     this(alignFrame.getCurrentView(), alignFrame.alignPanel);
+    this.guiProgress = alignFrame;
     this.preset = preset;
     this.arguments = paramset;
     aaservice = (SequenceAnnotation) service.service;
@@ -132,6 +136,7 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker
     {
       return;
     }
+    long progressId = -1;
 
     String rslt = "JOB NOT DEFINED";
 
@@ -152,7 +157,11 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker
 
       AlignmentAnnotation[] aa = alignViewport.getAlignment()
               .getAlignmentAnnotation();
-
+      if (guiProgress != null)
+      {
+        guiProgress.setProgressBar("JABA " + getServiceActionText(),
+                progressId = System.currentTimeMillis());
+      }
       if (preset == null)
       {
         rslt = aaservice.analize(seqs);
@@ -268,6 +277,11 @@ public abstract class JabawsAlignCalcWorker extends AlignCalcWorker
       calcMan.workerComplete(this);
       if (ap != null)
       {
+        calcMan.workerComplete(this);
+        if (guiProgress != null)
+        {
+          guiProgress.setProgressBar("", progressId);
+        }
         ap.paintAlignment(true);
       }
     }