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(); } }