package concurrent; import javafx.beans.property.ReadOnlyStringProperty; import javafx.concurrent.Worker; import javafx.event.Event; import javafx.event.EventHandler; import javafx.event.EventType; public class BackgroundExecution implements EventSource{ private final EventSource eventSource; private final Starter starter; private Worker<?> worker; public BackgroundExecution(EventSource eventSource, Starter starter, Worker<?> worker) { this.eventSource = eventSource; this.starter = starter; this.worker = worker; } @Override public <T extends Event> void addEventHandler(EventType<T> eventType, EventHandler<? super T> eventHandler) { eventSource.addEventHandler(eventType, eventHandler); } public ReadOnlyStringProperty messageProperty() { return worker.messageProperty(); } public void start(){ starter.start(); } public void cancel() { worker.cancel(); } }