import java.util.List;
import java.util.Objects;
+import jalview.api.AlignViewportI;
import jalview.viewmodel.AlignmentViewport;
import jalview.ws.params.ArgumentI;
import jalview.ws2.actions.BaseAction;
+import jalview.ws2.actions.BaseTask;
+import jalview.ws2.actions.PollingTaskExecutor;
import jalview.ws2.actions.api.TaskEventListener;
import jalview.ws2.actions.api.TaskI;
import jalview.ws2.api.Credentials;
client = builder.client;
}
- @Override
+ @Deprecated
public TaskI<AlignmentResult> perform(AlignmentViewport viewport,
List<ArgumentI> args, Credentials credentials,
TaskEventListener<AlignmentResult> handler)
{
- var msa = viewport.getAlignmentView(true);
- var task = new AlignmentTask(
- client, this, args, credentials, msa, viewport, submitGaps, handler);
- task.start(viewport.getServiceExecutor());
+ var task = createTask(viewport, args, credentials);
+ var executor = PollingTaskExecutor.fromPool(viewport.getServiceExecutor());
+ task.addTaskEventListener(handler);
+ var future = executor.submit(task);
+ task.setCancelAction(() -> {
+ future.cancel(true);
+ });
return task;
}
+ @Override
+ public AlignmentTask createTask(AlignViewportI viewport,
+ List<ArgumentI> args, Credentials credentials)
+ {
+ return new AlignmentTask(
+ client, this, args, credentials, viewport, submitGaps);
+ }
+
/**
* Returns if the action is active for the given viewport. Alignment services
* are non-interactive, so the action is never active.