using DevExpress.XtraLayout.Utils;
|
using DevExpress.XtraRichEdit.Import.Html;
|
using Mapster;
|
|
namespace PBS.WinFrmUI.Hydro
|
{
|
public partial class QuickModelingPage : DocumentPage
|
{
|
public QuickModelingPage()
|
{
|
InitializeComponent();
|
this.layoutControl1.SetupLayoutControl();
|
}
|
|
|
|
private QuickModelingViewModel _vm = null;//视图
|
private QuickModelingManager _wizard = null;//管理器
|
private List<IWizardPageAsync<QuickModelingViewModel>> _allPageList = null;//所有页面列表
|
private List<IWizardPageAsync<QuickModelingViewModel>> _bindingPageList = null;//绑定页面列表
|
|
|
|
/// <summary>
|
/// 初始化数据源
|
/// </summary>
|
public override async void InitialDataSource()
|
{
|
base.InitialDataSource();
|
_vm = new QuickModelingViewModel();
|
_vm.Place = new();
|
_vm.Facility = new();
|
_vm.AssetsPackageList =await BLLFactory<HStation.BLL.AssetsPackageMain>.Instance.GetAll();
|
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 pagePlace = _allPageList.Find(x => x is QuickModelingPlaceWizardPage) as QuickModelingPlaceWizardPage;
|
if (pagePlace == null)
|
{
|
pagePlace = new QuickModelingPlaceWizardPage();
|
pagePlace.Dock = DockStyle.Fill;
|
_allPageList.Add(pagePlace);
|
}
|
_bindingPageList.Add(pagePlace);
|
this.navigationFrame.AddPage(pagePlace);
|
|
|
var pageFacility = _allPageList.Find(x => x is QuickModelingFacilityWizardPage) as QuickModelingFacilityWizardPage;
|
if (pageFacility == null )
|
{
|
pageFacility = new QuickModelingFacilityWizardPage();
|
pageFacility.Dock = DockStyle.Fill;
|
_allPageList.Add(pageFacility);
|
}
|
|
_bindingPageList.Add(pageFacility);
|
this.navigationFrame.AddPage(pageFacility);
|
|
|
var pageModelEdit = _allPageList.Find(x => x is ModelEditPage) as ModelEditPage;
|
if (pageModelEdit == null)
|
{
|
pageModelEdit = new ModelEditPage();
|
pageModelEdit.Dock = DockStyle.Fill;
|
_allPageList.Add(pageModelEdit);
|
}
|
|
_bindingPageList.Add(pageModelEdit);
|
this.navigationFrame.AddPage(pageModelEdit);
|
|
|
}
|
|
//初始化步骤
|
private void InitialSteps()
|
{
|
this.stepProgressBar1.Items.Clear();
|
if (_bindingPageList != null && _bindingPageList.Count > 0)
|
{
|
foreach (var page in _bindingPageList)
|
{
|
if (page is QuickModelingPlaceWizardPage)
|
{
|
AddStepItem("场所");
|
}
|
else if (page is QuickModelingFacilityWizardPage)
|
{
|
AddStepItem("设施");
|
}
|
else if (page is ModelEditPage)
|
{
|
AddStepItem("模型");
|
}
|
}
|
}
|
|
}
|
|
//选择页面改变
|
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)
|
{
|
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();
|
}
|
}
|
}
|
|
|
/// <summary>
|
/// 是否可以关闭
|
/// </summary>
|
public override bool CanClose()
|
{
|
|
return 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();
|
}
|
|
|
|
}
|
}
|