forked from j62/ctbrec
1
0
Fork 0

Add remove confirmation back in ModelMenuContributor

This commit is contained in:
0xb00bface 2021-10-10 14:05:47 +02:00
parent 2f34f9a687
commit ccddf3ccfb
1 changed files with 33 additions and 12 deletions

View File

@ -4,6 +4,7 @@ import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.function.Consumer; import java.util.function.Consumer;
import ctbrec.ui.controls.Dialogs;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -42,9 +43,9 @@ public class ModelMenuContributor {
private static final Logger LOG = LoggerFactory.getLogger(ModelMenuContributor.class); private static final Logger LOG = LoggerFactory.getLogger(ModelMenuContributor.class);
private Config config; private final Config config;
private Recorder recorder; private final Recorder recorder;
private Node source; private final Node source;
private Consumer<Model> startStopCallback; private Consumer<Model> startStopCallback;
private TriConsumer<Model, Boolean, Boolean> followCallback; private TriConsumer<Model, Boolean, Boolean> followCallback;
private Consumer<Model> ignoreCallback; private Consumer<Model> ignoreCallback;
@ -275,9 +276,15 @@ public class ModelMenuContributor {
} }
private void recordLater(List<Model> selectedModels, boolean recordLater) { private void recordLater(List<Model> selectedModels, boolean recordLater) {
var confirmed = true;
if (!recordLater) {
confirmed = showRemoveConfirmationDialog(selectedModels);
}
if (confirmed) {
selectedModels.forEach(m -> m.setMarkedForLaterRecording(recordLater)); selectedModels.forEach(m -> m.setMarkedForLaterRecording(recordLater));
new MarkForLaterRecordingAction(source, selectedModels, recordLater, recorder).execute(m -> executeCallback()); new MarkForLaterRecordingAction(source, selectedModels, recordLater, recorder).execute(m -> executeCallback());
} }
}
private void addStartPaused(ContextMenu menu, List<Model> selectedModels) { private void addStartPaused(ContextMenu menu, List<Model> selectedModels) {
if (!recorder.isTracked(selectedModels.get(0))) { if (!recorder.isTracked(selectedModels.get(0))) {
@ -379,6 +386,8 @@ public class ModelMenuContributor {
} }
private void stopRecording(List<Model> models) { private void stopRecording(List<Model> models) {
var confirmed = showRemoveConfirmationDialog(models);
if (confirmed) {
new StopRecordingAction(source, models, recorder).execute() new StopRecordingAction(source, models, recorder).execute()
.whenComplete((r, ex) -> { .whenComplete((r, ex) -> {
if (ex != null) { if (ex != null) {
@ -387,6 +396,18 @@ public class ModelMenuContributor {
r.stream().map(Result::getModel).forEach(startStopCallback); r.stream().map(Result::getModel).forEach(startStopCallback);
}); });
} }
}
private boolean showRemoveConfirmationDialog(List<Model> 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() { private void executeCallback() {
try { try {