Editor/Widgets/List/TodoList.cs
using Editor;
using Todo.List;
using Todo.Widgets.List.ItemControllers;
using Todo.Widgets.List.Items;
using static Sandbox.ParticleModelRenderer;
using static System.Runtime.InteropServices.JavaScript.JSType;

namespace Todo.Widgets.List;

public sealed class TodoList : ListView
{
	public TodoList()
	{
		ItemSize = new Vector2( -1f, 30f );
		Layout = Layout.Column();
	}

	protected override void PaintItem( VirtualWidget item )
	{
		switch ( item.Object )
		{
			case ItemGroup group:
				ItemGroupController.OnPaint( group, item.Rect );
				break;
			case TodoEntry manual:
				ItemEntryManualController.OnPaint( manual, item.Rect );
				break;
			case CodeEntry code:
				ItemEntryCodeController.OnPaint( code, item.Rect );
				break;
			case ItemText text:
				ItemTextController.OnPaint( text, item.Rect );
				break;
		}
	}

	protected override bool OnItemPressed( VirtualWidget item, MouseEvent @event )
	{
		switch ( item.Object )
		{
			case ItemGroup group:
				ItemGroupController.OnClicked( group, @event );
				break;
			case TodoEntry manual:
				ItemEntryManualController.OnClicked( manual, @event );
				break;
			case CodeEntry code:
				ItemEntryCodeController.OnClicked( code, @event );
				break;
		}

		return false;
	}

	protected override void OnPaint()
	{
		Paint.ClearPen();
		Paint.SetBrush( Theme.ControlBackground );
		Paint.DrawRect( LocalRect, 4 );

		Paint.Antialiasing = true;
		Paint.TextAntialiasing = true;

		base.OnPaint();
	}
}