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; } } }