DynamicGridCommon.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Windows.Controls;
  5. using InABox.Core;
  6. namespace InABox.DynamicGrid;
  7. public abstract class DynamicColumnBase : BaseObject, IDynamicColumnBase
  8. {
  9. public void DoEntityChanged(string columnname, Dictionary<string,object?> changes)
  10. {
  11. EntityChanged?.Invoke(this, new DynamicColumnEntityChangedEventArgs(columnname, changes));
  12. }
  13. public event DynamicColumnEntityChangedEvent? EntityChanged;
  14. public object? Tag { get; set; }
  15. }
  16. public enum DynamicGridOption
  17. {
  18. AddRows,
  19. EditRows,
  20. DeleteRows,
  21. FilterRows,
  22. SelectColumns,
  23. ExportData,
  24. ImportData,
  25. MultiSelect,
  26. DragSource,
  27. DragTarget,
  28. DirectEdit,
  29. ShowHelp,
  30. Print,
  31. RecordCount
  32. }
  33. public delegate bool OnFilterRecord(CoreRow row);
  34. public delegate void OnCreateItem(object sender, BaseObject item);
  35. public delegate bool OnAfterCreateItem(object sender, BaseObject item);
  36. public delegate T OnCreateItem<T>();
  37. public delegate void OnDefineLookup(ILookupEditorControl editor);
  38. public delegate void OnGridCustomiseEditor(DynamicEditorGrid sender, DynamicGridColumn column, BaseEditor editor);
  39. public delegate void OnFormCustomiseEditor(IDynamicEditorForm sender, object[] items, DynamicGridColumn column, BaseEditor editor);
  40. public delegate void ValidateEvent<T>(object sender, T[] items, List<string> errors);
  41. /// <summary>
  42. ///
  43. /// </summary>
  44. /// <typeparam name="T"></typeparam>
  45. /// <param name="sender"></param>
  46. /// <param name="items">The array of items being edited; <see langword="null"/> is synonymous with an empty array.</param>
  47. /// <param name="column"></param>
  48. /// <param name="editor"></param>
  49. public delegate void OnCustomiseEditor<T>(IDynamicEditorForm sender, T[]? items, DynamicGridColumn column, BaseEditor editor);
  50. public delegate void OnLoadEditorButtons<T>(T item, DynamicEditorButtons buttons);
  51. public delegate void OnReconfigureEditors(DynamicEditorGrid sender);
  52. public class AfterEditorValueChangedArgs
  53. {
  54. public string ColumnName { get; set; }
  55. public Dictionary<string, object?> ChangedValues { get; set; }
  56. public AfterEditorValueChangedArgs(string columnName, Dictionary<string, object?> changedValues)
  57. {
  58. ColumnName = columnName;
  59. ChangedValues = changedValues;
  60. }
  61. }
  62. public delegate Dictionary<string, object?>? OnAfterEditorValueChanged(DynamicEditorGrid sender, AfterEditorValueChangedArgs args);
  63. //public delegate void OnGridChanged(IDynamicGrid sender);
  64. public delegate void OnLoadPage(IDynamicEditorPage page);
  65. public delegate void OnSelectPage(DynamicEditorGrid sender, BaseObject[]? items);
  66. public delegate void OnUnloadPage(IDynamicEditorPage page, bool saved);
  67. public delegate void OnCustomiseColumns(object sender, DynamicGridColumns columns);
  68. public delegate BaseEditor? OnGetEditor(DynamicGridColumn column);
  69. public delegate decimal OnGetEditorSequence(DynamicGridColumn column);
  70. public delegate IFilter? OnDefineLookupFilter(Type type, string column);
  71. public delegate IFilter? OnDefineFilter(Type type);
  72. public delegate IList<string>? OnValidateData(object sender, BaseObject[] items);
  73. public delegate void OnPrintData(object sender);
  74. public delegate void EntitySaveEvent(IDynamicEditorForm editor, BaseObject[] items);
  75. public delegate bool DynamicGridButtonClickEvent(Button button, CoreRow[] rows);
  76. public delegate void OnContextMenuOpening(CoreTreeNode? node, ContextMenu menu);
  77. public class DynamicGridSelectionEventArgs : CancelEventArgs
  78. {
  79. public DynamicGridSelectionEventArgs(CoreRow[]? rows)
  80. {
  81. Rows = rows;
  82. }
  83. public CoreRow[]? Rows { get; }
  84. }
  85. public delegate void SelectItemHandler(object sender, DynamicGridSelectionEventArgs e);
  86. public delegate void OnDoubleClick(object sender, HandledEventArgs args);
  87. public class DynamicGridCellClickEventArgs : HandledEventArgs
  88. {
  89. public CoreRow? Row { get; set; }
  90. public DynamicColumnBase? Column { get; set; }
  91. public DynamicGridCellClickEventArgs(CoreRow? row, DynamicColumnBase? column)
  92. {
  93. Row = row;
  94. Column = column;
  95. }
  96. }
  97. public delegate void OnCellDoubleClick(object sender, DynamicGridCellClickEventArgs args);
  98. public class BeforeRefreshEventArgs : CancelEventArgs { }
  99. public delegate void BeforeRefreshEventHandler(object sender, BeforeRefreshEventArgs args);
  100. public class AfterRefreshEventArgs : EventArgs { }
  101. public delegate void AfterRefreshEventHandler(object sender, AfterRefreshEventArgs args);