| | |
| | | namespace HStation.WinFrmUI |
| | | using DevExpress.XtraBars.Docking; |
| | | using DevExpress.XtraBars.Docking2010.Views; |
| | | using Yw.WinFrmUI.Page; |
| | | |
| | | namespace HStation.WinFrmUI |
| | | { |
| | | public partial class XhsProjectSimulationMgrPage : Yw.WinFrmUI.DocumentPage |
| | | { |
| | |
| | | { |
| | | 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);//不会触发正在关闭和关闭事件 |
| | | } |
| | | } |
| | | } |
| | | 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 |
| | | } |
| | | } |