89 lines
3.3 KiB
C#
89 lines
3.3 KiB
C#
using System;
|
|
|
|
namespace Project_Periodensystem.Controller
|
|
{
|
|
/// <summary>
|
|
/// 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
|
|
/// </summary>
|
|
public interface INavigationService
|
|
{
|
|
/// <summary>
|
|
/// Navigiert zur Hauptansicht des Periodensystems
|
|
///
|
|
/// IMPLEMENTIERUNG:
|
|
/// - Zeigt das vollständige, interaktive Periodensystem an
|
|
/// - Hauptfunktion der Anwendung
|
|
/// - Alle Element-Tiles werden geladen und angezeigt
|
|
/// </summary>
|
|
void NavigateToPeriodicTable();
|
|
|
|
/// <summary>
|
|
/// Navigiert zur About/Info-Seite der Anwendung
|
|
///
|
|
/// IMPLEMENTIERUNG:
|
|
/// - Zeigt Anwendungsinformationen, Version, Credits
|
|
/// - Dokumentation und Hilfe-Inhalte
|
|
/// - Links zu weiteren Ressourcen
|
|
/// </summary>
|
|
void NavigateToAbout();
|
|
|
|
/// <summary>
|
|
/// Navigiert zurück zur Startseite/Hauptmenü
|
|
///
|
|
/// IMPLEMENTIERUNG:
|
|
/// - Zeigt das Hauptmenü mit Navigation-Optionen
|
|
/// - Reset-Funktion zum Anwendungsstart
|
|
/// - Home-Button Funktionalität
|
|
/// </summary>
|
|
void NavigateToLanding();
|
|
|
|
/// <summary>
|
|
/// 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
|
|
/// </summary>
|
|
void ToggleTheme();
|
|
|
|
/// <summary>
|
|
/// 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
|
|
/// </summary>
|
|
void ShowExportConfirmation();
|
|
}
|
|
}
|