Introduced new AlignCalcWorker/manager interface.
[jalview.git] / src / jalview / api / AlignCalcManagerI.java
diff --git a/src/jalview/api/AlignCalcManagerI.java b/src/jalview/api/AlignCalcManagerI.java
new file mode 100644 (file)
index 0000000..2c406a2
--- /dev/null
@@ -0,0 +1,45 @@
+package jalview.api;
+
+public interface AlignCalcManagerI
+{
+
+  
+  /**
+   * tell manager that a worker is initialised and has started to run
+   * @param worker
+   */
+  void notifyStart(AlignCalcWorkerI worker);
+
+  /**
+   * check if a calculation of this type is already active
+   * @param worker
+   * @return
+   */
+  boolean alreadyDoing(AlignCalcWorkerI worker);
+
+  /**
+   * tell manager that worker is now processing data
+   * @param worker
+   */
+  void notifyWorking(AlignCalcWorkerI worker);
+
+
+  /**
+   * notify manager that the worker has completed, and results may be ready to collect
+   * @param worker
+   */
+  void workerComplete(AlignCalcWorkerI worker);
+
+  /**
+   * indicate that a worker like this cannot run on the platform and shouldn't be started again
+   * @param worker
+   */
+  void workerCannotRun(AlignCalcWorkerI worker);
+
+  /**
+   * launch a new worker
+   * @param worker
+   */
+  void startWorker(AlignCalcWorkerI worker);
+
+}