| | |
| | | using DevExpress.XtraBars.Docking; |
| | | using DevExpress.Drawing; |
| | | using DevExpress.Utils.Svg; |
| | | using DevExpress.XtraBars.Docking; |
| | | using DevExpress.XtraBars.Docking2010.Views; |
| | | using HStation.Vmo; |
| | | using Yw.Vmo; |
| | | using Yw.WinFrmUI.Page; |
| | | |
| | | namespace HStation.WinFrmUI |
| | |
| | | this.PageTitle.Caption = "水力模拟"; |
| | | this.PageTitle.HeaderSvgImage = this.svgImg32[0]; |
| | | this.PageTitle.SvgImageSize = new Size(24, 24); |
| | | |
| | | this.xhsProjectSimulationSchemeMgrCtrl1.ProjectSiteSelectedChangedEvent += XhsProjectSimulationSchemeMgrCtrl1_ProjectSiteSelectedChangedEvent; |
| | | this.xhsProjectSimulationFunctionMgrCtrl1.ShowXhsProjectInfoEvent += XhsProjectSimulationFunctionMgrCtrl1_ShowXhsProjectInfoEvent; |
| | | this.xhsProjectSimulationFunctionMgrCtrl1.ShowXhsProjectSimulationEvent += XhsProjectSimulationFunctionMgrCtrl1_ShowXhsProjectSimulationEvent; |
| | | this.xhsProjectSimulationFunctionMgrCtrl1.CreateXhsProjectSchemeEvent += XhsProjectSimulationFunctionMgrCtrl1_CreateXhsProjectSchemeEvent; |
| | | this.xhsProjectSimulationFunctionMgrCtrl1.CompareXhsProjectSchemeEvent += XhsProjectSimulationFunctionMgrCtrl1_CompareXhsProjectSchemeEvent; |
| | | this.simulationFunctionMgrCtrl1.ShowProjectSiteInfoEvent += XhsProjectSimulationFunctionMgrCtrl1_ShowProjectSiteInfoEvent; |
| | | this.simulationFunctionMgrCtrl1.ShowProjectSiteSimulationEvent += XhsProjectSimulationFunctionMgrCtrl1_ShowProjectSiteSimulationEvent; |
| | | this.simulationFunctionMgrCtrl1.ShowProjectSiteWorkingEvent += XhsProjectSimulationFunctionMgrCtrl1_ShowProjectSiteWorkingEvent; |
| | | this.simulationFunctionMgrCtrl1.ProjectSiteWorkingUpdateEvent += XhsProjectSimulationFunctionMgrCtrl1_ProjectSiteWorkingUpdateEvent; |
| | | this.simulationFunctionMgrCtrl1.ProjectSiteWorkingRemoveEvent += XhsProjectSimulationFunctionMgrCtrl1_ProjectSiteWorkingRemoveEvent; |
| | | this.simulationFunctionMgrCtrl1.ProjectSiteWorkingCheckedEvent += XhsProjectSimulationFunctionMgrCtrl1_ProjectSiteWorkingCheckedEvent; |
| | | this.simulationFunctionMgrCtrl1.CreateProjectSiteSchemeEvent += XhsProjectSimulationFunctionMgrCtrl1_CreateProjectSiteSchemeEvent; |
| | | this.simulationFunctionMgrCtrl1.ShowProjectSiteSchemeEvent += XhsProjectSimulationFunctionMgrCtrl1_ShowProjectSiteSchemeEvent; |
| | | this.simulationFunctionMgrCtrl1.ShowProjectSiteSchemeWorkingEvent += XhsProjectSimulationFunctionMgrCtrl1_ShowProjectSiteSchemeWorkingEvent; |
| | | this.simulationFunctionMgrCtrl1.ProjectSiteSchemeWorkingCheckedEvent += SimulationFunctionMgrCtrl1_ProjectSiteSchemeWorkingCheckedEvent; |
| | | this.simulationFunctionMgrCtrl1.ProjectSiteSchemeWorkingUpdateEvent += SimulationFunctionMgrCtrl1_ProjectSiteSchemeWorkingUpdateEvent; |
| | | this.simulationFunctionMgrCtrl1.ProjectSiteSchemeWorkingRemoveEvent += SimulationFunctionMgrCtrl1_ProjectSiteSchemeWorkingRemoveEvent; |
| | | } |
| | | |
| | | private long _projectId;//项目id |
| | | private XhsProjectVmo _project = null;//项目 |
| | | private XhsProjectSiteVmo _projectSite = null;//项目站 |
| | | private Yw.Model.HydroModelInfo _hydroInfo = null;//水力信息 |
| | | private object _locker = new object();//锁定对象 |
| | | |
| | | /// <summary> |
| | | /// 初始化数据源 |
| | | /// </summary> |
| | | public override async void InitialDataSource() |
| | | { |
| | | base.InitialDataSource(); |
| | | if (_project == null) |
| | | { |
| | | return; |
| | | } |
| | | await this.simulationFunctionMgrCtrl1.SetBindingData(_project); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 绑定数据 |
| | |
| | | public async Task SetBindingData(long projectId) |
| | | { |
| | | _project = await BLLFactory<HStation.BLL.XhsProject>.Instance.GetByID(projectId); |
| | | await SetBindingData(_project); |
| | | SetBindingData(_project); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 设置数据 |
| | | /// </summary> |
| | | public async Task SetBindingData(XhsProjectVmo project) |
| | | public void SetBindingData(XhsProjectVmo project) |
| | | { |
| | | if (project == null) |
| | | { |
| | | return; |
| | | } |
| | | _project = project; |
| | | _projectId = project.ID; |
| | | this.PageTitle.Caption = $"{_project.Name}\r\n水力模拟"; |
| | | await this.xhsProjectSimulationSchemeMgrCtrl1.SetBindingData(_project); |
| | | this.PageTitle.Caption = $"{_project.Name}\r\n项目模拟"; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 初始化数据源 |
| | | /// </summary> |
| | | public override void InitialDataSource() |
| | | { |
| | | base.InitialDataSource(); |
| | | } |
| | | #region 功能面板 |
| | | |
| | | //项目站选择改变事件 |
| | | private async void XhsProjectSimulationSchemeMgrCtrl1_ProjectSiteSelectedChangedEvent(XhsProjectSiteVmo obj) |
| | | //显示项目站概况事件 |
| | | private void XhsProjectSimulationFunctionMgrCtrl1_ShowProjectSiteInfoEvent |
| | | (XhsProjectVmo project, XhsProjectSiteVmo projectSite, Yw.Model.HydroModelInfo hydroInfo, SvgImage svgImage) |
| | | { |
| | | _projectSite = obj; |
| | | if (_projectSite != null) |
| | | lock (_locker) |
| | | { |
| | | var hydroRelation = await BLLFactory<Yw.BLL.HydroModelRelation>.Instance |
| | | .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, _projectSite.ID, HStation.Xhs.Purpose.Simulation); |
| | | _hydroInfo = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.GetByID(hydroRelation.ModelID); |
| | | this.xhsProjectSimulationFunctionMgrCtrl1.SetBindingData(); |
| | | var guid = new PageGuid() |
| | | { |
| | | Modular = this.PageGuid.Modular, |
| | | MoudingType = eMoudingType.Tab, |
| | | Function = SimulationFunctionHelper.Info, |
| | | }; |
| | | if (!IsExistPage(guid, true)) |
| | | { |
| | | var page = new XhsProjectSimulationInfoPage(); |
| | | page.PageTitle.HeaderSvgImage = svgImage; |
| | | page.SetBindingData(project, projectSite, hydroInfo); |
| | | CreatePage(page, guid); |
| | | } |
| | | } |
| | | } |
| | | |
| | | //显示项目信息事件 |
| | | private async void XhsProjectSimulationFunctionMgrCtrl1_ShowXhsProjectInfoEvent(DevExpress.Utils.Svg.SvgImage obj) |
| | | //显示项目站水力模拟事件 |
| | | private void XhsProjectSimulationFunctionMgrCtrl1_ShowProjectSiteSimulationEvent |
| | | (XhsProjectVmo project, XhsProjectSiteVmo projectSite, Yw.Model.HydroModelInfo hydroInfo, Dictionary<HydroWorkingVmo, bool> allWorkingCheckedListDict, SvgImage svgImage) |
| | | { |
| | | lock (_locker) |
| | | { |
| | | var guid = new PageGuid() |
| | | { |
| | | Modular = this.PageGuid.Modular, |
| | | MoudingType = eMoudingType.Tab, |
| | | Function = SimulationFunctionHelper.Simulation, |
| | | TagName = projectSite.ID.ToString() |
| | | }; |
| | | if (!IsExistPage(guid, true)) |
| | | { |
| | | var page = new XhsProjectSimulationCorePage(); |
| | | page.PageTitle.HeaderSvgImage = svgImage; |
| | | page.AppendWorkingEvent += (working) => |
| | | { |
| | | this.simulationFunctionMgrCtrl1.AppendWorking(working); |
| | | }; |
| | | page.SetBindingData(project, projectSite, hydroInfo, allWorkingCheckedListDict); |
| | | CreatePage(page, guid); |
| | | } |
| | | } |
| | | } |
| | | |
| | | //显示项目站工况事件 |
| | | private void XhsProjectSimulationFunctionMgrCtrl1_ShowProjectSiteWorkingEvent |
| | | (XhsProjectVmo project, XhsProjectSiteVmo projectSite, Yw.Model.HydroModelInfo hydroInfo, HydroWorkingVmo working, SvgImage svgImage) |
| | | { |
| | | lock (_locker) |
| | | { |
| | | var guid = new PageGuid() |
| | | { |
| | | Modular = this.PageGuid.Modular, |
| | | MoudingType = eMoudingType.Tab, |
| | | Function = SimulationFunctionHelper.Working, |
| | | TagName = working.ID.ToString() |
| | | }; |
| | | if (!IsExistPage(guid, true)) |
| | | { |
| | | var page = new XhsProjectSimulationWorkingPage(); |
| | | page.UpdateWorkingEvent += (rhs) => |
| | | { |
| | | this.simulationFunctionMgrCtrl1.UpdateWorking(rhs); |
| | | }; |
| | | page.RemoveWorkingEvent += (rhs) => |
| | | { |
| | | this.simulationFunctionMgrCtrl1.RemoveWorking(rhs); |
| | | }; |
| | | page.PageTitle.HeaderSvgImage = svgImage; |
| | | page.SetBindingData(project, projectSite, hydroInfo, working); |
| | | CreatePage(page, guid); |
| | | } |
| | | } |
| | | } |
| | | |
| | | //项目站工况更新事件 |
| | | private void XhsProjectSimulationFunctionMgrCtrl1_ProjectSiteWorkingUpdateEvent |
| | | (XhsProjectVmo project, XhsProjectSiteVmo projectSite, Yw.Model.HydroModelInfo hydroInfo, HydroWorkingVmo working) |
| | | { |
| | | var guid = new PageGuid() |
| | | { |
| | | Modular = this.PageGuid.Modular, |
| | | MoudingType = eMoudingType.Tab, |
| | | Function = "xhs-project-simulation-info", |
| | | Function = SimulationFunctionHelper.Simulation, |
| | | TagName = projectSite.ID.ToString() |
| | | }; |
| | | if (!IsExistPage(guid, true)) |
| | | { |
| | | var page = new XhsProjectSimulationInfoPage(); |
| | | await page.SetBindingData(_project, _projectSite, _hydroInfo); |
| | | CreatePage(page, guid); |
| | | } |
| | | |
| | | } |
| | | |
| | | //显示水力模拟事件 |
| | | private async void XhsProjectSimulationFunctionMgrCtrl1_ShowXhsProjectSimulationEvent(DevExpress.Utils.Svg.SvgImage obj) |
| | | { |
| | | var guid = new PageGuid() |
| | | { |
| | | Modular = this.PageGuid.Modular, |
| | | MoudingType = eMoudingType.Tab, |
| | | Function = "xhs-project-simulation-core", |
| | | }; |
| | | if (!IsExistPage(guid, true)) |
| | | { |
| | | var page = new XhsProjectSimulationCorePage(); |
| | | await page.SetBindingData(_project, _projectSite, _hydroInfo); |
| | | CreatePage(page, guid); |
| | | } |
| | | } |
| | | |
| | | //创建项目方案事件 |
| | | private async void XhsProjectSimulationFunctionMgrCtrl1_CreateXhsProjectSchemeEvent(DevExpress.Utils.Svg.SvgImage obj) |
| | | { |
| | | if (_projectSite == null) |
| | | var page = FindPage(guid); |
| | | if (page == null) |
| | | { |
| | | return; |
| | | } |
| | | var dlg = new AddXhsProjectSimulationSchemeDlg(); |
| | | await dlg.SetBindingData(_projectSite.ID); |
| | | dlg.ReloadDataEvent += (scheme) => |
| | | var ctrl = page as XhsProjectSimulationCorePage; |
| | | if (ctrl == null) |
| | | { |
| | | this.xhsProjectSimulationSchemeMgrCtrl1.AppendScheme(scheme); |
| | | return; |
| | | } |
| | | ctrl.UpdateWorkingCheckedList(working); |
| | | } |
| | | |
| | | //项目站工况移除事件 |
| | | private void XhsProjectSimulationFunctionMgrCtrl1_ProjectSiteWorkingRemoveEvent |
| | | (XhsProjectVmo project, XhsProjectSiteVmo projectSite, Yw.Model.HydroModelInfo hydroInfo, HydroWorkingVmo working) |
| | | { |
| | | var guid = new PageGuid() |
| | | { |
| | | Modular = this.PageGuid.Modular, |
| | | MoudingType = eMoudingType.Tab, |
| | | Function = SimulationFunctionHelper.Simulation, |
| | | TagName = projectSite.ID.ToString() |
| | | }; |
| | | var page = FindPage(guid); |
| | | if (page == null) |
| | | { |
| | | return; |
| | | } |
| | | var ctrl = page as XhsProjectSimulationCorePage; |
| | | if (ctrl == null) |
| | | { |
| | | return; |
| | | } |
| | | ctrl.RemoveWorkingCheckedList(working); |
| | | } |
| | | |
| | | //项目站工况选择改变事件 |
| | | private void XhsProjectSimulationFunctionMgrCtrl1_ProjectSiteWorkingCheckedEvent |
| | | (XhsProjectVmo project, XhsProjectSiteVmo projectSite, Yw.Model.HydroModelInfo hydroInfo, HydroWorkingVmo working, bool hasChecked) |
| | | { |
| | | var guid = new PageGuid() |
| | | { |
| | | Modular = this.PageGuid.Modular, |
| | | MoudingType = eMoudingType.Tab, |
| | | Function = SimulationFunctionHelper.Simulation, |
| | | TagName = projectSite.ID.ToString() |
| | | }; |
| | | var page = FindPage(guid); |
| | | if (page == null) |
| | | { |
| | | return; |
| | | } |
| | | var ctrl = page as XhsProjectSimulationCorePage; |
| | | if (ctrl == null) |
| | | { |
| | | return; |
| | | } |
| | | ctrl.UpdateWorkingCheckedList(working, hasChecked); |
| | | } |
| | | |
| | | //项目站方案创建事件 |
| | | private void XhsProjectSimulationFunctionMgrCtrl1_CreateProjectSiteSchemeEvent |
| | | (XhsProjectVmo project, XhsProjectSiteVmo projectSite, Yw.Model.HydroModelInfo hydroInfo, SvgImage svgImage) |
| | | { |
| | | WaitFormHelper.ShowWaitForm(this.FindForm(), "正在加载模型,请稍侯..."); |
| | | var dlg = new AddXhsSchemeDlg(); |
| | | dlg.Shown += delegate { WaitFormHelper.HideWaitForm(this.FindForm()); }; |
| | | dlg.ReloadDataEvent += (rhs) => |
| | | { |
| | | this.simulationFunctionMgrCtrl1.AppendScheme(rhs); |
| | | }; |
| | | dlg.SetBindingData(project, projectSite, hydroInfo); |
| | | dlg.ShowDialog(); |
| | | } |
| | | |
| | | //比较项目方案事件 |
| | | private void XhsProjectSimulationFunctionMgrCtrl1_CompareXhsProjectSchemeEvent(DevExpress.Utils.Svg.SvgImage obj) |
| | | //显示项目站方案事件 |
| | | private void XhsProjectSimulationFunctionMgrCtrl1_ShowProjectSiteSchemeEvent |
| | | (XhsProjectVmo project, XhsProjectSiteVmo projectSite, XhsSchemeVmo scheme, Yw.Model.HydroModelInfo hydroInfo, Dictionary<HydroWorkingVmo, bool> dict, SvgImage svgImage) |
| | | { |
| | | lock (_locker) |
| | | { |
| | | var guid = new PageGuid() |
| | | { |
| | | Modular = this.PageGuid.Modular, |
| | | MoudingType = eMoudingType.Tab, |
| | | Function = SimulationFunctionHelper.Scheme, |
| | | TagName = scheme.ID.ToString() |
| | | }; |
| | | if (!IsExistPage(guid, true)) |
| | | { |
| | | var page = new XhsProjectSimulationSchemePage(); |
| | | page.PageTitle.HeaderSvgImage = svgImage; |
| | | page.AppendWorkingEvent += (working) => |
| | | { |
| | | this.simulationFunctionMgrCtrl1.AppendSchemeWorking(scheme, working); |
| | | }; |
| | | page.SetBindingData(project, projectSite, scheme, hydroInfo, dict); |
| | | CreatePage(page, guid); |
| | | } |
| | | } |
| | | } |
| | | |
| | | //显示项目站方案工况事件 |
| | | private void XhsProjectSimulationFunctionMgrCtrl1_ShowProjectSiteSchemeWorkingEvent |
| | | (XhsProjectVmo project, XhsProjectSiteVmo projectSite, XhsSchemeVmo scheme, Yw.Model.HydroModelInfo hydroInfo, HydroWorkingVmo working, SvgImage svgImage) |
| | | { |
| | | lock (_locker) |
| | | { |
| | | var guid = new PageGuid() |
| | | { |
| | | Modular = this.PageGuid.Modular, |
| | | MoudingType = eMoudingType.Tab, |
| | | Function = SimulationFunctionHelper.Working, |
| | | TagName = working.ID.ToString() |
| | | }; |
| | | if (!IsExistPage(guid, true)) |
| | | { |
| | | var page = new XhsProjectSimulationWorkingPage(); |
| | | page.PageTitle.HeaderSvgImage = svgImage; |
| | | page.UpdateWorkingEvent += (rhs) => |
| | | { |
| | | this.simulationFunctionMgrCtrl1.UpdateSchemeWorking(scheme, rhs); |
| | | }; |
| | | page.RemoveWorkingEvent += (rhs) => |
| | | { |
| | | this.simulationFunctionMgrCtrl1.RemoveSchemeWorking(scheme, rhs); |
| | | }; |
| | | page.SetBindingData(project, projectSite, scheme, hydroInfo, working); |
| | | CreatePage(page, guid); |
| | | } |
| | | } |
| | | } |
| | | |
| | | //项目站方案工况选择改变事件 |
| | | private void SimulationFunctionMgrCtrl1_ProjectSiteSchemeWorkingCheckedEvent(XhsSchemeVmo scheme, HydroWorkingVmo working, bool hasChecked) |
| | | { |
| | | var guid = new PageGuid() |
| | | { |
| | | Modular = this.PageGuid.Modular, |
| | | MoudingType = eMoudingType.Tab, |
| | | Function = SimulationFunctionHelper.Scheme, |
| | | TagName = scheme.ID.ToString() |
| | | }; |
| | | var page = FindPage(guid); |
| | | if (page == null) |
| | | { |
| | | return; |
| | | } |
| | | var ctrl = page as XhsProjectSimulationSchemePage; |
| | | if (ctrl == null) |
| | | { |
| | | return; |
| | | } |
| | | ctrl.UpdateWorkingCheckedList(working, hasChecked); |
| | | } |
| | | |
| | | //项目站方案工况更新事件 |
| | | private void SimulationFunctionMgrCtrl1_ProjectSiteSchemeWorkingUpdateEvent(XhsSchemeVmo scheme, HydroWorkingVmo working) |
| | | { |
| | | var guid = new PageGuid() |
| | | { |
| | | Modular = this.PageGuid.Modular, |
| | | MoudingType = eMoudingType.Tab, |
| | | Function = SimulationFunctionHelper.Scheme, |
| | | TagName = scheme.ID.ToString() |
| | | }; |
| | | var page = FindPage(guid); |
| | | if (page == null) |
| | | { |
| | | return; |
| | | } |
| | | var ctrl = page as XhsProjectSimulationSchemePage; |
| | | if (ctrl == null) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | } |
| | | |
| | | //项目站方案工况移除事件 |
| | | private void SimulationFunctionMgrCtrl1_ProjectSiteSchemeWorkingRemoveEvent(XhsSchemeVmo scheme, HydroWorkingVmo working) |
| | | { |
| | | var guid = new PageGuid() |
| | | { |
| | | Modular = this.PageGuid.Modular, |
| | | MoudingType = eMoudingType.Tab, |
| | | Function = SimulationFunctionHelper.Scheme, |
| | | TagName = scheme.ID.ToString() |
| | | }; |
| | | var page = FindPage(guid); |
| | | if (page == null) |
| | | { |
| | | return; |
| | | } |
| | | var ctrl = page as XhsProjectSimulationSchemePage; |
| | | if (ctrl == null) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | #endregion |
| | | |
| | | #region TabbedView 相关事件处理程序 |
| | | |
| | |
| | | return; |
| | | } |
| | | |
| | | //正在关闭Document |
| | | private void tabbedView1_DocumentClosing(object sender, DocumentCancelEventArgs e) |
| | | { |
| | | var page = e.Document.Control as DocumentPage; |
| | | if (page == null) |
| | | { |
| | | return; |
| | | } |
| | | if (!page.CanClose()) |
| | | { |
| | | e.Cancel = true; |
| | | return; |
| | | } |
| | | page.UnRegistEvents(); |
| | | } |
| | | |
| | | //关闭 此时控件已经为空 |
| | | private void tabbedView1_DocumentClosed(object sender, DocumentEventArgs e) |
| | | { |
| | | } |
| | | |
| | | #endregion TabbedView 相关事件处理程序 |
| | | #endregion |
| | | |
| | | #region Page |
| | | |
| | |
| | | docPnl.Show(); |
| | | } |
| | | break; |
| | | |
| | | case eMoudingType.Tab: |
| | | { |
| | | this.tabbedView1.BeginUpdate(); |
| | |
| | | this.tabbedView1.Controller.Activate(doc); |
| | | } |
| | | break; |
| | | |
| | | default: break; |
| | | } |
| | | page.InitialDataSource(); |
| | |
| | | } |
| | | } |
| | | |
| | | #endregion Page |
| | | //查询Page |
| | | private DocumentPage FindPage(PageGuid pguid) |
| | | { |
| | | if (pguid == null) |
| | | { |
| | | return default; |
| | | } |
| | | if (this.dockManager1.Panels != null && this.dockManager1.Panels.Count > 0) |
| | | { |
| | | foreach (DockPanel panel in this.dockManager1.Panels) |
| | | { |
| | | if (panel.Tag != null) |
| | | { |
| | | if (panel.Tag is PageGuid) |
| | | { |
| | | if ((panel.Tag as PageGuid).ToString() == pguid.ToString()) |
| | | { |
| | | return panel.ControlContainer.Controls[0] as DocumentPage; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (this.tabbedView1.Documents != null && this.tabbedView1.Documents.Count > 0) |
| | | { |
| | | foreach (BaseDocument doc in this.tabbedView1.Documents) |
| | | { |
| | | if (doc.Tag != null) |
| | | { |
| | | if (doc.Tag is PageGuid) |
| | | { |
| | | if ((doc.Tag as PageGuid).ToString() == pguid.ToString()) |
| | | { |
| | | return doc.Control as DocumentPage; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | return default; |
| | | } |
| | | |
| | | |
| | | #endregion |
| | | |
| | | } |
| | | } |