IDynamicGrid.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #define scrolling
  2. //#define newgrid
  3. using System;
  4. using System.Linq.Expressions;
  5. using System.Windows;
  6. using System.Windows.Controls;
  7. using System.Windows.Media.Imaging;
  8. using InABox.Core;
  9. using Syncfusion.Data;
  10. namespace InABox.DynamicGrid
  11. {
  12. public enum DynamicGridButtonPosition
  13. {
  14. Left,
  15. Right
  16. }
  17. public interface IDynamicGrid
  18. {
  19. Thickness Margin { get; set; }
  20. DynamicGridColumns MasterColumns { get; }
  21. DynamicGridColumns VisibleColumns { get; }
  22. CoreTable Data { get; set; }
  23. CoreRow[] SelectedRows { get; set; }
  24. double RowHeight { get; set; }
  25. double HeaderHeight { get; set; }
  26. double FontSize { get; set; }
  27. void Refresh(bool columns, bool data);
  28. public abstract void Reconfigure();
  29. /// <summary>
  30. /// Add <paramref name="onReconfigure"/> to <see cref="OnReconfigure"/>, and then call <see cref="Reconfigure"/>
  31. /// </summary>
  32. /// <param name="onReconfigure"></param>
  33. public void Reconfigure(ReconfigureEvent onReconfigure);
  34. void InitialiseEditorForm(IDynamicEditorForm editor, object[] items, Func<Type, CoreTable>? pageDataHandler = null, bool preloadPages = false);
  35. bool EditItems(object[] items, Func<Type, CoreTable>? PageDataHandler = null, bool PreloadPages = false);
  36. //bool DirectEdit(CoreTable data);
  37. event OnFilterRecord OnFilterRecord;
  38. event OnCreateItem OnCreateItem;
  39. event OnDoubleClick? OnDoubleClick;
  40. delegate void ReconfigureEvent(FluentList<DynamicGridOption> options);
  41. event ReconfigureEvent? OnReconfigure;
  42. void AddVisualFilter(string column, string value, FilterType filtertype = FilterType.Contains);
  43. Button AddButton(string caption, BitmapImage? image, string? tooltip, Func<Button, CoreRow[], bool> action, DynamicGridButtonPosition position = DynamicGridButtonPosition.Left);
  44. event OnDefineFilter OnDefineFilter;
  45. event OnPrintData OnPrintData;
  46. event OnCustomiseColumns OnCustomiseColumns;
  47. event BeforeRefreshEventHandler BeforeRefresh;
  48. event AfterRefreshEventHandler AfterRefresh;
  49. event EntitySaveEvent? OnAfterSave;
  50. event EntitySaveEvent? OnBeforeSave;
  51. int DesiredWidth();
  52. void ConfigureColumns(DynamicGridColumns columns /*, bool dolookups */);
  53. void AddHiddenColumn(string column);
  54. void UpdateRow<TType>(CoreRow row, string column, TType value, bool refresh = true);
  55. void UpdateRow<T, TType>(CoreRow row, Expression<Func<T, TType>> column, TType value, bool refresh = true);
  56. }
  57. }