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.";

    // -------------------------------------------------------------------------
    // 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.";

    // -------------------------------------------------------------------------
    // 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.";

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

    /** 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.";

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