using System; using System.Collections.Generic; using System.ComponentModel; using System.Windows.Controls; using InABox.Core; namespace InABox.DynamicGrid { public abstract class DynamicColumnBase : BaseObject, IDynamicColumnBase { public void DoEntityChanged(string columnname, Dictionary changes) { EntityChanged?.Invoke(this, new DynamicColumnEntityChangedEventArgs(columnname, changes)); } public event DynamicColumnEntityChangedEvent? EntityChanged; } public enum DynamicGridOption { AddRows, EditRows, DeleteRows, FilterRows, SelectColumns, ExportData, ImportData, MultiSelect, DragSource, DragTarget, DirectEdit, ShowHelp, Print, RecordCount } public delegate bool OnFilterRecord(CoreRow row); public delegate void OnCreateItem(object sender, BaseObject item); public delegate T OnCreateItem(); public delegate void OnDefineLookup(ILookupEditorControl editor); public delegate void OnGridCustomiseEditor(DynamicEditorGrid sender, DynamicGridColumn column, BaseEditor editor); public delegate void OnFormCustomiseEditor(IDynamicEditorForm sender, object[] items, DynamicGridColumn column, BaseEditor editor); public delegate void ValidateEvent(object sender, T[] items, List errors); /// /// /// /// /// /// The array of items being edited; is synonymous with an empty array. /// /// public delegate void OnCustomiseEditor(IDynamicEditorForm sender, T[]? items, DynamicGridColumn column, BaseEditor editor); public delegate void OnLoadEditorButtons(T item, DynamicEditorButtons buttons); public delegate void OnReconfigureEditors(DynamicEditorGrid sender); public class AfterEditorValueChangedArgs { public string ColumnName { get; set; } public Dictionary ChangedValues { get; set; } public AfterEditorValueChangedArgs(string columnName, Dictionary changedValues) { ColumnName = columnName; ChangedValues = changedValues; } } public delegate Dictionary? OnAfterEditorValueChanged(DynamicEditorGrid sender, AfterEditorValueChangedArgs args); //public delegate void OnGridChanged(IDynamicGrid sender); public delegate void OnLoadPage(IDynamicEditorPage page); public delegate void OnSelectPage(DynamicEditorGrid sender, BaseObject[]? items); public delegate void OnUnloadPage(IDynamicEditorPage page, bool saved); public delegate void OnCustomiseColumns(object sender, DynamicGridColumns columns); public delegate BaseEditor? OnGetEditor(DynamicGridColumn column); public delegate decimal OnGetEditorSequence(DynamicGridColumn column); public delegate IFilter? OnDefineLookupFilter(Type type, string column); public delegate IFilter? OnDefineFilter(Type type); public delegate IList? OnValidateData(object sender, BaseObject[] items); public delegate void OnPrintData(object sender); public delegate void EntitySaveEvent(IDynamicEditorForm editor, BaseObject[] items); public delegate bool DynamicGridButtonClickEvent(Button button, CoreRow[] rows); public class DynamicGridSelectionEventArgs : CancelEventArgs { public DynamicGridSelectionEventArgs(CoreRow[]? rows) { Rows = rows; } public CoreRow[]? Rows { get; } } public delegate void SelectItemHandler(object sender, DynamicGridSelectionEventArgs e); public delegate void OnDoubleClick(object sender, HandledEventArgs args); public class DynamicGridCellClickEventArgs : HandledEventArgs { public CoreRow Row { get; set; } public DynamicGridColumn Column { get; set; } public DynamicGridCellClickEventArgs(CoreRow row, DynamicGridColumn column) { Row = row; Column = column; } } public delegate void OnCellDoubleClick(object sender, DynamicGridCellClickEventArgs args); public class BeforeRefreshEventArgs : CancelEventArgs { } public delegate void BeforeRefreshEventHandler(object sender, BeforeRefreshEventArgs args); public class AfterRefreshEventArgs : EventArgs { } public delegate void AfterRefreshEventHandler(object sender, AfterRefreshEventArgs args); }