Merge branch 'JAL-3878_ws-overhaul-3' into mmw/Release_2_12_ws_merge
[jalview.git] / src / jalview / ws2 / helpers / WSClientTaskWrapper.java
diff --git a/src/jalview/ws2/helpers/WSClientTaskWrapper.java b/src/jalview/ws2/helpers/WSClientTaskWrapper.java
new file mode 100644 (file)
index 0000000..c9032f6
--- /dev/null
@@ -0,0 +1,52 @@
+package jalview.ws2.helpers;
+
+import jalview.gui.WebserviceInfo;
+import jalview.ws.WSClientI;
+import jalview.ws2.actions.api.TaskI;
+
+/**
+ * A simple wrapper around the {@link TaskI} implementing {@link WSClientI}. Its
+ * main purpose is to delegate the call to {@link #cancelJob} to the underlying
+ * task.
+ * 
+ * @author mmwarowny
+ */
+public class WSClientTaskWrapper implements WSClientI
+{
+  private TaskI<?> delegate;
+
+  private boolean cancellable;
+
+  private boolean canMerge;
+
+  public WSClientTaskWrapper(TaskI<?> task, boolean cancellable, boolean canMerge)
+  {
+    this.delegate = task;
+    this.cancellable = cancellable;
+    this.canMerge = canMerge;
+  }
+
+  public WSClientTaskWrapper(TaskI<?> task)
+  {
+    this(task, true, false);
+  }
+
+  @Override
+  public boolean isCancellable()
+  {
+    return cancellable;
+  }
+
+  @Override
+  public boolean canMergeResults()
+  {
+    return canMerge;
+  }
+
+  @Override
+  public void cancelJob()
+  {
+    delegate.cancel();
+  }
+
+}