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.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<Model> startStopCallback;
private TriConsumer<Model, Boolean, Boolean> followCallback;
private Consumer<Model> ignoreCallback;
@ -275,8 +276,14 @@ public class ModelMenuContributor {
}
private void recordLater(List<Model> 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<Model> selectedModels) {
@ -379,13 +386,27 @@ public class ModelMenuContributor {
}
private void stopRecording(List<Model> 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<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() {