using InABox.Core; using InABox.DynamicGrid; using PRS.Shared.Events; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace PRS.Shared.Grids.EventEditor; public class PropertyChangedSaveEventTriggerEditor : IEventTriggerEditor> where T : Entity, new() { public bool Edit(PropertyChangedSaveEventTrigger trigger) { var properties = DatabaseSchema.Properties(typeof(T)) .Where(x => x.IsSerializable) .Select(x => x.Name) .ToList(); properties.Sort(); if(DynamicGridColumnNameSelectorGrid.SelectColumnName(typeof(T), properties, out var value)) { trigger.TriggerProperty = DatabaseSchema.Property(typeof(T), value); return true; } else { return false; } } } public class ScriptSaveEventTriggerEditor : IEventTriggerEditor> where T : Entity, new() { public bool Edit(ScriptSaveEventTrigger trigger) { var window = new ScriptEditorWindow(trigger.Script ?? trigger.DefaultScript(), scriptTitle: "Edit Custom Script trigger"); if(window.ShowDialog() == true) { trigger.Script = window.Script; return true; } else { return false; } } } public class FilterSaveEventTriggerEditor : IEventTriggerEditor> where T : Entity, new() { public bool Edit(FilterSaveEventTrigger trigger) { var filter = trigger.Filter; if(FilterEditorWindow.Execute(ref filter)) { trigger.Filter = filter; return true; } else { return false; } } }