using Avalonia.Controls;
using Avalonia.Interactivity;

namespace ClawdDotNet.Desktop.Views;

/// <summary>
/// Kleiner Editor für die langen Textfelder eines Agenten (Identity, Soul).
///
/// <para>Ohne eigenes Ansichtsmodell: Der Dialog hat einen Titel, ein Textfeld und zwei
/// Schaltflächen. Ein Ansichtsmodell dafür wäre eine Datei mehr, ohne dass irgendetwas
/// prüfbar würde.</para>
/// </summary>
public partial class TextEditorWindow : Window
{
    private string? _result;

    public TextEditorWindow()
    {
        InitializeComponent();
    }

    /// <summary>
    /// Zeigt den Editor und liefert den bearbeiteten Text — oder <c>null</c>, wenn
    /// abgebrochen wurde. Das Schließen über das Fensterkreuz gilt als Abbruch: Sonst
    /// wäre ein weggeklickter Dialog dasselbe wie ein bestätigter.
    /// </summary>
    public static async Task<string?> ShowAsync(Window owner, string title, string text)
    {
        var window = new TextEditorWindow { Title = title };
        window.TitleText.Text = title;
        window.Editor.Text = text;

        await window.ShowDialog(owner);
        return window._result;
    }

    private void OnSave(object? sender, RoutedEventArgs e)
    {
        _result = Editor.Text ?? "";
        Close();
    }

    private void OnCancel(object? sender, RoutedEventArgs e)
    {
        _result = null;
        Close();
    }
}
