12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using InABox.Core;
- using InABox.DynamicGrid;
- namespace InABox.Wpf;
- public interface IMasterDetailPanelPage
- {
- IBasePanel? Panel { get; }
- }
- public abstract class MasterDetailPanelPage<TMaster,TPanel> : MasterDetailPage<TMaster>, IMasterDetailPanelPage
- where TPanel : class, IBasePanel, IMasterDetailControl<TMaster>, new()
- {
- protected MasterDetailPanelPage(DynamicTabItem tab) : base(tab) { }
-
- public TPanel? Panel { get; set; }
- IBasePanel? IMasterDetailPanelPage.Panel => Panel;
-
- public override Dictionary<string, object[]>? Selected() => Panel?.Selected();
- protected abstract void DoRefresh(TPanel? panel);
- public override IDataModelSource? DataModelSource() => CheckPanel();
-
- protected override IDataModelSource? Refresh()
- {
- CheckPanel();
- DoRefresh(Panel);
- return Panel;
- }
- public override void CreateToolbarButtons(IPanelHost host)
- {
- CheckPanel().CreateToolbarButtons(host);
- }
- public override void Heartbeat(TimeSpan time)
- {
- Panel?.Heartbeat(time);
- }
- public override void Shutdown(CancelEventArgs? cancel)
- {
- Panel?.Shutdown(cancel);
- }
- private TPanel CheckPanel()
- {
- if (Panel == null)
- {
- Panel = PanelUtils.LoadPanel<TPanel>();
- Panel.OnUpdateDataModel += UpdateDataModel;
- Tab.Content = Panel;
- }
- Panel.Master = Master;
- return Panel;
- }
- }
|