package de.gecheckt.pdf.umbenenner.adapter.in.gui;

/**
 * Zentrale Konstantenklasse für alle Tooltip-Texte der GUI.
 * <p>
 * Diese Klasse ist die einzige autoritative Quelle für Tooltip-Beschriftungen aller
 * interaktiven Elemente in der Desktop-Oberfläche. Alle Tooltip-Strings werden hier
 * definiert und von den jeweiligen UI-Klassen referenziert. Streustrings im
 * UI-Code sind unzulässig.
 * <p>
 * Tooltip-Texte für Status-Icons werden <em>nicht</em> hier gepflegt – sie stammen
 * ausschließlich aus {@link de.gecheckt.pdf.umbenenner.adapter.in.gui.batchrun.ProcessingStatusPresentation},
 * die die autoritative Quelle für alle statusbezogenen Darstellungsinformationen ist.
 * <p>
 * Alle Texte sind deutschsprachig gemäß Spezifikation.
 * Diese Klasse enthält keine JavaFX-Typen und ist nicht instanziierbar.
 */
public final class GuiTooltipTexts {

    // -------------------------------------------------------------------------
    // Toolbar-Buttons
    // -------------------------------------------------------------------------

    /** Tooltip für den Button „Neu". */
    public static final String TOOLBAR_NEU =
            "Neue Konfiguration erstellen.";

    /** Tooltip für den Button „Öffnen". */
    public static final String TOOLBAR_OEFFNEN =
            "Bestehende Konfigurationsdatei (.properties) öffnen.";

    /** Tooltip für den Button „Speichern". */
    public static final String TOOLBAR_SPEICHERN =
            "Aktuelle Konfiguration speichern.";

    /** Tooltip für den Button „Speichern unter". */
    public static final String TOOLBAR_SPEICHERN_UNTER =
            "Konfiguration unter neuem Dateipfad speichern.";

    /** Tooltip für den Button „Validieren". */
    public static final String TOOLBAR_VALIDIEREN =
            "Aktuelle Eingaben auf Vollständigkeit und Korrektheit prüfen.";

    /** Tooltip für den Button „Technische Tests ausführen". */
    public static final String TOOLBAR_TECHNISCHE_TESTS =
            "Dateipfade, Datenbankverbindung und KI-Erreichbarkeit prüfen.";

    // -------------------------------------------------------------------------
    // Konfigurationstab – Pfade
    // -------------------------------------------------------------------------

    /** Tooltip für das Eingabefeld „Quellordner". */
    public static final String PFADE_QUELLORDNER =
            "Ordner mit den zu verarbeitenden PDF-Dateien. Inhalt wird nicht verändert.";

    /** Tooltip für das Eingabefeld „Zielordner". */
    public static final String PFADE_ZIELORDNER =
            "Ordner für die umbenannten Kopien.";

    /** Tooltip für das Eingabefeld „SQLite-Datei". */
    public static final String PFADE_SQLITE =
            "Datenbank für Verarbeitungsergebnisse und Datei-Historie.";

    /** Tooltip für das Eingabefeld „Prompt-Datei". */
    public static final String PFADE_PROMPT =
            "Externe Textdatei mit den KI-Anweisungen.";

    /** Tooltip für das Eingabefeld „Lock-Datei". */
    public static final String PFADE_LOCK_DATEI =
            "Pfad zur Lock-Datei, die parallele Instanzen verhindert (optional).";

    /** Tooltip für das Eingabefeld „Log-Verzeichnis". */
    public static final String PFADE_LOG_VERZEICHNIS =
            "Verzeichnis für Log-Dateien. Leer = Standardverzeichnis logs/ im Programmverzeichnis.";

    // -------------------------------------------------------------------------
    // Konfigurationstab – Provider
    // -------------------------------------------------------------------------

    /** Tooltip für die Provider-ComboBox. */
    public static final String PROVIDER_COMBOBOX =
            "Der KI-Dienst, der die Dateinamen generiert.";

    /** Tooltip für das Modell-Eingabefeld (ComboBox oder manuelles TextField). */
    public static final String PROVIDER_MODELL =
            "Das konkrete Sprachmodell des gewählten Providers.";

    /** Tooltip für das Eingabefeld „Basis-URL". */
    public static final String PROVIDER_BASIS_URL =
            "Basis-URL des KI-Dienstes (z. B. https://api.openai.com/v1).";

    /** Tooltip für das Eingabefeld „Timeout". */
    public static final String PROVIDER_TIMEOUT =
            "Zeitlimit für KI-Anfragen in Sekunden.";

    /** Tooltip für das Eingabefeld „API-Key". */
    public static final String PROVIDER_API_KEY =
            "API-Schlüssel für den konfigurierten KI-Dienst. Umgebungsvariable hat Vorrang.";

    // -------------------------------------------------------------------------
    // Konfigurationstab – Verarbeitungslimits
    // -------------------------------------------------------------------------

    /** Tooltip für das Eingabefeld „max.text.characters". */
    public static final String LIMITS_MAX_TEXT_CHARACTERS =
            "Maximale Zeichenzahl aus dem PDF-Text. Höhere Werte = mehr Kontext, höhere Kosten.";

    /** Tooltip für das Eingabefeld „max.pages". */
    public static final String LIMITS_MAX_PAGES =
            "Maximale Seitenzahl, die aus einem PDF gelesen wird.";

    /** Tooltip für das Eingabefeld „max.title.length". */
    public static final String LIMITS_MAX_TITLE_LENGTH =
            "Maximale Länge des Dateinamens in Zeichen (ohne Datum und Erweiterung). Gültig: 10–120.";

    /** Tooltip für das Eingabefeld „max.retries.transient". */
    public static final String LIMITS_MAX_RETRIES =
            "Maximale Anzahl transienter Wiederholversuche je Dokument (Ganzzahl ≥ 1).";

    /** Tooltip für das Eingabefeld „Log-Level". */
    public static final String LIMITS_LOG_LEVEL =
            "Log-Detailstufe (z. B. INFO, DEBUG, WARN). Leer = Standardwert INFO.";

    /** Tooltip für die Checkbox „Sensible KI-Ausgabe". */
    public static final String LIMITS_SENSIBLE_KI_AUSGABE =
            "Vollständige KI-Antworten in die Log-Datei schreiben (nur für Diagnosezwecke empfohlen).";

    // -------------------------------------------------------------------------
    // Verarbeitungslauf-Tab – Dateiname-Editor
    // -------------------------------------------------------------------------

    /** Tooltip für das Dateiname-Textfeld im Dateiname-Editor. */
    public static final String DATEINAME_TEXTFELD =
            "Dateiname bearbeiten. Format: JJJJ-MM-TT - Titel.pdf";

    /** Tooltip für den Button „Dateiname übernehmen". */
    public static final String DATEINAME_UEBERNEHMEN =
            "Benennt die Zieldatei um und aktualisiert die Datenbank. Nicht rückgängig zu machen.";

    /** Tooltip für den Button „Zurücksetzen auf KI-Vorschlag". */
    public static final String DATEINAME_ZURUECKSETZEN =
            "Stellt den KI-generierten Namen wieder her, ohne zu speichern.";

    // -------------------------------------------------------------------------
    // Verarbeitungslauf-Tab – Laufsteuerung und Tabelle
    // -------------------------------------------------------------------------

    /** Tooltip für den Button „Starten". */
    public static final String BATCHRUN_STARTEN =
            "Verarbeitungslauf starten: alle ausstehenden PDF-Dateien aus dem Quellordner verarbeiten.";

    /** Tooltip für den Button „Abbrechen". */
    public static final String BATCHRUN_ABBRECHEN =
            "Laufenden Verarbeitungslauf abbrechen. Bereits abgeschlossene Dateien bleiben gespeichert.";

    /** Tooltip für den Button „Erneut verarbeiten". */
    public static final String BATCHRUN_ERNEUT_VERARBEITEN =
            "Markierte Einträge erneut zur Verarbeitung freigeben (setzt Status auf READY_FOR_AI).";

    /** Tooltip für den Button „Status zurücksetzen" im Verarbeitungslauf-Tab. */
    public static final String BATCHRUN_STATUS_ZURUECKSETZEN =
            "Status der markierten Einträge zurücksetzen, damit sie beim nächsten Lauf verarbeitet werden.";

    /** Tooltip für die Master-Checkbox im Tabellenkopf des Verarbeitungslauf-Tabs. */
    public static final String BATCHRUN_MASTER_CHECKBOX =
            "Alle sichtbaren Einträge markieren oder Markierung aufheben.";

    /** Tooltip für den Meldungsbereich im Verarbeitungslauf-Tab. */
    public static final String BATCHRUN_MESSAGE_AREA =
            "Statusmeldungen und Fortschrittsinformationen des aktuellen Verarbeitungslaufs.";

    /** Tooltip für den Navigations-Button „Vorherige Seite" in der PDF-Vorschau. */
    public static final String PREVIEW_VORHERIGE_SEITE =
            "Vorherige Seite der Vorschau anzeigen.";

    /** Tooltip für den Navigations-Button „Nächste Seite" in der PDF-Vorschau. */
    public static final String PREVIEW_NAECHSTE_SEITE =
            "Nächste Seite der Vorschau anzeigen.";

    /** Tooltip für Spalte „Status" in der Verarbeitungslauf-Tabelle. */
    public static final String BATCHRUN_COL_STATUS =
            "Verarbeitungsergebnis: Erfolg, Fehler oder übersprungen.";

    /** Tooltip für Spalte „Originaldateiname" in der Verarbeitungslauf-Tabelle. */
    public static final String BATCHRUN_COL_ORIGINALDATEINAME =
            "Ursprünglicher Dateiname der verarbeiteten PDF-Datei.";

    /** Tooltip für Spalte „Neuer Dateiname" in der Verarbeitungslauf-Tabelle. */
    public static final String BATCHRUN_COL_NEUER_DATEINAME =
            "Von der KI vorgeschlagener, normierter Dateiname.";

    /** Tooltip für Spalte „Datum" in der Verarbeitungslauf-Tabelle. */
    public static final String BATCHRUN_COL_DATUM =
            "Datum des Dokuments laut KI-Analyse.";

    /** Tooltip für Spalte „Dauer" in der Verarbeitungslauf-Tabelle. */
    public static final String BATCHRUN_COL_DAUER =
            "Verarbeitungsdauer für diese Datei.";

    // -------------------------------------------------------------------------
    // Verlauf-Tab – Detailbereich
    // -------------------------------------------------------------------------

    /** Tooltip für den KI-Begründungs-Bereich im Verlauf-Tab. */
    public static final String VERLAUF_REASONING_AREA =
            "KI-Begründung des ausgewählten Verarbeitungsversuchs.";

    /** Tooltip für den Fehlerursachen-Bereich im Verlauf-Tab. */
    public static final String VERLAUF_FAILURE_AREA =
            "Fehlermeldung des letzten Fehler-Versuchs für dieses Dokument.";

    /** Tooltip für Spalte „Status" in der Übersichtstabelle des Verlauf-Tabs. */
    public static final String VERLAUF_COL_STATUS =
            "Aktueller Gesamtstatus des Dokuments.";

    /** Tooltip für Spalte „Quelldatei" in der Übersichtstabelle des Verlauf-Tabs. */
    public static final String VERLAUF_COL_QUELLDATEI =
            "Ursprünglicher Dateiname der PDF-Quelldatei.";

    /** Tooltip für Spalte „Zieldatei" in der Übersichtstabelle des Verlauf-Tabs. */
    public static final String VERLAUF_COL_ZIELDATEI =
            "Vom System erzeugter, normierter Dateiname im Zielordner.";

    /** Tooltip für Spalte „Letzter Versuch" in der Übersichtstabelle des Verlauf-Tabs. */
    public static final String VERLAUF_COL_LETZTER_VERSUCH =
            "Zeitpunkt des zuletzt abgeschlossenen Verarbeitungsversuchs.";

    /** Tooltip für Spalte „Versuche" in der Übersichtstabelle des Verlauf-Tabs. */
    public static final String VERLAUF_COL_VERSUCHE =
            "Gesamtanzahl der Verarbeitungsversuche für dieses Dokument.";

    /** Tooltip für Spalte „#" in der Versuche-Tabelle des Verlauf-Tabs. */
    public static final String VERLAUF_VERSUCHE_COL_NR =
            "Laufende Nummer des Verarbeitungsversuchs.";

    /** Tooltip für Spalte „Datum" in der Versuche-Tabelle des Verlauf-Tabs. */
    public static final String VERLAUF_VERSUCHE_COL_DATUM =
            "Endzeitpunkt dieses Verarbeitungsversuchs.";

    /** Tooltip für Spalte „Status" in der Versuche-Tabelle des Verlauf-Tabs. */
    public static final String VERLAUF_VERSUCHE_COL_STATUS =
            "Ergebnis dieses Verarbeitungsversuchs.";

    /** Tooltip für Spalte „Provider" in der Versuche-Tabelle des Verlauf-Tabs. */
    public static final String VERLAUF_VERSUCHE_COL_PROVIDER =
            "KI-Provider, der für diesen Versuch verwendet wurde.";

    /** Tooltip für Spalte „Modell" in der Versuche-Tabelle des Verlauf-Tabs. */
    public static final String VERLAUF_VERSUCHE_COL_MODELL =
            "Konkretes Sprachmodell, das für diesen Versuch verwendet wurde.";

    /** Tooltip für Spalte „Vorgeschlagener Name" in der Versuche-Tabelle des Verlauf-Tabs. */
    public static final String VERLAUF_VERSUCHE_COL_VORGESCHLAGENER_NAME =
            "Vom System erzeugter Zieldateiname für diesen Versuch.";

    // -------------------------------------------------------------------------
    // Konfigurations-Tab – Meldungsbereich und Modell-Neu-Laden
    // -------------------------------------------------------------------------

    /** Tooltip für den Button „Meldungen leeren". */
    public static final String TOOLBAR_MELDUNGEN_LEEREN =
            "Alle Meldungen im Meldungsbereich entfernen.";

    /** Tooltip für den Button „Modelle neu laden". */
    public static final String PROVIDER_MODELLE_NEU_LADEN =
            "Verfügbare Modelle vom konfigurierten Provider neu abrufen.";

    /** Tooltip für den Ordner-/Datei-Browser-Button. */
    public static final String PFADE_BROWSER_BUTTON =
            "Ordner oder Datei über den Datei-Dialog auswählen.";

    // -------------------------------------------------------------------------
    // Prompt-Tab – Textbereich
    // -------------------------------------------------------------------------

    /** Tooltip für den Prompt-Textbereich im Prompt-Editor-Tab. */
    public static final String PROMPT_TEXTAREA =
            "KI-Anweisungstext. Dieser Prompt wird bei jedem Verarbeitungsversuch an das Sprachmodell gesendet.";

    /** Tooltip für den Button „Speichern" im Prompt-Editor-Tab. */
    public static final String PROMPT_SPEICHERN =
            "Prompt-Datei speichern (atomar, UTF-8).";

    /** Tooltip für den Button „Auf Standard zurücksetzen" im Prompt-Editor-Tab. */
    public static final String PROMPT_ZURUECKSETZEN =
            "Textfeld mit dem Standard-Prompt-Inhalt befüllen, ohne zu speichern.";

    /** Tooltip für den Button „Standard-Prompt erstellen" im Prompt-Editor-Tab. */
    public static final String PROMPT_STANDARD_ANLEGEN =
            "Standard-Prompt-Datei am konfigurierten Pfad anlegen.";

    /** Nicht instanziierbar – reine Konstantenklasse. */
    private GuiTooltipTexts() {
        throw new UnsupportedOperationException("Nicht instanziierbar");
    }
}
