Editor/Elements/ListView.cs
using System.Collections.Generic;
using System.Linq;
using Editor;
namespace Changelog.Elements;
public abstract class ListView<T> : ListView where T : IAssetListEntry
{
public IEnumerable<T> Entries
=> Items.OfType<T>();
public IEnumerable<T> Selected
=> SelectedItems.OfType<T>();
public ListView( Widget parent ) : base( parent )
{
ItemSize = new Vector2( 0, 24 );
ItemPaint = PaintListItem;
ItemSpacing = 0;
}
private void PaintListItem( VirtualWidget widget )
{
if ( widget.Object is not T item ) return;
OnPaint( item, widget );
}
protected abstract void OnPaint( T item, VirtualWidget widget );
}