SecurityGroupUserGrid.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using com.sun.org.apache.xpath.@internal.axes;
  2. using com.sun.security.ntlm;
  3. using com.sun.xml.@internal.bind.annotation;
  4. using Comal.Classes;
  5. using InABox.Clients;
  6. using InABox.Core;
  7. using InABox.DynamicGrid;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Linq;
  11. using System.Text;
  12. using System.Threading.Tasks;
  13. namespace PRSDesktop
  14. {
  15. public class SecurityGroupUserGrid : DynamicOneToManyGrid<SecurityGroup, User>
  16. {
  17. public SecurityGroupUserGrid()
  18. {
  19. Options.BeginUpdate()
  20. .Clear()
  21. .AddRange(DynamicGridOption.AddRows)
  22. .AddRange(DynamicGridOption.DeleteRows)
  23. .AddRange(DynamicGridOption.MultiSelect)
  24. .EndUpdate();
  25. }
  26. protected override void DoAdd(bool OpenEditorOnDirectEdit = false)
  27. {
  28. var IDs = Items.Select(x => x.ID).ToArray();
  29. var filters = new Filters<User>();
  30. filters.Add(LookupFactory.DefineFilter<User>());
  31. filters.Add(new Filter<User>(x => x.ID).NotInList(IDs));
  32. var dlg = new MultiSelectDialog<User>(filters.Combine(), null, true);
  33. if (dlg.ShowDialog())
  34. {
  35. SaveItems(dlg.Items());
  36. Refresh(false, true);
  37. }
  38. }
  39. protected override void OnDeleteItem(User item)
  40. {
  41. item.SecurityGroup.ID = Guid.Empty;
  42. new Client<User>().Save(item, "Cleared security group");
  43. }
  44. }
  45. }