From ec0d0b6f8e3ac7791c736ae8aad69c4a1587cad9 Mon Sep 17 00:00:00 2001 From: lixiaojun <1287241240@qq.com> Date: 星期三, 11 九月 2024 10:14:44 +0800 Subject: [PATCH] xhs 和 bimface vmo改造 --- WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/XhsProjectSimulationMgrPage.cs | 423 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 422 insertions(+), 1 deletions(-) diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/XhsProjectSimulationMgrPage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/XhsProjectSimulationMgrPage.cs index 83eb05a..982592f 100644 --- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/XhsProjectSimulationMgrPage.cs +++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/XhsProjectSimulationMgrPage.cs @@ -1,4 +1,8 @@ -锘縩amespace HStation.WinFrmUI +锘縰sing DevExpress.XtraBars.Docking; +using DevExpress.XtraBars.Docking2010.Views; +using Yw.WinFrmUI.Page; + +namespace HStation.WinFrmUI { public partial class XhsProjectSimulationMgrPage : Yw.WinFrmUI.DocumentPage { @@ -6,6 +10,423 @@ { InitializeComponent(); this.PageTitle.Caption = "姘村姏妯℃嫙"; + this.PageTitle.HeaderSvgImage = this.svgImg32[0]; + this.PageTitle.SvgImageSize = new Size(24, 24); + } + + private XhsProjectStdDto _project = null; + private Yw.Model.HydroModelInfo _hydroInfo = null; + + /// <summary> + /// 鍒濆鍖栨暟鎹簮 + /// </summary> + public override void InitialDataSource() + { + base.InitialDataSource(); + } + + /// <summary> + /// 缁戝畾鏁版嵁 + /// </summary> + /// <param name="projectId">椤圭洰id</param> + public async Task SetBindingData(long projectId) + { + //this.xhsSchemeMgrListCtrl1.SetBindingData(projectId); + //_project = await new BLL.XhsProjectStd().GetByID(projectId); + //this.PageTitle.Caption = $"{_project?.Name}\r\n鏂规绠$悊"; + //var projectSite = await new BLL.XhsProjectSiteStd().GetDefaultByProjectID(_project.ID); + //if (projectSite == null) + //{ + // return; + //} + + //var relation = await new Yw.BLL.HydroModelRelation() + // .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, projectSite.ID, Yw.Bimface.Purpose.Simulation); + //if (relation == null) + //{ + // return; + //} + + //_hydroInfo = await new Yw.BLL.HydroModelInfo().GetByID(relation.ModelID); + } + + + //鍔熻兘鐐瑰嚮 + private async void accordionControl1_ElementClick(object sender, DevExpress.XtraBars.Navigation.ElementClickEventArgs e) + { + var tag = e.Element.Tag; + if (tag is not string code) + return; + + var svg_image_size = new Size(24, 24); + switch (code) + { + case "basic_info": + { + var guid = new PageGuid() + { + Modular = this.PageGuid.Modular, + MoudingType = eMoudingType.Tab, + Function = "basic_info", + }; + if (!IsExistPage(guid, true)) + { + var page = new XhsSchemeBasicInfoPage(); + page.SetBindingData(_project.ID); + page.PageTitle.Caption = e.Element.Text; + page.PageTitle.HeaderSvgImage = e.Element.ImageOptions.SvgImage; + page.PageTitle.SvgImageSize = svg_image_size; + CreatePage(page, guid); + } + } + break; + case "asset_mgr": + { + var guid = new PageGuid() + { + Modular = this.PageGuid.Modular, + MoudingType = eMoudingType.Tab, + Function = "asset_mgr", + }; + if (!IsExistPage(guid, true)) + { + var page = new XhsSchemeAssetMgrPage(); + await page.SetBindingData(_project.ID); + page.PageTitle.Caption = e.Element.Text; + page.PageTitle.HeaderSvgImage = e.Element.ImageOptions.SvgImage; + page.PageTitle.SvgImageSize = svg_image_size; + CreatePage(page, guid); + } + } + break; + case "hydraulic_simulation": + { + var guid = new PageGuid() + { + Modular = this.PageGuid.Modular, + MoudingType = eMoudingType.Tab, + Function = "hydraulic_simulation", + }; + if (!IsExistPage(guid, true)) + { + var page = new XhsSchemeHydraulicSimulationPage(); + await page.SetBindingData(_project.ID); + page.PageTitle.Caption = e.Element.Text; + page.PageTitle.HeaderSvgImage = e.Element.ImageOptions.SvgImage; + page.PageTitle.SvgImageSize = svg_image_size; + CreatePage(page, guid); + } + } + break; + case "create_scheme": + { + var dlg = new CreateSchemeDlg(); + dlg.ShowDialog(); + } + break; + case "scheme_comparison": + { + var guid = new PageGuid() + { + Modular = this.PageGuid.Modular, + MoudingType = eMoudingType.Tab, + Function = "scheme_comparison", + }; + if (!IsExistPage(guid, true)) + { + var page = new XhsSchemeComparisonPage(); + page.PageTitle.Caption = e.Element.Text; + page.PageTitle.HeaderSvgImage = e.Element.ImageOptions.SvgImage; + page.PageTitle.SvgImageSize = svg_image_size; + CreatePage(page, guid); + } + } + break; + default: + break; + } + } + + #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);//涓嶄細瑙﹀彂姝e湪鍏抽棴鍜屽叧闂簨浠� + } + } + } + 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 } } \ No newline at end of file -- Gitblit v1.9.3