diff --git a/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/batchrun/GuiBatchRunTab.java b/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/batchrun/GuiBatchRunTab.java index d4ce846..b83f139 100644 --- a/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/batchrun/GuiBatchRunTab.java +++ b/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/batchrun/GuiBatchRunTab.java @@ -524,13 +524,16 @@ public final class GuiBatchRunTab { HBox selectionButtonBar = new HBox(SECONDARY_SPACING, reprocessButton, resetStatusButton); selectionButtonBar.setAlignment(Pos.CENTER_LEFT); - selectionButtonBar.setPadding(new Insets(SECONDARY_SPACING / 2, 0, 0, 0)); + selectionButtonBar.setPadding(new Insets(SECONDARY_SPACING / 2, 0, SECONDARY_SPACING / 2, 0)); // Meldungsbereich unterhalb der Selektions-Buttons (linke Spalte) messageArea.setId("batch-run-message-area"); messageArea.setEditable(false); messageArea.setWrapText(true); messageArea.setPrefRowCount(3); + // Hinweisbereich erst einblenden wenn eine Meldung vorliegt + messageArea.setVisible(false); + messageArea.setManaged(false); // Linke Spalte: Tabelle wächst, Buttons und Meldungsbereich darunter VBox leftColumn = new VBox(0, tableScroll, selectionButtonBar, messageArea); @@ -1174,6 +1177,9 @@ public final class GuiBatchRunTab { fileNameEditor.clearSelection(); pdfPreview.clear(); messageArea.clear(); + messageArea.setVisible(false); + messageArea.setManaged(false); + messageArea.setStyle(null); resetMetrics(); updateCounterLabel(); progressBar.setProgress(0); @@ -1326,6 +1332,14 @@ public final class GuiBatchRunTab { private void showMessage(String message) { messageArea.setText(message); + boolean hatInhalt = message != null && !message.isBlank(); + messageArea.setVisible(hatInhalt); + messageArea.setManaged(hatInhalt); + if (hatInhalt) { + applyMessageStyle(message); + } else { + messageArea.setStyle(null); + } } private void appendMessage(String message) { @@ -1334,6 +1348,28 @@ public final class GuiBatchRunTab { } else { messageArea.setText(messageArea.getText() + System.lineSeparator() + message); } + messageArea.setVisible(true); + messageArea.setManaged(true); + applyMessageStyle(messageArea.getText()); + } + + /** + * Passt die Hintergrundfarbe des Hinweisbereichs dem Meldungsinhalt an. + * Fehlermeldungen erhalten einen roten, Erfolgsmeldungen einen grünen Hintergrund. + * + * @param text aktueller Inhalt des Hinweisbereichs + */ + private void applyMessageStyle(String text) { + String lower = text == null ? "" : text.toLowerCase(Locale.ROOT); + if (lower.contains("fehler") || lower.contains("fehlgeschlagen") + || lower.contains("nicht gefunden") || lower.contains("nicht möglich")) { + messageArea.setStyle("-fx-control-inner-background: #ffebee;"); + } else if (lower.contains("kopiert") || lower.contains("gespeichert") + || lower.contains("erfolgreich")) { + messageArea.setStyle("-fx-control-inner-background: #e8f5e9;"); + } else { + messageArea.setStyle(null); + } } private void updateCounterLabel() {