IDynamicEditorForm.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. using System;
  2. using System.Diagnostics.CodeAnalysis;
  3. using InABox.Core;
  4. namespace InABox.DynamicGrid
  5. {
  6. public interface IDynamicEditorForm
  7. {
  8. event OnBeforeLoad OnBeforeLoad;
  9. void BeforeLoad();
  10. event OnAfterLoad OnAfterLoad;
  11. void AfterLoad();
  12. event OnValidateData? OnValidateData;
  13. OnCustomiseColumns? OnCustomiseColumns { set; }
  14. OnDefineLookupFilter? OnDefineFilter { set; }
  15. OnDefineLookup? OnDefineLookups { set; }
  16. DefineEditorEventHandler? OnDefineEditor { set; }
  17. event OnFormCustomiseEditor? OnFormCustomiseEditor;
  18. OnReconfigureEditors? OnReconfigureEditors { set; }
  19. event OnCreateEditorControl? OnCreateEditorControl;
  20. event OnAfterEditorValueChanged? OnAfterEditorValueChanged;
  21. event EditorValueChangedHandler? OnEditorValueChanged;
  22. event OnSelectPage? OnSelectPage;
  23. DynamicGridSaveEvent? OnSaveItem { set; }
  24. DynamicEditorPages? Pages { get; }
  25. delegate void OnReloadEventHandler(IDynamicEditorForm form);
  26. event OnReloadEventHandler? OnReload;
  27. bool ReadOnly { get; set; }
  28. BaseObject[] Items { get; set; }
  29. void Setup(Type type, DynamicEditorPages? pages = null, DynamicEditorButtons? buttons = null,
  30. Func<Type, CoreTable?>? pageDataHandler = null, bool preloadPages = false);
  31. bool TryFindEditor(string columnname, [NotNullWhen(true)] out IDynamicEditorControl? editor);
  32. object? GetEditorValue(string columnName);
  33. void SetEditorValue(string columnName, object? value);
  34. void SetLayoutType<T>() where T : DynamicEditorGridLayout;
  35. void SetLayout(DynamicEditorGridLayout layout);
  36. void UnloadEditorPages(bool saved);
  37. }
  38. public static class DynamicEditorFormExtensions
  39. {
  40. public static bool TryFindEditor<TEditor>(this IDynamicEditorForm form, string columnname, [NotNullWhen(true)] out TEditor? editor)
  41. where TEditor : BaseDynamicEditorControl
  42. {
  43. if(form.TryFindEditor(columnname, out var control) && control is TEditor editorControl)
  44. {
  45. editor = editorControl;
  46. return true;
  47. }
  48. else
  49. {
  50. editor = null;
  51. return false;
  52. }
  53. }
  54. public static IDynamicEditorControl FindEditor(this IDynamicEditorForm form, string columnName)
  55. {
  56. form.TryFindEditor(columnName, out var editor);
  57. return editor;
  58. }
  59. public static TEditor? FindEditor<TEditor>(this IDynamicEditorForm form, string columnName)
  60. where TEditor : BaseDynamicEditorControl
  61. {
  62. form.TryFindEditor<TEditor>(columnName, out var editor);
  63. return editor;
  64. }
  65. }
  66. }