EntitySelectionWindow.xaml.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using Comal.Classes;
  2. using InABox.Clients;
  3. using InABox.Core;
  4. using InABox.DynamicGrid;
  5. using InABox.Wpf;
  6. using InABox.WPF;
  7. using javax.xml.crypto;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Linq;
  11. using System.Reflection;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14. using System.Windows;
  15. using System.Windows.Controls;
  16. using System.Windows.Data;
  17. using System.Windows.Documents;
  18. using System.Windows.Input;
  19. using System.Windows.Media;
  20. using System.Windows.Media.Imaging;
  21. using System.Windows.Shapes;
  22. namespace PRSDesktop
  23. {
  24. public delegate void ConfigureColumnsHandler(DynamicGridColumns columns);
  25. /// <summary>
  26. /// Interaction logic for EntitySelectionWindow.xaml
  27. /// </summary>
  28. public partial class EntitySelectionWindow : ThemableWindow
  29. {
  30. public event ConfigureColumnsHandler? DoConfigureColumns;
  31. private IEntitySelectionGrid grid;
  32. public HashSet<Guid> Entities => grid.Entities;
  33. public EntitySelectionWindow(Type entityType, HashSet<Guid> entities, Type? gridType = null)
  34. {
  35. InitializeComponent();
  36. grid = typeof(EntitySelectionWindow).GetMethod(nameof(MakeGrid), BindingFlags.Instance | BindingFlags.NonPublic)
  37. .MakeGenericMethod(gridType ?? typeof(EntitySelectionGrid<>).MakeGenericType(entityType), entityType)
  38. .Invoke(this, new object?[] { entities }) as IEntitySelectionGrid;
  39. LayoutGrid.Children.Add(grid as UIElement);
  40. }
  41. private IEntitySelectionGrid MakeGrid<TGrid, T>(HashSet<Guid> entities)
  42. where TGrid : EntitySelectionGrid<T>, new()
  43. where T : Entity, IRemotable, IPersistent, new()
  44. {
  45. var grid = new TGrid();
  46. grid.Entities = entities;
  47. grid.Refresh(true, true);
  48. return grid;
  49. }
  50. }
  51. }