Editor/Dialogs/ManualEntryEditorDialog.cs
using Editor;
using Todo.List;
using Todo.Widgets;

namespace Todo.Dialogs;

public sealed class ManualEntryEditorDialog : Dialog
{
	TextEdit MessageEdit;
	GroupControl GroupControl;

	TodoEntry Data;

	public ManualEntryEditorDialog( Widget parent, TodoEntry data ) : base( parent, false )
	{
		Data = data;

		WidgetUtility.SetProperties(
			this,
			400f,
			$"Edit {data.Group}",
			"edit"
		);

		Layout = Layout.Column();
		Layout.Margin = 4;
		Layout.Spacing = 5;

		Layout.Add( new Label( "Message", this ) );
		MessageEdit = Layout.Add( new TextEdit( this ) );
		MessageEdit.PlainText = data.Message;
		MessageEdit.PlaceholderText = "Todo message";

		GroupControl = new GroupControl( this, data.Group );

		Layout.AddStretchCell();

		WidgetButtonControls.AddWidgetButtonControls( this, SaveEdits, PromptDelete );
	}

	protected override void OnPaint()
	{
		Paint.ClearPen();
		Paint.SetBrush( Theme.ButtonBackground );
		Paint.DrawRect( LocalRect, 6f );
	}

	protected override void OnKeyPress( KeyEvent e )
	{
		if ( e.Key == KeyCode.Escape )
		{
			Close();
		}
	}

	private void PromptDelete()
	{
		Dialog.AskConfirm( DeleteData, "Are you sure you want to delete this?", $"Delete {Data.Message}?", "Yes", "No" );
	}

	private void DeleteData()
	{
		TodoDock.Cookies.Datas.Remove( Data );
		TodoDock.Instance.SaveAndRefresh();
		Close();
	}

	private void SaveEdits()
	{
		Data.Message = MessageEdit.PlainText;
		Data.Group = GroupControl.GetGroupName();

		TodoDock.Instance.SaveAndRefresh();

		Close();
	}
}