using DevExpress.XtraBars.Docking; using DevExpress.XtraBars.Docking2010.Views; using HStation.Vmo; using Yw.WinFrmUI.Page; namespace HStation.WinFrmUI { public partial class XhsProjectSimulationMgrPage : Yw.WinFrmUI.DocumentPage { public XhsProjectSimulationMgrPage() { InitializeComponent(); this.PageTitle.Caption = "水力模拟"; this.PageTitle.HeaderSvgImage = this.svgImg32[0]; this.PageTitle.SvgImageSize = new Size(24, 24); this.xhsProjectSimulationFunctionMgrCtrl1.ProjectSiteSelectedChangedEvent += xhsProjectSimulationFunctionMgrCtrl1_ProjectSiteSelectedChangedEvent; this.xhsProjectSimulationFunctionMgrCtrl1.ShowXhsProjectInfoEvent += XhsProjectSimulationFunctionMgrCtrl1_ShowXhsProjectInfoEvent; this.xhsProjectSimulationFunctionMgrCtrl1.ShowXhsProjectSimulationEvent += XhsProjectSimulationFunctionMgrCtrl1_ShowXhsProjectSimulationEvent; this.xhsProjectSimulationFunctionMgrCtrl1.CreateXhsProjectSchemeEvent += XhsProjectSimulationFunctionMgrCtrl1_CreateXhsProjectSchemeEvent; this.xhsProjectSimulationFunctionMgrCtrl1.CompareXhsProjectSchemeEvent += XhsProjectSimulationFunctionMgrCtrl1_CompareXhsProjectSchemeEvent; PumpFullInfoViewDlg.JumpPumpFullInfoCtrl += ShowPumpInfo; } private long _projectId;//项目id private XhsProjectVmo _project = null;//项目 private XhsProjectSiteVmo _projectSite = null;//项目站 private Yw.Model.HydroModelInfo _hydroInfo = null;//水力信息 /// /// 初始化数据源 /// public override void InitialDataSource() { base.InitialDataSource(); } /// /// 绑定数据 /// public async Task SetBindingData(long projectId) { _project = await BLLFactory.Instance.GetByID(projectId); await SetBindingData(_project); } /// /// 设置数据 /// public async Task SetBindingData(XhsProjectVmo project) { if (project == null) { return; } _project = project; _projectId = project.ID; this.PageTitle.Caption = $"{_project.Name}\r\n项目模拟"; await this.xhsProjectSimulationFunctionMgrCtrl1.SetBindingData(_project); } #region 功能面板 //项目站选择改变事件 private async void xhsProjectSimulationFunctionMgrCtrl1_ProjectSiteSelectedChangedEvent(XhsProjectSiteVmo obj) { _projectSite = obj; if (_projectSite != null) { var hydroRelation = await BLLFactory.Instance .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, _projectSite.ID, HStation.Xhs.Purpose.Simulation); _hydroInfo = await BLLFactory.Instance.GetByID(hydroRelation.ModelID); this.xhsProjectSimulationFunctionMgrCtrl1.ResetBindingData(); } } //显示项目信息事件 private async void XhsProjectSimulationFunctionMgrCtrl1_ShowXhsProjectInfoEvent(DevExpress.Utils.Svg.SvgImage obj) { var guid = new PageGuid() { Modular = this.PageGuid.Modular, MoudingType = eMoudingType.Tab, Function = "xhs-project-simulation-info", }; 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) { return; } //var dlg = new AddXhsProjectSimulationSchemeDlg(); //await dlg.SetBindingData(_projectSite.ID); //dlg.ReloadDataEvent += (scheme) => //{ // this.xhsProjectSimulationFunctionMgrCtrl1.AppendScheme(scheme); //}; //dlg.ShowDialog(); var dlg = new AddXhsSchemeDlg(); await dlg.SetBindingData(_project, _projectSite, _hydroInfo); dlg.ShowDialog(); } //比较项目方案事件 private void XhsProjectSimulationFunctionMgrCtrl1_CompareXhsProjectSchemeEvent(DevExpress.Utils.Svg.SvgImage obj) { TipFormHelper.ShowWarn("正在开发中,敬请期待..."); } #endregion 功能面板 #region TabbedView 相关事件处理程序 //选中 private void tabbedView1_DocumentSelected(object sender, DocumentEventArgs e) { if (e.Document == null) return; var surfaceGuid = e.Document.Tag as PageGuid; if (surfaceGuid == null) return; } //添加 private void tabbedView1_DocumentAdded(object sender, DocumentEventArgs e) { } //激活 private void tabbedView1_DocumentActivated(object sender, DocumentEventArgs e) { var page = e.Document.Control as DocumentPage; if (page == null) return; } //关闭 此时控件已经为空 private void tabbedView1_DocumentClosed(object sender, DocumentEventArgs e) { } #endregion TabbedView 相关事件处理程序 #region Page //是否存在Page private new bool IsExistPage(PageGuid pguid, bool isActivePage) { if (pguid == null) { return false; } 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()) { if (isActivePage) { panel.Show(); } return true; } } } } } 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()) { if (isActivePage) { this.tabbedView1.Controller.Activate(doc); } return true; } } } } } return false; } //更新数据 private new void RefreshPageData(PageGuid pguid) { if (pguid == null) { return; } if (this.dockManager1.Panels != null && this.dockManager1.Panels.Count > 0) { var panel = this.dockManager1.Panels.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString()); if (panel != null) { if (panel.ControlContainer.Controls.Count > 0) { var page = panel.ControlContainer.Controls[0] as DocumentPage; if (page != null) { page.RefreshData(); } } return; } } if (this.tabbedView1.Documents != null && this.tabbedView1.Documents.Count > 0) { var doc = this.tabbedView1.Documents.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString()); if (doc != null) { var page = doc.Control as DocumentPage; if (page != null) { page.RefreshData(); } return; } } } //更新PageTitle private new void UpdatePageTitle(PageGuid pguid, PageTitle title) { if (pguid == null || title == null) return; if (this.dockManager1.Panels != null && this.dockManager1.Panels.Count > 0) { var panel = this.dockManager1.Panels.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString()); if (panel != null) { panel.Text = title.Caption; panel.ImageOptions.Image = title.HeaderImage; panel.ImageOptions.SvgImage = title.HeaderSvgImage; panel.ImageOptions.SvgImageSize = title.SvgImageSize; if (panel.ControlContainer.Controls.Count > 0) { var page = panel.ControlContainer.Controls[0] as DocumentPage; if (page != null) { page.PageTitle = title; } } return; } } if (this.tabbedView1.Documents != null && this.tabbedView1.Documents.Count > 0) { var doc = this.tabbedView1.Documents.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString()); if (doc != null) { doc.Caption = title.Caption; doc.ImageOptions.Image = title.HeaderImage; doc.ImageOptions.SvgImage = title.HeaderSvgImage; doc.ImageOptions.SvgImageSize = title.SvgImageSize; var page = doc.Control as DocumentPage; if (page != null) { page.PageTitle = title; } return; } } } //创建Page private new bool CreatePage(DocumentPage page, PageGuid pguid) { if (page == null || pguid == null) { return false; } page.PageGuid = pguid; page.Dock = DockStyle.Fill; page.IsExistPageEvent += IsExistPage; page.CreatePageEvent += CreatePage; page.RefreshPageDataEvent += RefreshPageData; page.UpdatePageTitleEvent += UpdatePageTitle; page.ClosePageEvent += ClosePage; page.RegistEvents(); switch (pguid.MoudingType) { case eMoudingType.Dock: { this.dockManager1.BeginUpdate(); DockPanel docPnl = null; if (pguid.DockType == eDockType.Left) { docPnl = this.dockManager1.AddPanel(DockingStyle.Left); } else if (pguid.DockType == eDockType.Right) { docPnl = this.dockManager1.AddPanel(DockingStyle.Right); } docPnl.Footer = Directory.GetCurrentDirectory(); if (page.PageTitle != null) { docPnl.Text = page.PageTitle.Caption; docPnl.ImageOptions.Image = page.PageTitle.HeaderImage; docPnl.ImageOptions.SvgImage = page.PageTitle.HeaderSvgImage; docPnl.ImageOptions.SvgImageSize = page.PageTitle.SvgImageSize; docPnl.Options.ShowCloseButton = page.PageTitle.AllowClose; } docPnl.ControlContainer.Controls.Add(page); docPnl.Tag = pguid; this.dockManager1.EndUpdate(); docPnl.Show(); } break; case eMoudingType.Tab: { this.tabbedView1.BeginUpdate(); var doc = this.tabbedView1.AddDocument(page); doc.Footer = Directory.GetCurrentDirectory(); if (page.PageTitle != null) { doc.Caption = page.PageTitle.Caption; doc.ImageOptions.Image = page.PageTitle.HeaderImage; doc.ImageOptions.SvgImage = page.PageTitle.HeaderSvgImage; doc.ImageOptions.SvgImageSize = page.PageTitle.SvgImageSize; doc.Properties.AllowClose = page.PageTitle.AllowClose ? DevExpress.Utils.DefaultBoolean.True : DevExpress.Utils.DefaultBoolean.False; } doc.Tag = pguid; this.tabbedView1.EndUpdate(); this.tabbedView1.Controller.Activate(doc); } break; default: break; } page.InitialDataSource(); return true; } //关闭Page private new void ClosePage(PageGuid pguid) { switch (pguid.MoudingType) { case eMoudingType.Dock: { if (this.dockManager1.Panels != null && this.dockManager1.Panels.Count > 0) { var panel = this.dockManager1.Panels.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString()); if (panel != null) { if (panel.Visibility != DockVisibility.Hidden) panel.Close();//会触发正在关闭和关闭事件 //this.dockManager1.RemovePanel(panel);//不会触发正在关闭和关闭事件 } } } break; case eMoudingType.Tab: { if (this.tabbedView1.Documents != null && this.tabbedView1.Documents.Count > 0) { var doc = this.tabbedView1.Documents.ToList().Find(x => x.Tag != null && x.Tag is PageGuid && (x.Tag as PageGuid).ToString() == pguid.ToString()); if (doc != null) { this.tabbedView1.Controller.Close(doc);//会触发正在关闭和关闭事件 } } } break; default: break; } } #endregion Page private void ShowPumpInfo(PumpFullInfoCtrl pumpFullInfoCtrl) { var guid = new PageGuid() { Modular = this.PageGuid.Modular, MoudingType = eMoudingType.Tab, Function = "xhs-project-pump-info", }; if (!IsExistPage(guid, true)) { CreatePage(pumpFullInfoCtrl, guid); } } } }