1 package jalview.ws2.helpers;
4 import java.util.concurrent.CopyOnWriteArrayList;
6 import jalview.ws2.actions.api.JobI;
7 import jalview.ws2.actions.api.TaskEventListener;
8 import jalview.ws2.actions.api.TaskI;
9 import jalview.ws2.api.JobStatus;
11 public class TaskEventSupport<T>
13 private TaskI<T> source;
15 private List<TaskEventListener<T>> listeners = new CopyOnWriteArrayList<>();
17 public TaskEventSupport(TaskI<T> source)
22 public TaskEventSupport(TaskI<T> source, TaskEventListener<T> handler)
28 public void addListener(TaskEventListener<T> listener)
30 listeners.add(listener);
33 public void removeListener(TaskEventListener<T> listener)
35 listeners.remove(listener);
38 public void fireTaskStarted(List<? extends JobI> subJobs)
40 for (var listener : listeners)
41 listener.taskStarted(source, subJobs);
44 public void fireTaskStatusChanged(JobStatus status)
46 for (var listener : listeners)
47 listener.taskStatusChanged(source, status);
50 public void fireTaskCompleted(T result)
52 for (var listener : listeners)
53 listener.taskCompleted(source, result);
56 public void fireTaskException(Exception e)
58 for (var listener : listeners)
59 listener.taskException(source, e);
62 public void fireSubJobStatusChanged(JobI job, JobStatus status)
64 for (var listener : listeners)
65 listener.subJobStatusChanged(source, job, status);
68 public void fireSubJobLogChanged(JobI job, String log)
70 for (var listener : listeners)
71 listener.subJobLogChanged(source, job, log);
74 public void fireSubJobErrorLogChanged(JobI job, String log)
76 for (var listener : listeners)
77 listener.subJobErrorLogChanged(source, job, log);