using Comal.Classes;
using InABox.Clients;
using InABox.Core;
using InABox.DynamicGrid;
using InABox.Wpf;
using InABox.WPF;
using javax.xml.crypto;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace PRSDesktop
{
public delegate void ConfigureColumnsHandler(DynamicGridColumns columns);
///
/// Interaction logic for EntitySelectionWindow.xaml
///
public partial class EntitySelectionWindow : ThemableWindow
{
public event ConfigureColumnsHandler? DoConfigureColumns;
private IEntitySelectionGrid grid;
public HashSet Entities => grid.Entities;
public EntitySelectionWindow(Type entityType, HashSet entities, Type? gridType = null)
{
InitializeComponent();
grid = typeof(EntitySelectionWindow).GetMethod(nameof(MakeGrid), BindingFlags.Instance | BindingFlags.NonPublic)
.MakeGenericMethod(gridType ?? typeof(EntitySelectionGrid<>).MakeGenericType(entityType), entityType)
.Invoke(this, new object?[] { entities }) as IEntitySelectionGrid;
LayoutGrid.Children.Add(grid as UIElement);
}
private IEntitySelectionGrid MakeGrid(HashSet entities)
where TGrid : EntitySelectionGrid, new()
where T : Entity, IRemotable, IPersistent, new()
{
var grid = new TGrid();
grid.Entities = entities;
grid.Refresh(true, true);
return grid;
}
}
}