using System;
using System.ComponentModel;
using Avalonia.Controls;
using FluentAvalonia.Core;
using FluentAvalonia.UI.Controls;
using FluentAvalonia.UI.Controls.Primitives;
namespace Artemis.UI.Shared.Flyouts;
///
/// Defines a flyout that hosts a data model picker.
///
public sealed class DataModelPickerFlyout : PickerFlyoutBase
{
private DataModelPicker.DataModelPicker? _picker;
///
/// Gets the data model picker that the flyout hosts.
///
public DataModelPicker.DataModelPicker DataModelPicker => _picker ??= new DataModelPicker.DataModelPicker();
///
/// Raised when the Confirmed button is tapped indicating the new Color should be applied
///
public event TypedEventHandler? Confirmed;
///
/// Raised when the Dismiss button is tapped, indicating the new color should not be applied
///
public event TypedEventHandler? Dismissed;
///
protected override Control CreatePresenter()
{
_picker ??= new DataModelPicker.DataModelPicker();
PickerFlyoutPresenter presenter = new() {Content = DataModelPicker};
presenter.Confirmed += OnFlyoutConfirmed;
presenter.Dismissed += OnFlyoutDismissed;
return presenter;
}
///
protected override void OnConfirmed()
{
Confirmed?.Invoke(this, EventArgs.Empty);
Hide();
}
///
protected override void OnOpening(CancelEventArgs args)
{
base.OnOpening(args);
(Popup.Child as PickerFlyoutPresenter)?.Classes.Set(":acceptdismiss", true);
}
private void OnFlyoutDismissed(PickerFlyoutPresenter sender, object args)
{
Dismissed?.Invoke(this, EventArgs.Empty);
Hide();
}
private void OnFlyoutConfirmed(PickerFlyoutPresenter sender, object args)
{
OnConfirmed();
}
}