using InABox.Core;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Syncfusion.Windows.Tools.Controls;
using System.Threading;
namespace InABox.DynamicGrid;
public interface IDynamicItemsListGrid : IDynamicGrid
{
///
/// The items list that forms the source for the rows of this grid
///
///
/// Note: This must be a list of type , otherwise the assignment to this property will not work.
///
IList Items { get; set; }
}
public class DynamicItemsListGrid : DynamicGrid, IDynamicItemsListGrid
where T : BaseObject, new()
{
private List _items = [];
public List Items
{
get => _items;
set => _items = value;
}
IList IDynamicItemsListGrid.Items
{
get => _items;
set => _items = value as List ?? new List();
}
protected override void Init()
{
}
protected override void DoReconfigure(DynamicGridOptions options)
{
}
public override void DeleteItems(params CoreRow[] rows)
{
foreach (var row in rows.OrderByDescending(x => x.Index))
{
Items.RemoveAt(_recordmap[row].Index);
}
}
public override T LoadItem(CoreRow row)
{
return Items[_recordmap[row].Index];
}
protected override void Reload(
Filters criteria, Columns columns, ref SortOrder? sort,
CancellationToken token, Action action)
{
var result = new CoreTable();
result.LoadColumns(columns);
result.LoadRows(Items);
action.Invoke(result, null);
}
public override void SaveItem(T item)
{
if (!Items.Contains(item))
{
Items.Add(item);
}
}
}