using System;
namespace Project_Periodensystem.Controller
{
///
/// Navigation Service Interface - Implementiert Dependency Inversion Principle
///
/// ZWECK UND ARCHITEKTUR:
/// - Entkoppelt Controller-Layer von UI-spezifischen Navigation-Details
/// - Ermöglicht verschiedene UI-Implementierungen (WPF, Avalonia, Console, etc.)
/// - Macht Controller-Layer testbar durch Mock-Implementierungen
/// - Implementiert Interface Segregation Principle (nur notwendige Navigation-Methoden)
///
/// DESIGN PATTERNS:
/// - Dependency Inversion: Controller abhängig von Abstraktion, nicht von Implementierung
/// - Strategy Pattern: Verschiedene Navigation-Strategien möglich
/// - Command Pattern: Jede Methode kapselt eine UI-Aktion
///
/// C# KONZEPTE:
/// - Interface Definition: Vertrag ohne Implementierung
/// - Abstraktion: Trennt WHAT (Navigation) von HOW (UI-Framework)
/// - Dependency Injection: Controller erhält Implementation via Constructor
///
/// IMPLEMENTIERUNG:
/// - NavigationService.cs (View-Layer) implementiert dieses Interface
/// - Controller ruft Interface-Methoden auf, kennt aber Implementierung nicht
/// - Ermöglicht einfaches Testen und verschiedene UI-Frameworks
///
/// TESTBARKEIT:
/// - Mock-Implementierung für Unit Tests möglich
/// - Keine direkten UI-Dependencies im Controller
/// - Isolierte Testung der Navigation-Logik
///
public interface INavigationService
{
///
/// Navigiert zur Hauptansicht des Periodensystems
///
/// IMPLEMENTIERUNG:
/// - Zeigt das vollständige, interaktive Periodensystem an
/// - Hauptfunktion der Anwendung
/// - Alle Element-Tiles werden geladen und angezeigt
///
void NavigateToPeriodicTable();
///
/// Navigiert zur About/Info-Seite der Anwendung
///
/// IMPLEMENTIERUNG:
/// - Zeigt Anwendungsinformationen, Version, Credits
/// - Dokumentation und Hilfe-Inhalte
/// - Links zu weiteren Ressourcen
///
void NavigateToAbout();
///
/// Navigiert zurück zur Startseite/Hauptmenü
///
/// IMPLEMENTIERUNG:
/// - Zeigt das Hauptmenü mit Navigation-Optionen
/// - Reset-Funktion zum Anwendungsstart
/// - Home-Button Funktionalität
///
void NavigateToLanding();
///
/// Wechselt zwischen hellen und dunklen UI-Themes
///
/// IMPLEMENTIERUNG:
/// - Toggle zwischen Light/Dark Mode
/// - Aktualisiert globale Theme-Settings
/// - Persistiert Benutzer-Präferenz
/// - Wendet neues Theme auf alle UI-Komponenten an
///
void ToggleTheme();
///
/// Zeigt Bestätigungsdialog für Datenexport
///
/// IMPLEMENTIERUNG:
/// - Modal-Dialog mit Export-Optionen
/// - Benutzer wählt Format und Ziel
/// - Startet Export-Prozess nach Bestätigung
/// - Fortschrittsanzeige und Erfolgs-/Fehlermeldungen
///
void ShowExportConfirmation();
}
}