using DevExpress.XtraLayout.Utils;
|
using Mapster;
|
|
namespace HStation.WinFrmUI
|
{
|
public partial class CreateXhsSchemeDlg : DevExpress.XtraEditors.XtraForm
|
{
|
public CreateXhsSchemeDlg()
|
{
|
InitializeComponent();
|
this.IconOptions.Icon = Yw.WinFrmUI.GlobalParas.AppIcon;
|
}
|
|
private readonly CreateXhsSchemeViewModel _vm = new();
|
private CreateXhsSchemeManager _wizard=null;
|
|
private bool _initial_wizard_manager = false;//运行下一步
|
private List<string> _change_type_list = null;
|
|
/// <summary>
|
///
|
/// </summary>
|
public CreateXhsSchemeViewModel ViewModel
|
{
|
get { return _vm; }
|
}
|
|
|
/// <summary>
|
///
|
/// </summary>
|
public int SelectedPageIndex
|
{
|
get
|
{
|
return this.navigationFrameMain.SelectedPageIndex;
|
}
|
set
|
{
|
if (value == 0)
|
{
|
_initial_wizard_manager = false;
|
InitialButtonStatus(_change_type_list);
|
}
|
else
|
{
|
_initial_wizard_manager = true;
|
InitialWizardManager(_change_type_list);
|
}
|
this.navigationFrameMain.SelectedPageIndex = value;
|
}
|
}
|
|
|
/// <summary>
|
///
|
/// </summary>
|
public event Action<HStation.Vmo.XhsSchemeVmo> ReloadDataEvent;
|
|
/// <summary>
|
///
|
/// </summary>
|
public async void SetBindingData
|
(
|
HStation.Vmo.XhsProjectVmo project,
|
HStation.Vmo.XhsProjectSiteVmo project_site,
|
Yw.Model.HydroModelInfo hydro_info
|
)
|
{
|
this.itemForNext.Visibility = LayoutVisibility.Never;
|
this.itemForPrev.Visibility = LayoutVisibility.Never;
|
this.itemForComplete.Visibility = LayoutVisibility.Always;
|
this.itemForCancel.Visibility = LayoutVisibility.Always;
|
if (project == null)
|
return;
|
_vm.Project = project;
|
_vm.ProjectSite = project_site;
|
_vm.HydroInfo = hydro_info.Adapt<Yw.Model.HydroModelInfo>();
|
_vm.ProjectSite ??= await BLLFactory<HStation.BLL.XhsProjectSite>.Instance.GetDefaultByProjectID(_vm.Project.ID);
|
if (_vm.HydroInfo == null)
|
{
|
var hydroRelation = await BLLFactory<Yw.BLL.HydroModelRelation>.Instance
|
.GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, _vm.ProjectSite.ID, HStation.Xhs.Purpose.Simulation);
|
_vm.HydroInfo = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.GetByID(hydroRelation.ModelID);
|
}
|
_vm.AllSchemeList = await BLLFactory<HStation.BLL.XhsScheme>.Instance.GetBySiteID(_vm.ProjectSite.ID);
|
|
this.createXhsSchemeInfoPage1.InitialPage(_vm);
|
this.createXhsSchemeInfoPage1.ChangeTypeChangedEvent += (List<string> change_type_list) =>
|
{
|
_initial_wizard_manager = false;
|
_change_type_list = change_type_list;
|
InitialButtonStatus(change_type_list);
|
};
|
|
this.FormClosing += (s, e) =>
|
{
|
if (_wizard != null)
|
{
|
if (this.DialogResult == DialogResult.OK)
|
{
|
if (!_wizard.Complete())
|
{
|
e.Cancel = true;
|
}
|
}
|
else if (this.DialogResult == DialogResult.Cancel)
|
{
|
//if (!_wizard.Cancel())
|
//{
|
// e.Cancel = true;
|
//}
|
}
|
else
|
{
|
e.Cancel = true;
|
}
|
}
|
};
|
|
}
|
|
//添加步骤项
|
private void AddStepProgressBarItem(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();
|
}
|
|
//初始化按钮状态
|
private void InitialButtonStatus(List<string> change_type_list)
|
{
|
if (change_type_list == null || !change_type_list.Any())
|
{
|
this.itemForNext.Visibility = LayoutVisibility.Never;
|
this.itemForComplete.Visibility = LayoutVisibility.Always;
|
}
|
else
|
{
|
this.itemForPrev.Visibility = LayoutVisibility.Never;
|
this.itemForNext.Visibility = LayoutVisibility.Always;
|
this.itemForComplete.Visibility = LayoutVisibility.Never;
|
this.itemForCancel.Visibility = LayoutVisibility.Always;
|
}
|
}
|
|
//初始化步骤管理器
|
private void InitialWizardManager(List<string> change_type_list)
|
{
|
if (change_type_list == null || !change_type_list.Any())
|
return;
|
var overlay = this.ShowOverlay();
|
this.stepProgressBar1.Items.Clear();
|
this.navigationFrameStep.Pages.Clear();
|
var page_list = new List<IWizardPage<CreateXhsSchemeViewModel>>();
|
if (change_type_list.Contains(Yw.Hydro.ParterCatalog.Pipe))
|
{
|
var caption = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Pipe);
|
AddStepProgressBarItem(caption);
|
page_list.Add(new CreateXhsSchemePipeChangePage());
|
}
|
if (change_type_list.Contains(Yw.Hydro.ParterCatalog.Pump))
|
{
|
var caption = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Pump);
|
AddStepProgressBarItem(caption);
|
page_list.Add(new CreateXhsSchemePumpChangePage());
|
}
|
if (change_type_list.Contains(Yw.Hydro.ParterCatalog.Valve))
|
{
|
var caption = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Valve);
|
AddStepProgressBarItem(caption);
|
page_list.Add(new CreateXhsSchemeValveChangePage());
|
}
|
|
AddStepProgressBarItem("变更记录");
|
page_list.Add(new CreateXhsSchemeChangeRecordPage());
|
|
foreach (var item in page_list)
|
{
|
var ctrl = item as XtraUserControl;
|
ctrl.Dock = DockStyle.Fill;
|
this.navigationFrameStep.AddPage(ctrl);
|
}
|
|
_wizard = new CreateXhsSchemeManager(_vm);
|
_wizard.SelectedPageChangedEvent += _wizard_SelectedPageChangedEvent;
|
_wizard.SelectedPageStateChangedEvent += _wizard_SelectedPageStateChangedEvent;
|
_wizard.InitialManager(page_list.ToArray());
|
overlay.Close();
|
}
|
|
//选择页面改变
|
private void _wizard_SelectedPageChangedEvent(IWizardPage<CreateXhsSchemeViewModel> 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.navigationFrameStep.SelectedPageIndex = index;
|
this.stepProgressBar1.SelectedItemIndex = index;
|
}
|
|
//选择页面状态改变
|
private void _wizard_SelectedPageStateChangedEvent(IWizardPage<CreateXhsSchemeViewModel> 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;
|
}
|
|
//上一步
|
private void btnPrev_Click(object sender, EventArgs e)
|
{
|
if (_wizard != null)
|
{
|
if (_wizard.SelectedIndex == 0)
|
{
|
this.SelectedPageIndex = 0;
|
}
|
else
|
{
|
_wizard.Prev();
|
}
|
}
|
}
|
|
//下一步
|
private void btnNext_Click(object sender, EventArgs e)
|
{
|
if (!_initial_wizard_manager)
|
{
|
if (this.createXhsSchemeInfoPage1.CanNext())
|
{
|
this.SelectedPageIndex = 1;
|
}
|
}
|
else
|
{
|
if (_wizard != null)
|
{
|
_wizard.Next();
|
}
|
}
|
|
}
|
|
//取消
|
private void btnCancel_Click(object sender, EventArgs e)
|
{
|
if (_wizard != null)
|
{
|
var bol = _wizard.Cancel();
|
if (bol)
|
{
|
this.DialogResult = DialogResult.Cancel;
|
this.Close();
|
}
|
}
|
|
}
|
|
//完成
|
private void btnComplete_Click(object sender, EventArgs e)
|
{
|
if (this.SelectedPageIndex == 0)
|
{
|
if (this.createXhsSchemeInfoPage1.CanComplete())
|
{
|
this.ReloadDataEvent?.Invoke(_vm.Scheme);
|
this.DialogResult = DialogResult.OK;
|
this.Close();
|
}
|
}
|
else
|
{
|
if (_wizard != null)
|
{
|
var bol = _wizard.Complete();
|
if (bol)
|
{
|
this.ReloadDataEvent?.Invoke(_vm.Scheme);
|
this.DialogResult = DialogResult.OK;
|
this.Close();
|
}
|
}
|
}
|
}
|
|
|
|
}
|
}
|