using DevExpress.XtraLayout.Utils;
|
using Yw.EPAnet;
|
|
namespace Yw.WinFrmUI
|
{
|
public partial class SetHydroCalcuPrefixCtrl : DevExpress.XtraEditors.XtraUserControl
|
{
|
public SetHydroCalcuPrefixCtrl()
|
{
|
InitializeComponent();
|
}
|
|
/// <summary>
|
/// 控件最小宽度
|
/// </summary>
|
public const int ControlMinWidth = 350;
|
|
/// <summary>
|
/// 水力计算事件
|
/// </summary>
|
public event Action<Yw.Model.HydroModelInfo> HydroCalcuEvent;
|
|
/// <summary>
|
/// 水力查看事件
|
/// </summary>
|
public event Action<Yw.Model.HydroParterInfo> HydroViewEvent;
|
|
private SetHydroCalcuPrefixViewModel _vm = null;
|
private SetHydroCalcuPrefixManager _wizard;
|
private Func<Yw.Model.HydroModelInfo> _hydroInfoFunc = null;
|
|
/// <summary>
|
/// 初始化数据
|
/// </summary>
|
public void InitialData(Func<Yw.Model.HydroModelInfo> hydroInfoFunc)
|
{
|
_hydroInfoFunc = hydroInfoFunc;
|
}
|
|
/// <summary>
|
/// 绑定数据
|
/// </summary>
|
public void SetBindingData()
|
{
|
var hydroInfo = _hydroInfoFunc?.Invoke();
|
if (hydroInfo == null)
|
{
|
return;
|
}
|
this.navigationFrame.Controls.Clear();
|
this.navigationFrame.Pages.Clear();
|
var wizardPageList = new List<IWizardPage<SetHydroCalcuPrefixViewModel>>();
|
if (hydroInfo.Waterboxs != null && hydroInfo.Waterboxs.Count > 0)
|
{
|
var setWaterboxCalcuPrefixListCtrl = new SetWaterboxCalcuPrefixListCtrl();
|
setWaterboxCalcuPrefixListCtrl.ViewWaterboxEvent += (waterbox) =>
|
{
|
if (waterbox == null)
|
{
|
return;
|
}
|
this.HydroViewEvent?.Invoke(waterbox);
|
};
|
wizardPageList.Add(setWaterboxCalcuPrefixListCtrl);
|
AddPage(setWaterboxCalcuPrefixListCtrl);
|
}
|
if (hydroInfo.Pumps != null && hydroInfo.Pumps.Count > 0)
|
{
|
var setPumpCalcuPrefixListCtrl = new SetPumpCalcuPrefixListCtrl();
|
setPumpCalcuPrefixListCtrl.ViewPumpEvent += (pump) =>
|
{
|
if (pump == null)
|
{
|
return;
|
}
|
this.HydroViewEvent?.Invoke(pump);
|
};
|
wizardPageList.Add(setPumpCalcuPrefixListCtrl);
|
AddPage(setPumpCalcuPrefixListCtrl);
|
}
|
if (hydroInfo.Nozzles != null && hydroInfo.Nozzles.Count > 0)
|
{
|
var setNozzleCalcuPrefixListCtrl = new SetNozzleCalcuPrefixListCtrl();
|
setNozzleCalcuPrefixListCtrl.ViewNozzleEvent += (nozzle) =>
|
{
|
if (nozzle == null)
|
{
|
return;
|
}
|
this.HydroViewEvent?.Invoke(nozzle);
|
};
|
wizardPageList.Add(setNozzleCalcuPrefixListCtrl);
|
AddPage(setNozzleCalcuPrefixListCtrl);
|
}
|
if (wizardPageList.Count < 1)
|
{
|
return;
|
}
|
|
_vm = new SetHydroCalcuPrefixViewModel();
|
_vm.HydroInfo = hydroInfo;
|
_vm.FirstPage = wizardPageList.First();
|
_vm.LastPage = wizardPageList.Last();
|
_wizard = new SetHydroCalcuPrefixManager(_vm);
|
_wizard.SelectedPageChangedEvent += (page, index) =>
|
{
|
this.itemForPrev.Visibility = page.AllowPrev ? LayoutVisibility.Always : LayoutVisibility.Never;
|
this.itemForNext.Visibility = page.AllowNext ? LayoutVisibility.Always : LayoutVisibility.Never;
|
this.itemForCalcu.Visibility = page.AllowComplete ? LayoutVisibility.Always : LayoutVisibility.Never;
|
this.navigationFrame.SelectedPageIndex = index;
|
};
|
_wizard.SelectedPageStateChangedEvent += (page, index) =>
|
{
|
this.itemForPrev.Visibility = page.AllowPrev ? LayoutVisibility.Always : LayoutVisibility.Never;
|
this.itemForNext.Visibility = page.AllowNext ? LayoutVisibility.Always : LayoutVisibility.Never;
|
this.itemForCalcu.Visibility = page.AllowComplete ? LayoutVisibility.Always : LayoutVisibility.Never;
|
};
|
_wizard.InitialManager(wizardPageList.ToArray());
|
}
|
|
//添加page
|
private void AddPage(Control ctrl)
|
{
|
var page = new DevExpress.XtraBars.Navigation.NavigationPage();
|
this.navigationFrame.Controls.Add(page);
|
this.navigationFrame.Pages.Add(page);
|
ctrl.Dock = DockStyle.Fill;
|
page.Controls.Add(ctrl);
|
}
|
|
//上一步
|
private void btnPrev_Click(object sender, EventArgs e)
|
{
|
if (_wizard != null)
|
{
|
_wizard.Prev();
|
}
|
}
|
|
//下一步
|
private void btnNext_Click(object sender, EventArgs e)
|
{
|
if (_wizard != null)
|
{
|
_wizard.Next();
|
}
|
}
|
|
//计算
|
private void btnComplete_Click(object sender, EventArgs e)
|
{
|
if (_wizard != null)
|
{
|
var bol = _wizard.Complete();
|
if (bol)
|
{
|
var hydroInfo = _hydroInfoFunc?.Invoke();
|
if (hydroInfo == null)
|
{
|
return;
|
}
|
this.HydroCalcuEvent?.Invoke(hydroInfo);
|
}
|
}
|
}
|
|
}
|
}
|