using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using PolyTrader.App.Avalonia.ViewModels;

namespace PolyTrader.App.Avalonia.Controls
{
    /// <summary>
    /// Zeigt ein beliebiges Einstellungsobjekt als kategorisiertes Formular. Ersetzt das
    /// WinForms-PropertyGrid an allen vier Stellen (Server-Settings, Account-Einstellungen,
    /// Master-Trader, ResolutionFarming) – ein Aufruf je Fenster, kein Feld-Code.
    ///
    /// Änderungen wirken direkt auf dem übergebenen Objekt; das Speichern (Datei/DB) bleibt
    /// Sache des jeweiligen Fensters – genau wie zuvor beim PropertyGrid.
    /// </summary>
    public partial class SettingsEditor : UserControl
    {
        public SettingsEditor() => AvaloniaXamlLoader.Load(this);

        /// <summary>Setzt das anzuzeigende Objekt (oder <c>null</c>, um zu leeren).</summary>
        public void Show(object? target)
        {
            var list = this.FindControl<ItemsControl>("sections")!;
            list.ItemsSource = target == null ? null : SettingsModelBuilder.Build(target);
        }
    }
}
