using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.IO;
using System.Text;
using System.Linq;
namespace DPumpHydr.WinFrmUI.Volute
{
public partial class MainViewPage
{
//步骤控件
StepTreeDockPanel _stepTreeDockPanel = null;
///
/// 初始化步骤列表
///
private void InitialStepNodes()
{
if (_ctrlHdrBaseInfo == null)
{
_ctrlHdrBaseInfo = new ctrlHdrBaseInfo();
_ctrlHdrBaseInfo.Name = "ctrlHdrBaseInfo";
_ctrlHdrBaseInfo.Dock = DockStyle.Right;
_ctrlHdrBaseInfo.InitialParas();
}
this.DockStepParaCtrl(_ctrlHdrBaseInfo);
//
this._stepTreeDockPanel.InitialStepNodes();
}
///
/// 下一步核心
///
///
private bool GoNextStepCore()
{
var currentStepID = this._stepTreeDockPanel.CurrentStepID;
if (SaveStepParas(currentStepID) == false)
{
return false;
}
//
var next_step_id = this._stepTreeDockPanel.NextStepID;
if (currentStepID == this._stepTreeDockPanel.Step_ID_Section18_Full)
{
next_step_id = this._stepTreeDockPanel.Step_ID_Outflow_Type;
}
if (next_step_id > 0)
{
this.SetParasCtrl(next_step_id, DPumpHydr.ViewModel.eWizardStepDiretion.前进);
//
this._stepTreeDockPanel.SetFocusedNode(next_step_id);
}
return true;
}
///
///
///
///
///
protected bool SaveStepParas(long step_id)
{
#region 获取当前页面参数
//第一步
if (step_id == this._stepTreeDockPanel.Step_ID_Hdr_Base_Info)
{
ViewModel.HdrBaseInfo hdrBaseInfo = null;
ViewModel.GeomBaseInfo geomBaseInfo = null;
string error_info = _ctrlHdrBaseInfo.GetBindingData(ref hdrBaseInfo, ref geomBaseInfo);
if (error_info != null)
{
MessageBox.Show(error_info);
return false;
}
if (geomBaseInfo == null || hdrBaseInfo == null)
return false;
_ctrlHdrBaseInfo.SaveHistoryParas(hdrBaseInfo, geomBaseInfo);
_hdrBaseInfo = hdrBaseInfo;
_hdrBaseInfo.CalcNs();
_geomBaseInfo = geomBaseInfo;
if (_sectionBundleInfo != null)
{//时时保持同步
_sectionBundleInfo.BaseWidth = _geomBaseInfo.B3;
_sectionBundleInfo.BaseCircleRadius = _geomBaseInfo.D3 / 2;
}
return true;
}
//第二步
if (step_id == this._stepTreeDockPanel.Step_ID_Section18_Full)
{
string error_info;
var sectionBaseInfo = _ctrlSectionBundleInfo.GetBindingData(out error_info);
if (sectionBaseInfo == null)
{
MessageBox.Show(error_info);
return false;
}
_sectionBundleInfo = sectionBaseInfo;
//_sectionBundleInfo.ResetAllParas(_hdrBaseInfo, _geomBaseInfo);
//ViewModel.SectionShapePara _sectionShapePara = null;
//if (_sectionShapePara == null)
//{
// _sectionShapePara = new ViewModel.SectionShapePara();
//}
//_sectionShapePara.Initialparameters(_currentSectIndex, _sectionBaseInfo);
return true;
}
//1-8断面进行下一步点击
if (step_id == this._stepTreeDockPanel.Step_ID_Section18_Grp)
{
//string error_info;
//var sectionShapeInfo18 = _ctrlSectionShapeInfo18.GetBindingData(out error_info);
//if (sectionShapeInfo18 == null)
//{
// MessageBox.Show(error_info);
// return false;
//}
//if (!sectionShapeInfo18.Verify(out error_info))
//{
// MessageBox.Show(error_info);
// return false;
//}
//_sectionShapePara = sectionShapeInfo18;
//_sectionShapePara.CalcHeightByArea(_sectionBaseInfo.ShapeType);
//_sectionBaseInfo.EditSingleShape(_sectionShapePara, _currentSectIndex);
//if (_currentSectIndex != 9)
//{
// _currentSectIndex--;
//}
//_sectionShapePara.Initialparameters(_currentSectIndex, _sectionBaseInfo);
return true;
}
#endregion
return true;
}
///
/// 上一步核心
///
///
private bool GoPrevStepCore()
{
var currentStepID = this._stepTreeDockPanel.CurrentStepID;
ParasInfoBaseCtrl paras_ctrl = GetParasCtrl(currentStepID);
if (paras_ctrl != null && paras_ctrl.IsChangesParas())
{
DialogResult result = MessageBox.Show("已经修改过的数据需要保存吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (result == DialogResult.OK)
{
if (SaveStepParas(currentStepID) == false)
{
return false;
}
}
}
var prev_step_id = this._stepTreeDockPanel.PrevStepID;
if (currentStepID == this._stepTreeDockPanel.Step_ID_Outflow_Type)
{
prev_step_id = this._stepTreeDockPanel.Step_ID_Section18_Full;
}
if (prev_step_id == 0)
return false;
this.SetParasCtrl(prev_step_id, DPumpHydr.ViewModel.eWizardStepDiretion.后退);
//
this._stepTreeDockPanel.SetFocusedNode(prev_step_id);
return true;
}
///
/// 生成控件的参数控件
///
///
private void SetParasCtrl(long step_id, DPumpHydr.ViewModel.eWizardStepDiretion step_direction)
{
Rbtn数据导出STP.Visible = false;
Rbtn数据导出IGS.Visible = false;
#region 第1步
if (step_id == this._stepTreeDockPanel.Step_ID_Hdr_Base_Info)
{
if (_ctrlHdrBaseInfo == null)
{
_ctrlHdrBaseInfo = new ctrlHdrBaseInfo();
_ctrlHdrBaseInfo.Name = "ctrlHdrBaseInfo";
}
DockStepParaCtrl(_ctrlHdrBaseInfo);
this._sectAreaDockPanel.Visible = false;
return;
}
#endregion
#region 第2步 断面总览
if (step_id == this._stepTreeDockPanel.Step_ID_Section18_Full)
{
if (_hdrBaseInfo == null || _geomBaseInfo == null)
return;
if (_ctrlSectionBundleInfo == null)
{
_ctrlSectionBundleInfo = new ctrlSectionBundleInfo();
_ctrlSectionBundleInfo.Name = "ctrlSectionBaseInfo";
_ctrlSectionBundleInfo.OnRefreshShape += RefreshSectShapeWhole18;
}
_ctrlSectionBundleInfo.ShowPage(_hdrBaseInfo, _geomBaseInfo, step_direction);
DockStepParaCtrl(_ctrlSectionBundleInfo);
this._occDesign2dCtrl.SetAllSectionCurveVisible(true);
this._occDesign3dCtrl.SetAllSectionCurveVisible(true);
this._occDesign3dCtrl.SetWaterBodyVisible(false);
this._occDesign3dCtrl.SetThicknessBodyVisible(false);
this._sectAreaDockPanel.RefreshControl();
this._sectAreaDockPanel.Visible = true;
return;
}
#endregion
#region 第3步 1-8断面
if (step_id > this._stepTreeDockPanel.Step_ID_Section18_Grp &&
step_id <= this._stepTreeDockPanel.Step_ID_Section18_Grp + 8)
{
if (_sectionBundleInfo == null)
return;
if (_ctrlSectionShapeInfo18 == null)
{
_ctrlSectionShapeInfo18 = new ctrlSectionShapeInfo18();
_ctrlSectionShapeInfo18.Name = "ctrlSectionShapeInfo18";
_ctrlSectionShapeInfo18.OnRefreshShape += RefreshSectShapeSingle18;
}
DockStepParaCtrl(_ctrlSectionShapeInfo18);
var sect_index = 9 + this._stepTreeDockPanel.Step_ID_Section18_Grp - step_id;
var shape_info = _sectionBundleInfo.ToSectionShapePara((int)sect_index);
RefreshSectShapeSingle18(shape_info);
_ctrlSectionShapeInfo18.SetBindingData(shape_info);
this._sectAreaDockPanel.RefreshControl();
this._sectAreaDockPanel.Visible = true;
this._occDesign2dCtrl.SetAllSectionCurveVisible(true);
this._occDesign3dCtrl.SetAllSectionCurveVisible(true);
return;
}
#endregion
#region 出水面类型选择
if (step_id == this._stepTreeDockPanel.Step_ID_Outflow_Type)
{
if (_sectionBundleInfo == null)
return;
if (_ctrlSetOutflowType == null)
{
_ctrlSetOutflowType = new ctrlSetOutflowType();
_ctrlSetOutflowType.Name = "ctrlSetOutflowDim";
}
_ctrlSetOutflowType.ShowPage(step_direction);
this._sectAreaDockPanel.Visible = true;
this._sectAreaDockPanel.RefreshControl();
DockStepParaCtrl(_ctrlSetOutflowType);
return;
}
#endregion
#region 出水面参数
if (step_id == this._stepTreeDockPanel.Step_ID_Outflow_Style)
{
if (_sectionBundleInfo == null)
return;
this._occDesign2dCtrl.SetAllSectionCurveVisible(false);
this._occDesign3dCtrl.SetAllSectionCurveVisible(false);
_outflowType = _ctrlSetOutflowType.GetBindingData();
if (_ctrlSetOutflowStyle == null)
{
_ctrlSetOutflowStyle = new ctrlSetOutflowParas();
_ctrlSetOutflowStyle.Name = "ctrlSetOutflowStyle";
_ctrlSetOutflowStyle.OnRefreshShape2D += CreateWaterBody2D;
_ctrlSetOutflowStyle.OnRefreshShape3D += CreateWaterBody3D;
_ctrlSetOutflowStyle.InitialParas(_outflowType, _hdrBaseInfo, _geomBaseInfo, _sectionBundleInfo);
}
_ctrlSetOutflowStyle.SetOutflowStyle(_outflowType);
_ctrlSetOutflowStyle.ShowPage(step_direction);
this._sectAreaDockPanel.RefreshControl();
this._sectAreaDockPanel.Visible = true;
DockStepParaCtrl(_ctrlSetOutflowStyle);
string error = "";
_outflowParas = _ctrlSetOutflowStyle.GetBindingData(out error);
this._occDesign3dCtrl.SetWaterBodyVisible(true);
this._occDesign3dCtrl.SetThicknessBodyVisible(false );
return;
}
#endregion
#region 加厚
if (step_id == this._stepTreeDockPanel.Step_ID_jiahout)
{
if (_sectionBundleInfo == null)
return;
Rbtn数据导出STP.Visible = true;
Rbtn数据导出IGS.Visible = true;
this._occDesign2dCtrl.SetAllSectionCurveVisible(false);
this._occDesign3dCtrl.SetAllSectionCurveVisible(false);
if (_ctrlThicknessParas == null)
{
_ctrlThicknessParas = new ctrlThicknessParas();
_ctrlThicknessParas.Name = "ctrlThicknessParas";
_ctrlThicknessParas.OnRefreshShape += (houdu) =>
{
this._bodyThickness = houdu;
this._occDesign3dCtrl.BuildThicknessBody(houdu);
};
this._bodyThickness = _ctrlThicknessParas.InitialParas(_hdrBaseInfo, _geomBaseInfo, _outflowParas);
this._occDesign3dCtrl.BuildThicknessBody(_bodyThickness);
}
_ctrlThicknessParas.ShowPage();
_occDesign3dCtrl.SetWaterBodyVisible(false );
_occDesign3dCtrl.SetThicknessBodyVisible(true);
DockStepParaCtrl(_ctrlThicknessParas);
return;
}
#endregion
}
///
/// 获取当前步骤的参数控制控件
///
///
private DPumpHydr.WinFrmUI.Volute.ParasInfoBaseCtrl GetParasCtrl(long step_id)
{
if (step_id == this._stepTreeDockPanel.Step_ID_Hdr_Base_Info)
{
return _ctrlHdrBaseInfo;
}
//第二步
if (step_id == this._stepTreeDockPanel.Step_ID_Section18_Full)
{
return _ctrlSectionBundleInfo;
}
//1-8断面进行下一步点击
if (step_id >= this._stepTreeDockPanel.Step_ID_Section18_Grp &&
step_id >= this._stepTreeDockPanel.Step_ID_Section18_Grp + 8)
{
return _ctrlSectionShapeInfo18;
}
return null;
}
///
///
///
///
private void DockStepParaCtrl(ParasInfoBaseCtrl ctrl)
{
this._parasDockPanel.Controls.Clear();
ctrl.Dock = DockStyle.Fill;
this._parasDockPanel.Controls.Add(ctrl);
}
///
/// 下一步
///
///
public bool GoNextStep()
{
return GoNextStepCore();
}
///
/// 上一步
///
///
public bool GoPrevStep()
{
return GoPrevStepCore();
}
}
}