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 588b3ae..47b4e90 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 @@ -1157,6 +1157,23 @@ public final class GuiConfigurationEditorWorkspace { updateLockState(status); } + /** + * Liest den aktuellen Scheduler-Status vom verdrahteten Use Case und reicht ihn an + * alle betroffenen Tabs weiter. + *
+ * Im Gegensatz zu einem direkten Lesen am unveränderlichen + * {@code GuiStartupContext} berücksichtigt diese Methode den nach einem + * erfolgreichen Datei-Öffnen erst zur Laufzeit verdrahteten Use Case + * (Auto-Load der zuletzt geladenen Konfiguration oder manuelles Öffnen). + * Ist kein Use Case verdrahtet, ist der Aufruf ein No-op. + *
+ * Muss auf dem JavaFX Application Thread aufgerufen werden. + */ + public void refreshSchedulerStatus() { + schedulerTab.currentSchedulerUseCase() + .ifPresent(uc -> onSchedulerStatusRefresh(uc.getStatus())); + } + /** * Aktualisiert den Sperr-Zustand des Konfig-Tabs anhand des aktuellen Scheduler-Status. *
diff --git a/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/GuiSchedulerTab.java b/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/GuiSchedulerTab.java index 9651bfe..d544507 100644 --- a/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/GuiSchedulerTab.java +++ b/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/GuiSchedulerTab.java @@ -146,6 +146,20 @@ public final class GuiSchedulerTab { startButton.setTooltip(null); } + /** + * Gibt den aktuell verdrahteten Scheduler-Use-Case zurück. + *
+ * Wird von der zentralen Status-Refresh-Timeline benötigt, weil der Use Case
+ * erst nach erfolgreichem Datei-Öffnen verfügbar wird (z. B. durch Auto-Load
+ * der zuletzt geladenen Konfiguration) und damit nicht im
+ * unveränderlichen {@code GuiStartupContext} steht.
+ *
+ * @return aktueller Use Case oder {@code Optional.empty()} wenn keiner verdrahtet ist
+ */
+ public Optional
diff --git a/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/PdfUmbenennerGuiApplication.java b/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/PdfUmbenennerGuiApplication.java
index df11ba0..b8103d4 100644
--- a/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/PdfUmbenennerGuiApplication.java
+++ b/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/PdfUmbenennerGuiApplication.java
@@ -3,7 +3,6 @@ package de.gecheckt.pdf.umbenenner.adapter.in.gui;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import de.gecheckt.pdf.umbenenner.application.port.in.SchedulerStatus;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.event.EventHandler;
@@ -153,10 +152,11 @@ public class PdfUmbenennerGuiApplication extends Application {
* ist, wird der Aufruf ohne Fehler übersprungen.
*/
private void refreshAllTabStates() {
- guiStartupContext.schedulerControlUseCase().ifPresent(uc -> {
- SchedulerStatus status = uc.getStatus();
- workspace.onSchedulerStatusRefresh(status);
- });
+ // Den Use Case nicht aus dem unveränderlichen GuiStartupContext lesen, sondern
+ // den zur Laufzeit (z. B. durch Auto-Load) verdrahteten Use Case verwenden.
+ // Andernfalls bliebe der Stop-Button dauerhaft deaktiviert, weil updateStatus
+ // nie aufgerufen würde.
+ workspace.refreshSchedulerStatus();
}
/**