From ccddf3ccfb48165da61a68c1ac8ac05754533ff0 Mon Sep 17 00:00:00 2001 From: 0xb00bface <0xboobface@gmail.com> Date: Sun, 10 Oct 2021 14:05:47 +0200 Subject: [PATCH] Add remove confirmation back in ModelMenuContributor --- .../ctbrec/ui/menu/ModelMenuContributor.java | 45 ++++++++++++++----- 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/client/src/main/java/ctbrec/ui/menu/ModelMenuContributor.java b/client/src/main/java/ctbrec/ui/menu/ModelMenuContributor.java index 0241c048..fbc8588a 100644 --- a/client/src/main/java/ctbrec/ui/menu/ModelMenuContributor.java +++ b/client/src/main/java/ctbrec/ui/menu/ModelMenuContributor.java @@ -4,6 +4,7 @@ import java.util.List; import java.util.Optional; import java.util.function.Consumer; +import ctbrec.ui.controls.Dialogs; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,9 +43,9 @@ public class ModelMenuContributor { private static final Logger LOG = LoggerFactory.getLogger(ModelMenuContributor.class); - private Config config; - private Recorder recorder; - private Node source; + private final Config config; + private final Recorder recorder; + private final Node source; private Consumer startStopCallback; private TriConsumer followCallback; private Consumer ignoreCallback; @@ -275,8 +276,14 @@ public class ModelMenuContributor { } private void recordLater(List selectedModels, boolean recordLater) { - selectedModels.forEach(m -> m.setMarkedForLaterRecording(recordLater)); - new MarkForLaterRecordingAction(source, selectedModels, recordLater, recorder).execute(m -> executeCallback()); + var confirmed = true; + if (!recordLater) { + confirmed = showRemoveConfirmationDialog(selectedModels); + } + if (confirmed) { + selectedModels.forEach(m -> m.setMarkedForLaterRecording(recordLater)); + new MarkForLaterRecordingAction(source, selectedModels, recordLater, recorder).execute(m -> executeCallback()); + } } private void addStartPaused(ContextMenu menu, List selectedModels) { @@ -379,13 +386,27 @@ public class ModelMenuContributor { } private void stopRecording(List models) { - new StopRecordingAction(source, models, recorder).execute() - .whenComplete((r, ex) -> { - if (ex != null) { - LOG.error("Error while stopping recordings", ex); - } - r.stream().map(Result::getModel).forEach(startStopCallback); - }); + var confirmed = showRemoveConfirmationDialog(models); + if (confirmed) { + new StopRecordingAction(source, models, recorder).execute() + .whenComplete((r, ex) -> { + if (ex != null) { + LOG.error("Error while stopping recordings", ex); + } + r.stream().map(Result::getModel).forEach(startStopCallback); + }); + } + } + + private boolean showRemoveConfirmationDialog(List models) { + if (Config.getInstance().getSettings().confirmationForDangerousActions) { + int n = models.size(); + String plural = n > 1 ? "s" : ""; + String header = "This will remove " + n + " model" + plural; + return Dialogs.showConfirmDialog("Stop Recording", "Continue?", header, source.getScene()); + } else { + return true; + } } private void executeCallback() {