package progress; import domain.Announcer; import javafx.util.Callback; class LongRunningAction { public static interface VoidCallback extends Callback<Void, Void>{ } private final Announcer<VoidCallback> completionListeners = new Announcer<>(VoidCallback.class); private final Announcer<VoidCallback> startListeners = new Announcer<>(VoidCallback.class); public void onCompletion(VoidCallback callback) { completionListeners.addListener(callback); } public void onStart(VoidCallback callback){ startListeners.addListener(callback); } public void start() { startListeners.announce().call(null); } public void completed() { completionListeners.announce().call(null); } }