Phase 5-UI: Copytrading-Modul-Views (Master-Trader, Closed Trades, Account-Settings)
- MasterTradersView: Liste + PropertyGrid-Editor + Account-Zuweisung (CheckedListBox -> AssignedAccountIds), Neu/Speichern/Loeschen; persistiert via ITrackedTraderRepository + synct CopyTradingState.Traders. - ClosedTradesView: read-only Grid der geschlossenen Copytrades mit aufgeloesten Account-/Trader-Namen + Kurzauswertung (ICopyTradeLogRepository). - AccountSettingsView: Account-Auswahl + PropertyGrid fuer CopyTradingAccountSettings, Speichern via Repo + State-Sync. - IPolyTraderModule.RegisterUi erhaelt jetzt IServiceProvider (Module loesen ihre View-Abhaengigkeiten auf); Program uebergibt viewServices. - CopyTradingModule.RegisterUi registriert die 3 Views (Group "CopyTrading"). - LauncherForm haengt Modul-Views dynamisch als Buttons an toolstrip_windows (Core kennt keine Modulnamen; Bindung nur ueber View-IDs). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
b951b912f4
commit
05e0576965
@@ -8,6 +8,7 @@ using Microsoft.Extensions.DependencyInjection;
|
||||
using PolyTrader.Core.Modularity;
|
||||
using PolyTrader.Modules.CopyTrading.Persistence;
|
||||
using PolyTrader.Modules.CopyTrading.Persistence.Ef;
|
||||
using PolyTrader.Modules.CopyTrading.Ui;
|
||||
using PolyTraderSharp;
|
||||
using PolyTraderSharp.Models;
|
||||
using PolyTraderSharp.Services;
|
||||
@@ -52,9 +53,43 @@ namespace PolyTrader.Modules.CopyTrading
|
||||
services.AddHostedService<TraderAnalyticsJob>();
|
||||
}
|
||||
|
||||
public void RegisterUi(IModuleUiHost host)
|
||||
public void RegisterUi(IModuleUiHost host, IServiceProvider services)
|
||||
{
|
||||
// TODO: Master-Traders- und Geschlossene-Trades-Views als Modul-UI beisteuern.
|
||||
host.RegisterView(new ModuleView
|
||||
{
|
||||
Id = "copytrading.masters",
|
||||
Title = "Master-Trader",
|
||||
Group = "CopyTrading",
|
||||
Order = 100,
|
||||
CreateForm = () => new MasterTradersView(
|
||||
services.GetRequiredService<ITrackedTraderRepository>(),
|
||||
services.GetRequiredService<TradingState>(),
|
||||
services.GetRequiredService<CopyTradingState>())
|
||||
});
|
||||
|
||||
host.RegisterView(new ModuleView
|
||||
{
|
||||
Id = "copytrading.closedtrades",
|
||||
Title = "Geschlossene Copytrades",
|
||||
Group = "CopyTrading",
|
||||
Order = 110,
|
||||
CreateForm = () => new ClosedTradesView(
|
||||
services.GetRequiredService<ICopyTradeLogRepository>(),
|
||||
services.GetRequiredService<TradingState>(),
|
||||
services.GetRequiredService<CopyTradingState>())
|
||||
});
|
||||
|
||||
host.RegisterView(new ModuleView
|
||||
{
|
||||
Id = "copytrading.accountsettings",
|
||||
Title = "Copytrading-Account-Einstellungen",
|
||||
Group = "CopyTrading",
|
||||
Order = 120,
|
||||
CreateForm = () => new AccountSettingsView(
|
||||
services.GetRequiredService<ICopyTradingAccountSettingsRepository>(),
|
||||
services.GetRequiredService<TradingState>(),
|
||||
services.GetRequiredService<CopyTradingState>())
|
||||
});
|
||||
}
|
||||
|
||||
public Task StartAsync(CancellationToken cancellationToken) => Task.CompletedTask;
|
||||
|
||||
Reference in New Issue
Block a user