diff --git a/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/GuiConfigurationEditorWorkspace.java b/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/GuiConfigurationEditorWorkspace.java index fe8e026..ac62940 100644 --- a/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/GuiConfigurationEditorWorkspace.java +++ b/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/GuiConfigurationEditorWorkspace.java @@ -1389,6 +1389,8 @@ public final class GuiConfigurationEditorWorkspace { boolean shouldDiscard = promptEditorTab.confirmDiscardIfDirty(); if (!shouldDiscard) { Platform.runLater(() -> tabPane.getSelectionModel().select(oldTab)); + } else { + promptEditorTab.discardChanges(); } } }); diff --git a/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/GuiPromptEditorTab.java b/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/GuiPromptEditorTab.java index ac64404..de51bfe 100644 --- a/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/GuiPromptEditorTab.java +++ b/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/GuiPromptEditorTab.java @@ -154,6 +154,25 @@ public class GuiPromptEditorTab { } } + /** + * Verwirft alle ungespeicherten Änderungen und setzt den Tab in den Lade-Bereitschaftszustand. + *
+ * Setzt Dirty-State und Tab-Titel zurück. Ist der Tab zum Zeitpunkt des Aufrufs sichtbar, + * wird der Prompt-Inhalt sofort neu geladen; andernfalls erfolgt das Laden beim nächsten + * Öffnen des Tabs (gesteuert durch den Tab-Selektions-Listener). + *
+ * Muss auf dem JavaFX Application Thread aufgerufen werden.
+ */
+ public void discardChanges() {
+ this.loadedContent = null;
+ this.dirty = false;
+ this.tab.setText(TAB_TITLE);
+ this.saveButton.setDisable(true);
+ if (tab.isSelected()) {
+ loadPromptAsync();
+ }
+ }
+
/**
* Zeigt einen Bestätigungsdialog, wenn ungespeicherte Änderungen vorhanden sind.
* Gibt {@code true} zurück, wenn die Änderungen verworfen werden dürfen.
diff --git a/pdf-umbenenner-adapter-in-gui/src/test/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/GuiPromptEditorTabSmokeTest.java b/pdf-umbenenner-adapter-in-gui/src/test/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/GuiPromptEditorTabSmokeTest.java
index d0c9c86..f304d4a 100644
--- a/pdf-umbenenner-adapter-in-gui/src/test/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/GuiPromptEditorTabSmokeTest.java
+++ b/pdf-umbenenner-adapter-in-gui/src/test/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/GuiPromptEditorTabSmokeTest.java
@@ -328,4 +328,44 @@ class GuiPromptEditorTabSmokeTest {
"Tab-Titel muss nach Bearbeitung (resetToDefault) einen Asterisk enthalten; Titel war: "
+ titleRef.get());
}
+
+ @Test
+ void discardChanges_shouldResetDirtyStateAndTitle() throws Exception {
+ CountDownLatch latch = new CountDownLatch(1);
+ AtomicReference