IDynamicEditorForm.cs 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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 OnAfterEditorValueChanged? OnAfterEditorValueChanged;
  20. event EditorValueChangedHandler? OnEditorValueChanged;
  21. event OnSelectPage? OnSelectPage;
  22. DynamicGridSaveEvent? OnSaveItem { set; }
  23. DynamicEditorPages? Pages { get; }
  24. delegate void OnReloadEventHandler(IDynamicEditorForm form);
  25. event OnReloadEventHandler? OnReload;
  26. bool ReadOnly { get; set; }
  27. BaseObject[] Items { get; set; }
  28. void Setup(Type type, DynamicEditorPages? pages = null, DynamicEditorButtons? buttons = null,
  29. Func<Type, CoreTable?>? pageDataHandler = null, bool preloadPages = false);
  30. bool TryFindEditor(string columnname, [NotNullWhen(true)] out IDynamicEditorControl? editor);
  31. object? GetEditorValue(string columnName);
  32. void SetEditorValue(string columnName, object? value);
  33. void SetLayoutType<T>() where T : DynamicEditorGridLayout;
  34. void SetLayout(DynamicEditorGridLayout layout);
  35. void UnloadEditorPages(bool saved);
  36. }
  37. public static class DynamicEditorFormExtensions
  38. {
  39. public static bool TryFindEditor<TEditor>(this IDynamicEditorForm form, string columnname, [NotNullWhen(true)] out TEditor? editor)
  40. where TEditor : BaseDynamicEditorControl
  41. {
  42. if(form.TryFindEditor(columnname, out var control) && control is TEditor editorControl)
  43. {
  44. editor = editorControl;
  45. return true;
  46. }
  47. else
  48. {
  49. editor = null;
  50. return false;
  51. }
  52. }
  53. public static IDynamicEditorControl FindEditor(this IDynamicEditorForm form, string columnName)
  54. {
  55. form.TryFindEditor(columnName, out var editor);
  56. return editor;
  57. }
  58. public static TEditor? FindEditor<TEditor>(this IDynamicEditorForm form, string columnName)
  59. where TEditor : BaseDynamicEditorControl
  60. {
  61. form.TryFindEditor<TEditor>(columnName, out var editor);
  62. return editor;
  63. }
  64. }
  65. }