SaveEventTriggerEditors.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using InABox.Core;
  2. using InABox.DynamicGrid;
  3. using PRS.Shared.Events;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace PRS.Shared.Grids.EventEditor;
  10. public class PropertyChangedSaveEventTriggerEditor<T> : IEventTriggerEditor<PropertyChangedSaveEventTrigger<T>>
  11. where T : Entity, new()
  12. {
  13. public bool Edit(PropertyChangedSaveEventTrigger<T> trigger)
  14. {
  15. var properties = DatabaseSchema.Properties(typeof(T))
  16. .Where(x => x.IsSerializable)
  17. .Select(x => x.Name)
  18. .ToList();
  19. properties.Sort();
  20. if(DynamicGridColumnNameSelectorGrid.SelectColumnName(typeof(T), properties, out var value))
  21. {
  22. trigger.TriggerProperty = DatabaseSchema.Property(typeof(T), value);
  23. return true;
  24. }
  25. else
  26. {
  27. return false;
  28. }
  29. }
  30. }
  31. public class ScriptSaveEventTriggerEditor<T> : IEventTriggerEditor<ScriptSaveEventTrigger<T>>
  32. where T : Entity, new()
  33. {
  34. public bool Edit(ScriptSaveEventTrigger<T> trigger)
  35. {
  36. var window = new ScriptEditorWindow(trigger.Script ?? trigger.DefaultScript(), scriptTitle: "Edit Custom Script trigger");
  37. if(window.ShowDialog() == true)
  38. {
  39. trigger.Script = window.Script;
  40. return true;
  41. }
  42. else
  43. {
  44. return false;
  45. }
  46. }
  47. }
  48. public class FilterSaveEventTriggerEditor<T> : IEventTriggerEditor<FilterSaveEventTrigger<T>>
  49. where T : Entity, new()
  50. {
  51. public bool Edit(FilterSaveEventTrigger<T> trigger)
  52. {
  53. var filter = trigger.Filter;
  54. if(FilterEditorWindow.Execute(ref filter))
  55. {
  56. trigger.Filter = filter;
  57. return true;
  58. }
  59. else
  60. {
  61. return false;
  62. }
  63. }
  64. }