using DevExpress.XtraLayout.Utils;
|
using Mapster;
|
|
namespace PBS.WinFrmUI.Hydro
|
{
|
public partial class QuickModelingPage : DocumentPage
|
{
|
public QuickModelingPage()
|
{
|
InitializeComponent();
|
this.layoutControl1.SetupLayoutControl();
|
this.ClosePageEvent += CreateXhsSchemeDlg_FormClosing;
|
}
|
|
/// <summary>
|
/// 重载数据
|
/// </summary>
|
public event Action<double> ReloadDataEvent;
|
|
private QuickModelingViewModel _vm = null;//视图
|
private QuickModelingManager _wizard = null;//管理器
|
private List<IWizardPageAsync<QuickModelingViewModel>> _allPageList = null;//所有页面列表
|
private List<IWizardPageAsync<QuickModelingViewModel>> _bindingPageList = null;//绑定页面列表
|
|
/// <summary>
|
/// 绑定数据
|
/// </summary>
|
public void SetBindingData
|
(
|
|
)
|
{
|
if (project == null)
|
{
|
return;
|
}
|
if (projectSite == null)
|
{
|
return;
|
}
|
if (hydroInfo == null)
|
{
|
return;
|
}
|
var hydroInfoRhs = hydroInfo.Adapt<Yw.Model.HydroModelInfo>();
|
_vm = new QuickModelingViewModel(project, projectSite, hydroInfoRhs, allSchemeList);
|
InitialManager();
|
}
|
|
//初始化管理器
|
private void InitialManager()
|
{
|
if (_vm == null)
|
{
|
return;
|
}
|
InitialPages();
|
InitialSteps();
|
_wizard = new QuickModelingManager(_vm);
|
_wizard.SelectedPageChangedEvent += _wizard_SelectedPageChangedEvent;
|
_wizard.SelectedPageStateChangedEvent += _wizard_SelectedPageStateChangedEvent;
|
_wizard.InitialManager(_bindingPageList?.ToArray());
|
}
|
|
//初始化页面
|
private void InitialPages()
|
{
|
if (_vm == null)
|
{
|
return;
|
}
|
_bindingPageList = new List<IWizardPageAsync<QuickModelingViewModel>>();
|
if (_allPageList == null)
|
{
|
_allPageList = new List<IWizardPageAsync<QuickModelingViewModel>>();
|
}
|
|
this.navigationFrame.Pages.Clear();
|
|
//基础信息
|
var pageInfo = _allPageList.Find(x => x is CreateXhsSchemeInfoPage) as CreateXhsSchemeInfoPage;
|
if (pageInfo == null)
|
{
|
pageInfo = new CreateXhsSchemeInfoPage();
|
pageInfo.Dock = DockStyle.Fill;
|
_allPageList.Add(pageInfo);
|
}
|
_bindingPageList.Add(pageInfo);
|
this.navigationFrame.AddPage(pageInfo);
|
|
if (_vm.Scheme != null && _vm.Scheme.ChangeTypes != null && _vm.Scheme.ChangeTypes.Count > 0)
|
{
|
//水池
|
if (_vm.Scheme.ChangeTypes.Contains(Yw.Hydro.ParterCatalog.Tank))
|
{
|
var pageTank = _allPageList.Find(x => x is CreateXhsSchemeTankChangePage) as CreateXhsSchemeTankChangePage;
|
if (pageTank == null)
|
{
|
pageTank = new CreateXhsSchemeTankChangePage();
|
pageTank.Dock = DockStyle.Fill;
|
_allPageList.Add(pageTank);
|
}
|
_bindingPageList.Add(pageTank);
|
this.navigationFrame.AddPage(pageTank);
|
}
|
//水箱
|
if (_vm.Scheme.ChangeTypes.Contains(Yw.Hydro.ParterCatalog.Waterbox))
|
{
|
var pageWaterbox = _allPageList.Find(x => x is CreateXhsSchemeWaterboxChangePage) as CreateXhsSchemeWaterboxChangePage;
|
if (pageWaterbox == null)
|
{
|
pageWaterbox = new CreateXhsSchemeWaterboxChangePage();
|
pageWaterbox.Dock = DockStyle.Fill;
|
_allPageList.Add(pageWaterbox);
|
}
|
_bindingPageList.Add(pageWaterbox);
|
this.navigationFrame.AddPage(pageWaterbox);
|
}
|
//闷头
|
if (_vm.Scheme.ChangeTypes.Contains(Yw.Hydro.ParterCatalog.Blunthead))
|
{
|
var pageBlunthead = _allPageList.Find(x => x is CreateXhsSchemeBluntheadChangePage) as CreateXhsSchemeBluntheadChangePage;
|
if (pageBlunthead == null)
|
{
|
pageBlunthead = new CreateXhsSchemeBluntheadChangePage();
|
pageBlunthead.Dock = DockStyle.Fill;
|
_allPageList.Add(pageBlunthead);
|
}
|
_bindingPageList.Add(pageBlunthead);
|
this.navigationFrame.AddPage(pageBlunthead);
|
}
|
//弯头
|
if (_vm.Scheme.ChangeTypes.Contains(Yw.Hydro.ParterCatalog.Elbow))
|
{
|
var pageElbow = _allPageList.Find(x => x is CreateXhsSchemeElbowChangePage) as CreateXhsSchemeElbowChangePage;
|
if (pageElbow == null)
|
{
|
pageElbow = new CreateXhsSchemeElbowChangePage();
|
pageElbow.Dock = DockStyle.Fill;
|
_allPageList.Add(pageElbow);
|
}
|
_bindingPageList.Add(pageElbow);
|
this.navigationFrame.AddPage(pageElbow);
|
}
|
//三通
|
if (_vm.Scheme.ChangeTypes.Contains(Yw.Hydro.ParterCatalog.Threelink))
|
{
|
var pageThreelink = _allPageList.Find(x => x is CreateXhsSchemeThreelinkChangePage) as CreateXhsSchemeThreelinkChangePage;
|
if (pageThreelink == null)
|
{
|
pageThreelink = new CreateXhsSchemeThreelinkChangePage();
|
pageThreelink.Dock = DockStyle.Fill;
|
_allPageList.Add(pageThreelink);
|
}
|
_bindingPageList.Add(pageThreelink);
|
this.navigationFrame.AddPage(pageThreelink);
|
}
|
//四通
|
if (_vm.Scheme.ChangeTypes.Contains(Yw.Hydro.ParterCatalog.Fourlink))
|
{
|
var pageFourlink = _allPageList.Find(x => x is CreateXhsSchemeFourlinkChangePage) as CreateXhsSchemeFourlinkChangePage;
|
if (pageFourlink == null)
|
{
|
pageFourlink = new CreateXhsSchemeFourlinkChangePage();
|
pageFourlink.Dock = DockStyle.Fill;
|
_allPageList.Add(pageFourlink);
|
}
|
_bindingPageList.Add(pageFourlink);
|
this.navigationFrame.AddPage(pageFourlink);
|
}
|
//水表
|
if (_vm.Scheme.ChangeTypes.Contains(Yw.Hydro.ParterCatalog.Meter))
|
{
|
var pageMeter = _allPageList.Find(x => x is CreateXhsSchemeMeterChangePage) as CreateXhsSchemeMeterChangePage;
|
if (pageMeter == null)
|
{
|
pageMeter = new CreateXhsSchemeMeterChangePage();
|
pageMeter.Dock = DockStyle.Fill;
|
_allPageList.Add(pageMeter);
|
}
|
_bindingPageList.Add(pageMeter);
|
this.navigationFrame.AddPage(pageMeter);
|
}
|
//流量计
|
if (_vm.Scheme.ChangeTypes.Contains(Yw.Hydro.ParterCatalog.Flowmeter))
|
{
|
var pageFlowmeter = _allPageList.Find(x => x is CreateXhsSchemeFlowmeterChangePage) as CreateXhsSchemeFlowmeterChangePage;
|
if (pageFlowmeter == null)
|
{
|
pageFlowmeter = new CreateXhsSchemeFlowmeterChangePage();
|
pageFlowmeter.Dock = DockStyle.Fill;
|
_allPageList.Add(pageFlowmeter);
|
}
|
_bindingPageList.Add(pageFlowmeter);
|
this.navigationFrame.AddPage(pageFlowmeter);
|
}
|
//压力表
|
if (_vm.Scheme.ChangeTypes.Contains(Yw.Hydro.ParterCatalog.Pressmeter))
|
{
|
var pagePressmeter = _allPageList.Find(x => x is CreateXhsSchemePressmeterChangePage) as CreateXhsSchemePressmeterChangePage;
|
if (pagePressmeter == null)
|
{
|
pagePressmeter = new CreateXhsSchemePressmeterChangePage();
|
pagePressmeter.Dock = DockStyle.Fill;
|
_allPageList.Add(pagePressmeter);
|
}
|
_bindingPageList.Add(pagePressmeter);
|
this.navigationFrame.AddPage(pagePressmeter);
|
}
|
//消火栓
|
if (_vm.Scheme.ChangeTypes.Contains(Yw.Hydro.ParterCatalog.Hydrant))
|
{
|
var pageHydrant = _allPageList.Find(x => x is CreateXhsSchemeHydrantChangePage) as CreateXhsSchemeHydrantChangePage;
|
if (pageHydrant == null)
|
{
|
pageHydrant = new CreateXhsSchemeHydrantChangePage();
|
pageHydrant.Dock = DockStyle.Fill;
|
_allPageList.Add(pageHydrant);
|
}
|
_bindingPageList.Add(pageHydrant);
|
this.navigationFrame.AddPage(pageHydrant);
|
}
|
//喷嘴
|
if (_vm.Scheme.ChangeTypes.Contains(Yw.Hydro.ParterCatalog.Nozzle))
|
{
|
var pageNozzle = _allPageList.Find(x => x is CreateXhsSchemeNozzleChangePage) as CreateXhsSchemeNozzleChangePage;
|
if (pageNozzle == null)
|
{
|
pageNozzle = new CreateXhsSchemeNozzleChangePage();
|
pageNozzle.Dock = DockStyle.Fill;
|
_allPageList.Add(pageNozzle);
|
}
|
_bindingPageList.Add(pageNozzle);
|
this.navigationFrame.AddPage(pageNozzle);
|
}
|
//冷却塔
|
if (_vm.Scheme.ChangeTypes.Contains(Yw.Hydro.ParterCatalog.Cooling))
|
{
|
var pageCooling = _allPageList.Find(x => x is CreateXhsSchemeCoolingChangePage) as CreateXhsSchemeCoolingChangePage;
|
if (pageCooling == null)
|
{
|
pageCooling = new CreateXhsSchemeCoolingChangePage();
|
pageCooling.Dock = DockStyle.Fill;
|
_allPageList.Add(pageCooling);
|
}
|
_bindingPageList.Add(pageCooling);
|
this.navigationFrame.AddPage(pageCooling);
|
}
|
//管道
|
if (_vm.Scheme.ChangeTypes.Contains(Yw.Hydro.ParterCatalog.Pipe))
|
{
|
var pagePipe = _allPageList.Find(x => x is CreateXhsSchemePipeChangePage) as CreateXhsSchemePipeChangePage;
|
if (pagePipe == null)
|
{
|
pagePipe = new CreateXhsSchemePipeChangePage();
|
pagePipe.Dock = DockStyle.Fill;
|
_allPageList.Add(pagePipe);
|
}
|
_bindingPageList.Add(pagePipe);
|
this.navigationFrame.AddPage(pagePipe);
|
}
|
//过渡件
|
if (_vm.Scheme.ChangeTypes.Contains(Yw.Hydro.ParterCatalog.Translation))
|
{
|
var pageTranslation = _allPageList.Find(x => x is CreateXhsSchemeTranslationChangePage) as CreateXhsSchemeTranslationChangePage;
|
if (pageTranslation == null)
|
{
|
pageTranslation = new CreateXhsSchemeTranslationChangePage();
|
pageTranslation.Dock = DockStyle.Fill;
|
_allPageList.Add(pageTranslation);
|
}
|
_bindingPageList.Add(pageTranslation);
|
this.navigationFrame.AddPage(pageTranslation);
|
}
|
//水泵
|
if (_vm.Scheme.ChangeTypes.Contains(Yw.Hydro.ParterCatalog.Pump))
|
{
|
var pagePump = _allPageList.Find(x => x is CreateXhsSchemePumpChangePage) as CreateXhsSchemePumpChangePage;
|
if (pagePump == null)
|
{
|
pagePump = new CreateXhsSchemePumpChangePage();
|
pagePump.Dock = DockStyle.Fill;
|
_allPageList.Add(pagePump);
|
}
|
_bindingPageList.Add(pagePump);
|
this.navigationFrame.AddPage(pagePump);
|
}
|
//阀门
|
if (_vm.Scheme.ChangeTypes.Contains(Yw.Hydro.ParterCatalog.Valve))
|
{
|
var pageValve = _allPageList.Find(x => x is CreateXhsSchemeValveChangePage) as CreateXhsSchemeValveChangePage;
|
if (pageValve == null)
|
{
|
pageValve = new CreateXhsSchemeValveChangePage();
|
pageValve.Dock = DockStyle.Fill;
|
_allPageList.Add(pageValve);
|
}
|
_bindingPageList.Add(pageValve);
|
this.navigationFrame.AddPage(pageValve);
|
}
|
//换热器
|
if (_vm.Scheme.ChangeTypes.Contains(Yw.Hydro.ParterCatalog.Exchanger))
|
{
|
var pageExchanger = _allPageList.Find(x => x is CreateXhsSchemeExchangerChangePage) as CreateXhsSchemeExchangerChangePage;
|
if (pageExchanger == null)
|
{
|
pageExchanger = new CreateXhsSchemeExchangerChangePage();
|
pageExchanger.Dock = DockStyle.Fill;
|
_allPageList.Add(pageExchanger);
|
}
|
_bindingPageList.Add(pageExchanger);
|
this.navigationFrame.AddPage(pageExchanger);
|
}
|
//压缩机
|
if (_vm.Scheme.ChangeTypes.Contains(Yw.Hydro.ParterCatalog.Compressor))
|
{
|
var pageCompressor = _allPageList.Find(x => x is CreateXhsSchemeCompressorChangePage) as CreateXhsSchemeCompressorChangePage;
|
if (pageCompressor == null)
|
{
|
pageCompressor = new CreateXhsSchemeCompressorChangePage();
|
pageCompressor.Dock = DockStyle.Fill;
|
_allPageList.Add(pageCompressor);
|
}
|
_bindingPageList.Add(pageCompressor);
|
this.navigationFrame.AddPage(pageCompressor);
|
}
|
}
|
|
//生成
|
var pageGenerate = _allPageList.Find(x => x is CreateXhsSchemeGeneralWizardPage) as CreateXhsSchemeGeneralWizardPage;
|
if (pageGenerate == null)
|
{
|
pageGenerate = new CreateXhsSchemeGeneralWizardPage();
|
pageGenerate.Dock = DockStyle.Fill;
|
_allPageList.Add(pageGenerate);
|
}
|
_bindingPageList.Add(pageGenerate);
|
this.navigationFrame.AddPage(pageGenerate);
|
|
//变更记录
|
var pageComplete = _allPageList.Find(x => x is CreateXhsSchemeChangeRecordPage) as CreateXhsSchemeChangeRecordPage;
|
if (pageComplete == null)
|
{
|
pageComplete = new CreateXhsSchemeChangeRecordPage();
|
pageComplete.Dock = DockStyle.Fill;
|
_allPageList.Add(pageComplete);
|
}
|
_bindingPageList.Add(pageComplete);
|
this.navigationFrame.AddPage(pageComplete);
|
}
|
|
//初始化步骤
|
private void InitialSteps()
|
{
|
this.stepProgressBar1.Items.Clear();
|
if (_bindingPageList != null && _bindingPageList.Count > 0)
|
{
|
foreach (var page in _bindingPageList)
|
{
|
if (page is CreateXhsSchemeInfoPage)
|
{
|
AddStepItem("方案信息");
|
}
|
else if (page is CreateXhsSchemeTankChangePage)
|
{
|
var caption = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Tank);
|
AddStepItem(caption);
|
}
|
else if (page is CreateXhsSchemeWaterboxChangePage)
|
{
|
var caption = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Waterbox);
|
AddStepItem(caption);
|
}
|
else if (page is CreateXhsSchemeBluntheadChangePage)
|
{
|
var caption = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Blunthead);
|
AddStepItem(caption);
|
}
|
else if (page is CreateXhsSchemeElbowChangePage)
|
{
|
var caption = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Elbow);
|
AddStepItem(caption);
|
}
|
else if (page is CreateXhsSchemeThreelinkChangePage)
|
{
|
var caption = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Threelink);
|
AddStepItem(caption);
|
}
|
else if (page is CreateXhsSchemeFourlinkChangePage)
|
{
|
var caption = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Fourlink);
|
AddStepItem(caption);
|
}
|
else if (page is CreateXhsSchemeMeterChangePage)
|
{
|
var caption = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Meter);
|
AddStepItem(caption);
|
}
|
else if (page is CreateXhsSchemeFlowmeterChangePage)
|
{
|
var caption = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Flowmeter);
|
AddStepItem(caption);
|
}
|
else if (page is CreateXhsSchemePressmeterChangePage)
|
{
|
var caption = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Pressmeter);
|
AddStepItem(caption);
|
}
|
else if (page is CreateXhsSchemeHydrantChangePage)
|
{
|
var caption = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Hydrant);
|
AddStepItem(caption);
|
}
|
else if (page is CreateXhsSchemeNozzleChangePage)
|
{
|
var caption = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Nozzle);
|
AddStepItem(caption);
|
}
|
else if (page is CreateXhsSchemeCoolingChangePage)
|
{
|
var caption = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Cooling);
|
AddStepItem(caption);
|
}
|
else if (page is CreateXhsSchemePipeChangePage)
|
{
|
var caption = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Pipe);
|
AddStepItem(caption);
|
}
|
else if (page is CreateXhsSchemeTranslationChangePage)
|
{
|
var caption = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Translation);
|
AddStepItem(caption);
|
}
|
else if (page is CreateXhsSchemePumpChangePage)
|
{
|
var caption = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Pump);
|
AddStepItem(caption);
|
}
|
else if (page is CreateXhsSchemeValveChangePage)
|
{
|
var caption = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Valve);
|
AddStepItem(caption);
|
}
|
else if (page is CreateXhsSchemeExchangerChangePage)
|
{
|
var caption = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Exchanger);
|
AddStepItem(caption);
|
}
|
else if (page is CreateXhsSchemeCompressorChangePage)
|
{
|
var caption = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Compressor);
|
AddStepItem(caption);
|
}
|
else if (page is CreateXhsSchemeGeneralWizardPage)
|
{
|
var caption = "创建";
|
AddStepItem(caption);
|
}
|
else if (page is CreateXhsSchemeChangeRecordPage)
|
{
|
var caption = "变更记录";
|
AddStepItem(caption);
|
}
|
}
|
}
|
|
}
|
|
//选择页面改变
|
private void _wizard_SelectedPageChangedEvent(IWizardPageAsync<QuickModelingViewModel> page, int index)
|
{
|
this.itemForPrev.Visibility = page.AllowPrev ? LayoutVisibility.Always : LayoutVisibility.Never;
|
this.itemForNext.Visibility = page.AllowNext ? LayoutVisibility.Always : LayoutVisibility.Never;
|
this.itemForCancel.Visibility = page.AllowCancel ? LayoutVisibility.Always : LayoutVisibility.Never;
|
this.itemForComplete.Visibility = page.AllowComplete ? LayoutVisibility.Always : LayoutVisibility.Never;
|
this.navigationFrame.SelectedPageIndex = index;
|
this.stepProgressBar1.SelectedItemIndex = index;
|
this.itemForTitle.Visibility = index > 0 ? LayoutVisibility.Always : LayoutVisibility.Never;
|
}
|
|
//选择页面状态改变
|
private void _wizard_SelectedPageStateChangedEvent(IWizardPageAsync<QuickModelingViewModel> page, int index)
|
{
|
this.itemForPrev.Visibility = page.AllowPrev ? LayoutVisibility.Always : LayoutVisibility.Never;
|
this.itemForNext.Visibility = page.AllowNext ? LayoutVisibility.Always : LayoutVisibility.Never;
|
this.itemForCancel.Visibility = page.AllowCancel ? LayoutVisibility.Always : LayoutVisibility.Never;
|
this.itemForComplete.Visibility = page.AllowComplete ? LayoutVisibility.Always : LayoutVisibility.Never;
|
this.itemForTitle.Visibility = index > 0 ? LayoutVisibility.Always : LayoutVisibility.Never;
|
}
|
|
//上一步
|
private async void btnPrev_Click(object sender, EventArgs e)
|
{
|
if (_wizard != null)
|
{
|
await _wizard.Prev();
|
}
|
}
|
|
//下一步
|
private async void btnNext_Click(object sender, EventArgs e)
|
{
|
if (_wizard != null)
|
{
|
if (_wizard.SelectedIndex == 0)
|
{
|
var page = _wizard.SelectedPage;
|
if (await page.CanNext())
|
{
|
InitialManager();
|
}
|
}
|
await _wizard.Next();
|
}
|
}
|
|
//取消
|
private async void btnCancel_Click(object sender, EventArgs e)
|
{
|
if (_wizard != null)
|
{
|
if (await _wizard.Cancel())
|
{
|
this.DialogResult = DialogResult.Cancel;
|
this.Close();
|
}
|
}
|
}
|
|
//完成
|
private async void btnComplete_Click(object sender, EventArgs e)
|
{
|
if (_wizard != null)
|
{
|
if (await _wizard.Complete())
|
{
|
this.ReloadDataEvent?.Invoke(_vm.Scheme);
|
this.DialogResult = DialogResult.OK;
|
this.Close();
|
}
|
}
|
}
|
|
//正在关闭
|
private async void CreateXhsSchemeDlg_FormClosing(object sender, FormClosingEventArgs e)
|
{
|
if (_wizard != null)
|
{
|
if (this.DialogResult == DialogResult.OK)
|
{
|
/* if (!_wizard.Complete())
|
{
|
e.Cancel = true;
|
}*/
|
}
|
else if (this.DialogResult == DialogResult.Cancel)
|
{
|
if (!await _wizard.Cancel())
|
{
|
e.Cancel = true;
|
}
|
}
|
else
|
{
|
e.Cancel = true;
|
}
|
}
|
}
|
|
//添加步骤项
|
private void AddStepItem(string caption)
|
{
|
this.stepProgressBar1.BeginInit();
|
var item = new StepProgressBarItem();
|
item.ContentBlock2.Caption = caption;
|
item.Options.Indicator.ActiveStateDrawMode = IndicatorDrawMode.Full;
|
item.Options.Indicator.ActiveStateImageOptions.SvgImage = null;
|
item.Options.Indicator.InactiveStateImageOptions.SvgImage = null;
|
item.State = StepProgressBarItemState.Inactive;
|
this.stepProgressBar1.Items.Add(item);
|
this.stepProgressBar1.EndInit();
|
}
|
|
|
|
}
|
}
|