Phase 5-UI (Fundament): Modul-UI-Contract im Core (Launcher-Modell)
- IPolyTraderModule um RegisterUi(IModuleUiHost) erweitert. - Neu: IModuleUiHost + ModuleView (Core, Modularity) — Views sind designbare Controls (UserControls), die die Shell in eigenständigen Host-Fenstern öffnet. - Core: UseWindowsForms aktiviert (fuer den Control-Typ im Contract). - Build 0 Fehler. Noch keine View implementiert (folgt view-fuer-view). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
21eb686b9c
commit
26dd68a550
@@ -0,0 +1,41 @@
|
||||
using System;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace PolyTrader.Core.Modularity
|
||||
{
|
||||
/// <summary>
|
||||
/// Eine vom Core oder einem Modul beigesteuerte UI-Ansicht. Die Shell entscheidet,
|
||||
/// wie sie präsentiert wird (aktuell: eigenständiges Host-Fenster über den Launcher).
|
||||
/// Die eigentliche UI ist ein designbares <see cref="Control"/> (i.d.R. ein UserControl),
|
||||
/// das über <see cref="CreateControl"/> erzeugt wird (mit DI-Abhängigkeiten).
|
||||
/// </summary>
|
||||
public sealed class ModuleView
|
||||
{
|
||||
/// <summary>Stabile ID für Einzelinstanz-Handling (nur ein Fenster je View).</summary>
|
||||
public string Id { get; init; } = Guid.NewGuid().ToString();
|
||||
|
||||
/// <summary>Titel für Launcher-Eintrag und Fenstertitel.</summary>
|
||||
public string Title { get; init; } = "View";
|
||||
|
||||
/// <summary>Optionale Gruppierung im Launcher (z.B. "Core", "CopyTrading").</summary>
|
||||
public string? Group { get; init; }
|
||||
|
||||
/// <summary>Optionale Sortierreihenfolge im Launcher.</summary>
|
||||
public int Order { get; init; } = 0;
|
||||
|
||||
/// <summary>Erzeugt das anzuzeigende Control (frische Instanz je Fensteröffnung).</summary>
|
||||
public Func<Control> CreateControl { get; init; } = () => new Control();
|
||||
|
||||
public int PreferredWidth { get; init; } = 900;
|
||||
public int PreferredHeight { get; init; } = 600;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Wird der Shell beim Start übergeben; Core und Module registrieren hier ihre Ansichten.
|
||||
/// Der Launcher rendert daraus seine Einträge und öffnet je View ein Host-Fenster.
|
||||
/// </summary>
|
||||
public interface IModuleUiHost
|
||||
{
|
||||
void RegisterView(ModuleView view);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user