From 71ff3ccde064c104db61fa28300b039456c0ba06 Mon Sep 17 00:00:00 2001 From: duheng <2784771470@qq.com> Date: 星期三, 14 八月 2024 17:18:18 +0800 Subject: [PATCH] 冲突 --- WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/XhsSchemeMultiMgrPage.cs | 448 +++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 380 insertions(+), 68 deletions(-) diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/XhsSchemeMultiMgrPage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/XhsSchemeMultiMgrPage.cs index d83fd7e..052c85a 100644 --- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/XhsSchemeMultiMgrPage.cs +++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-scheme/XhsSchemeMultiMgrPage.cs @@ -1,6 +1,6 @@ -锘縰sing DevExpress.Utils; -using NetTaste; -using Yw.Service.Hydro; +锘縰sing DevExpress.XtraBars.Docking; +using DevExpress.XtraBars.Docking2010.Views; +using Yw.WinFrmUI.Page; namespace HStation.WinFrmUI { @@ -12,10 +12,19 @@ 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> /// 缁戝畾鏁版嵁 @@ -23,6 +32,7 @@ /// <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); @@ -41,81 +51,383 @@ _hydroInfo = await new Yw.BLL.HydroModelInfo().GetByID(relation.ModelID); } - /// <summary> - /// 缁戝畾鏁版嵁 - /// </summary> - /// <param name="project">椤圭洰</param> - public void SetBindingData(HStation.Dto.XhsProjectStdDto project) + + //鍔熻兘鐐瑰嚮 + private void accordionControl1_ElementClick(object sender, DevExpress.XtraBars.Navigation.ElementClickEventArgs e) { - _project = project; - this.PageTitle.Caption = $"{_project?.Name}\n鏂规绠$悊"; + 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(); + 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(); + 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; + } } - /// <summary> - /// 鍒濆鍖栨暟鎹簮 - /// </summary> - public override async void InitialDataSource() + #region TabbedView 鐩稿叧浜嬩欢澶勭悊绋嬪簭 + + //閫変腑 + private void tabbedView1_DocumentSelected(object sender, DocumentEventArgs e) { - base.InitialDataSource(); - this.bimfaceInterop3dContainer1.LoadCompletedEvent += BimfaceInterop3dContainer1_LoadCompletedEvent; - this.bimfaceInterop3dContainer1.ClickInEvent += BimfaceInterop3dContainer1_ClickInEvent; - await this.bimfaceInterop3dContainer1.InitialContainer(); + if (e.Document == null) + return; + var surfaceGuid = e.Document.Tag as PageGuid; + if (surfaceGuid == null) + return; } - /// <summary> - /// 椤甸潰鍔犺浇瀹屾垚鍚庤Е鍙� - /// </summary> - private async void BimfaceInterop3dContainer1_LoadCompletedEvent() + //娣诲姞 + private void tabbedView1_DocumentAdded(object sender, DocumentEventArgs e) { - if (_project == null) - { - return; - } - - var projectSite = await new BLL.XhsProjectSiteStd().GetDefaultByProjectID(_project.ID); - if (projectSite == null) - { - return; - } - - var relation = await new Yw.BLL.BimfaceFileRelationStd() - .GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, projectSite.ID, Yw.Bimface.Purpose.Simulation); - if (relation == null) - { - return; - } - - var bimfaceFile = await new Yw.BLL.BimfaceFileStd().GetByID(relation.BimfaceFileID); - if (bimfaceFile == null) - { - return; - } - - var viewToken = await BimfaceHelper.GetViewToken(bimfaceFile.BimfaceId); - if (string.IsNullOrEmpty(viewToken)) - { - return; - } - await this.bimfaceInterop3dContainer1.LoadView(viewToken); - } - /// <summary> - /// 鐐瑰嚮浜嬩欢 - /// </summary> - private void BimfaceInterop3dContainer1_ClickInEvent(Yw.WinFrmUI.Bimface.ClickIn3dInfo obj) + //婵�娲� + private void tabbedView1_DocumentActivated(object sender, DocumentEventArgs e) { - //if (_hydroInfo == null) - //{ - // return; - //} - //var allParterList = _hydroInfo.GetAllParters(); - //var parter = allParterList.Find(x => x.Code == obj.ObjectId); - //if (parter != null) - //{ - // var vm = HydroParterPropertyViewModelBuilder.CreateViewModel(parter, allParterList); - // this.hydroParterPropertyCtrl1.SelectedObject = vm; - //} + 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