import java.util.List;
import java.util.Objects;
+import jalview.api.AlignViewportI;
import jalview.datamodel.AlignmentI;
import jalview.viewmodel.AlignmentViewport;
import jalview.ws.params.ArgumentI;
import jalview.ws2.actions.BaseAction;
+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
public TaskI<AlignmentI> perform(AlignmentViewport viewport,
List<ArgumentI> args, Credentials credentials,
TaskEventListener<AlignmentI> handler)
{
- var task = new PhmmerTask(client, args, credentials,
- viewport.getAlignmentView(true), handler);
- task.start(viewport.getServiceExecutor());
+ var task = createTask(viewport, args, credentials);
+ task.addTaskEventListener(handler);
+ var executor = PollingTaskExecutor.fromPool(viewport.getServiceExecutor());
+ var future = executor.submit(task);
+ task.setCancelAction(() -> { future.cancel(true); });
return task;
}
+
+ public PhmmerTask createTask(AlignViewportI viewport,
+ List<ArgumentI> args, Credentials credentials)
+ {
+ return new PhmmerTask(client, args, credentials, viewport.getAlignmentView(true));
+ }
@Override
public boolean isActive(AlignmentViewport viewport)