MasterDetailPage.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using InABox.Core;
  5. using InABox.DynamicGrid;
  6. namespace InABox.Wpf;
  7. public abstract class MasterDetailPage<TMaster> : IMasterDetailPage<TMaster>
  8. {
  9. public event DataModelUpdateEvent? OnUpdateDataModel;
  10. protected MasterDetailPage(DynamicTabItem tab)
  11. {
  12. Tab = tab;
  13. }
  14. public DynamicTabItem Tab { get; set; }
  15. public abstract Dictionary<string, object[]>? Selected();
  16. public IDataModelSource? Refresh(TMaster? master)
  17. {
  18. Master = master;
  19. return Refresh();
  20. }
  21. protected abstract IDataModelSource? Refresh();
  22. public abstract IDataModelSource? DataModelSource();
  23. public virtual void CreateToolbarButtons(IPanelHost host)
  24. {
  25. }
  26. public TMaster? Master { get; set; }
  27. protected void UpdateDataModel(string sectionName, DataModel model)
  28. {
  29. OnUpdateDataModel?.Invoke(sectionName, model);
  30. }
  31. public virtual void Heartbeat(TimeSpan time)
  32. {
  33. }
  34. public virtual void Shutdown(CancelEventArgs? cancel)
  35. {
  36. }
  37. }