package ctbrec.ui.menu; import lombok.extern.slf4j.Slf4j; import java.util.List; import ctbrec.Model; import ctbrec.recorder.Recorder; import ctbrec.ui.action.PauseAction; import ctbrec.ui.action.ResumeAction; import javafx.scene.Node; @Slf4j public class PauseResumeHandler { private Node source; private Recorder recorder; private Runnable callback; public PauseResumeHandler(Node source, Recorder recorder, Runnable callback) { this.source = source; this.recorder = recorder; this.callback = callback; } protected void pause(List selectedModels) { new PauseAction(source, selectedModels, recorder).execute() .exceptionally(ex -> { log.error("Error while pausing recordings", ex); return null; }).whenComplete((r, ex) -> executeCallback()); } protected void resume(List selectedModels) { new ResumeAction(source, selectedModels, recorder).execute() .exceptionally(ex -> { log.error("Error while resuming recordings", ex); return null; }).whenComplete((r, ex) -> executeCallback()); } private void executeCallback() { try { callback.run(); } catch (Exception e) { log.error("Error while executing menu callback", e); } } }