using DevExpress.XtraBars.Docking2010.Views;
|
using DevExpress.XtraEditors;
|
using IStation.DataProvider;
|
using IStation.WinFrmUI.Basic;
|
using IStation.WinFrmUI.CalcErQu;
|
using IStation.WinFrmUI.Monitor;
|
using System;
|
using System.Collections.Generic;
|
using System.IO;
|
using System.Linq;
|
using System.Reflection;
|
using System.Windows.Forms;
|
|
namespace IStation.MainPanel.ChCalc
|
{
|
public partial class MainPanel : XtraUserControl
|
{
|
public MainPanel()
|
{
|
DataFolderHelper.IsExeExcute = false;
|
|
InitializeComponent();
|
}
|
|
|
|
|
|
|
//开启界面双缓冲 解决窗体切换闪屏问题
|
protected override CreateParams CreateParams
|
{
|
get
|
{
|
CreateParams cp = base.CreateParams;
|
cp.ExStyle |= 0x02000000;
|
return cp;
|
}
|
}
|
|
|
|
#region TabbedView
|
|
//选中
|
private void tabbedView1_DocumentSelected(object sender, DocumentEventArgs e)
|
{
|
if (e.Document == null)
|
return;
|
if (!(e.Document.Tag is WinFrmUI.SurfaceGuid surfaceGuid))
|
return;
|
foreach (var item in this.accordionControl.Elements)
|
{
|
if (SelectAccordionControlElement(item, surfaceGuid))
|
break;
|
}
|
}
|
#endregion
|
|
#region Page
|
|
//是否存在Page
|
private bool IsExistPage(WinFrmUI.SurfaceGuid sguid, bool isActivateDoc)
|
{
|
if (sguid == null)
|
return false;
|
|
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 WinFrmUI.SurfaceGuid)
|
{
|
if ((doc.Tag as WinFrmUI.SurfaceGuid).ToString() == sguid.ToString())
|
{
|
if (isActivateDoc)
|
this.tabbedView1.Controller.Activate(doc);
|
return true;
|
}
|
}
|
}
|
}
|
}
|
|
return false;
|
}
|
|
//更新数据
|
private void RefreshPageData(WinFrmUI.SurfaceGuid sguid)
|
{
|
if (sguid == null)
|
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 WinFrmUI.SurfaceGuid && (x.Tag as WinFrmUI.SurfaceGuid).ToString() == sguid.ToString());
|
if (doc != null)
|
{
|
if (doc.Control is WinFrmUI.DocumentPage page)
|
{
|
page.RefreshDataSource();
|
}
|
return;
|
}
|
}
|
}
|
|
//更新PageTitle
|
private void UpdatePageTitle(WinFrmUI.SurfaceGuid sguid, WinFrmUI.PageTitle title)
|
{
|
if (sguid == null || title == null)
|
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 WinFrmUI.SurfaceGuid && (x.Tag as WinFrmUI.SurfaceGuid).ToString() == sguid.ToString());
|
if (doc != null)
|
{
|
doc.Caption = title.Caption;
|
doc.ImageOptions.Image = title.HeaderImage;
|
doc.ImageOptions.SvgImage = title.HeaderSvgImage;
|
doc.ImageOptions.SvgImageSize = title.SvgImageSize;
|
if (doc.Control is WinFrmUI.DocumentPage page)
|
{
|
page.PageTitle = title;
|
}
|
return;
|
}
|
}
|
}
|
|
//创建Page
|
private bool CreatePage(WinFrmUI.DocumentPage page, WinFrmUI.SurfaceGuid sguid)
|
{
|
if (page == null || sguid == null)
|
return false;
|
page.SurfaceGuid = sguid;
|
page.Dock = DockStyle.Fill;
|
page.IsExistPageEvent += IsExistPage;
|
page.CreatePageEvent += CreatePage;
|
page.RefreshPageDataEvent += RefreshPageData;
|
page.UpdatePageTitleEvent += UpdatePageTitle;
|
page.ClosePageEvent += ClosePage;
|
page.ResetAllPagesEvent += ResetAllPages;
|
page.RegistEvents();
|
|
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;
|
}
|
else
|
{
|
doc.Caption = page.SurfaceGuid?.Function;
|
}
|
doc.Tag = sguid;
|
this.tabbedView1.EndUpdate();
|
this.tabbedView1.Controller.Activate(doc);
|
|
page.InitialDataSource();
|
return true;
|
}
|
|
//关闭Page
|
private void ClosePage(WinFrmUI.SurfaceGuid sguid)
|
{
|
if (this.tabbedView1.Documents != null && this.tabbedView1.Documents.Count > 0)
|
{
|
var doc = this.tabbedView1.Documents.ToList().Find(x => x.Tag != null && x.Tag is WinFrmUI.SurfaceGuid && (x.Tag as WinFrmUI.SurfaceGuid).ToString() == sguid.ToString());
|
if (doc != null)
|
{
|
var page = doc.Control as WinFrmUI.DocumentPage;
|
this.tabbedView1.Controller.Close(doc);//会触发正在关闭和关闭事件
|
}
|
}
|
}
|
|
//查找page
|
private WinFrmUI.DocumentPage FindPage(WinFrmUI.SurfaceGuid sguid, bool isActiveDoc)
|
{
|
if (sguid == null)
|
return default;
|
var sguid_msg = sguid.ToString();
|
|
if (this.tabbedView1.Documents != null && this.tabbedView1.Documents.Count > 0)
|
{
|
var doc = this.tabbedView1.Documents.ToList().Find(x => x.Tag != null && x.Tag.ToString() == sguid_msg);
|
if (doc != null)
|
{
|
if (isActiveDoc)
|
this.tabbedView1.Controller.Activate(doc);
|
if (doc.Control is WinFrmUI.DocumentPage page)
|
{
|
return page;
|
}
|
return null;
|
}
|
}
|
return null;
|
}
|
|
//重置所有页面
|
private void ResetAllPages()
|
{
|
this.tabbedView1.Controller.CloseAll();
|
}
|
|
#endregion
|
|
#region AccordionControl
|
|
//功能点击事件
|
private void accordionControl_ElementClick(object sender, DevExpress.XtraBars.Navigation.ElementClickEventArgs e)
|
{
|
if (e.Element.Tag == null)
|
return;
|
var ele = e.Element.Tag as FuncElement;
|
if (ele.SurfaceGuid != null)
|
{
|
CreateFuncPage(ele);
|
}
|
}
|
|
|
//获取模块元素
|
private DevExpress.XtraBars.Navigation.AccordionControlElement GetAccordionControlElement(FuncElement ele)
|
{
|
var accEle = new DevExpress.XtraBars.Navigation.AccordionControlElement();
|
if (ele.SurfaceGuid != null)
|
{
|
accEle.Name = ele.SurfaceGuid.ToString();
|
}
|
else
|
{
|
accEle.Name = ele.ID;
|
}
|
accEle.Text = ele.Name;
|
accEle.Image = ele.Image;
|
accEle.Expanded = ele.Expand;
|
accEle.AllowGlyphSkinning = DevExpress.Utils.DefaultBoolean.True;
|
accEle.Tag = ele;
|
accEle.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item;
|
if (ele.FuncElements != null && ele.FuncElements.Count > 0)
|
{
|
foreach (var item in ele.FuncElements)
|
{
|
accEle.Elements.Add(GetAccordionControlElement(item));
|
}
|
accEle.Style = DevExpress.XtraBars.Navigation.ElementStyle.Group;
|
}
|
return accEle;
|
}
|
|
//选择功能元素
|
private bool SelectAccordionControlElement(DevExpress.XtraBars.Navigation.AccordionControlElement element, WinFrmUI.SurfaceGuid surfaceGuid)
|
{
|
if (element == null)
|
return false;
|
if (surfaceGuid == null)
|
return false;
|
if (element.Name == surfaceGuid.ToString())
|
{
|
this.accordionControl.SelectedElement = element;
|
if (element.OwnerElement != null)
|
{
|
element.OwnerElement.Expanded = true;
|
this.accordionControl.Refresh();
|
}
|
return true;
|
}
|
else
|
{
|
if (element.Elements != null && element.Elements.Count > 0)
|
{
|
foreach (var item in element.Elements)
|
{
|
SelectAccordionControlElement(item, surfaceGuid);
|
}
|
}
|
}
|
return false;
|
}
|
|
|
//创建功能页
|
private void CreateFuncPage(FuncElement obj)
|
{
|
try
|
{
|
var control = (Control)Assembly.LoadFrom(obj.DllFileName).CreateInstance(obj.ControlFullName);
|
if (control is WinFrmUI.DocumentPage page)
|
{
|
if (IsExistPage(obj.SurfaceGuid, true))
|
return;
|
CreatePage(page, obj.SurfaceGuid);
|
}
|
}
|
catch (Exception)
|
{
|
XtraMessageBox.Show($"{obj.Name} 配置错误!");
|
}
|
}
|
|
#endregion
|
|
|
private void accBasic_Click(object sender, EventArgs e)
|
{
|
var page = new BasicInfoMgrPage();
|
if (IsExistPage(page.SurfaceGuid, true))
|
return;
|
CreatePage(page, page.SurfaceGuid);
|
}
|
|
private void accCurveCompare_Click(object sender, EventArgs e)
|
{
|
var page = new TestCurveByStationComparePage();
|
if (IsExistPage(page.SurfaceGuid, true))
|
return;
|
CreatePage(page, page.SurfaceGuid);
|
}
|
private void accSetting_Click(object sender, EventArgs e)
|
{
|
AnaSettingMgrDlg frm = new AnaSettingMgrDlg();
|
frm.ShowDialog();
|
}
|
private void accCalcu1_Click(object sender, EventArgs e)
|
{
|
var page = new IStation.WinFrmUI.CalcErQu.ManuWizardMainContainter();
|
if (IsExistPage(page.SurfaceGuid, true))
|
return;
|
CreatePage(page, page.SurfaceGuid);
|
}
|
private void accCalcu2_Click(object sender, EventArgs e)
|
{
|
var page = new IStation.WinFrmUI.CalcErQu.CalcWizardMainContainter();
|
if (IsExistPage(page.SurfaceGuid, true))
|
return;
|
CreatePage(page, page.SurfaceGuid);
|
}
|
private void accHistorical_Click(object sender, EventArgs e)
|
{
|
var page = new IStation.WinFrmUI.CalcErQu.CalcPrjHistoryContainter();
|
if (IsExistPage(page.SurfaceGuid, true))
|
return;
|
CreatePage(page, page.SurfaceGuid);
|
}
|
private void accMonitor_Click(object sender, EventArgs e)
|
{
|
var page = new MonitorMgrPage();
|
if (IsExistPage(page.SurfaceGuid, true))
|
return;
|
CreatePage(page, page.SurfaceGuid);
|
}
|
|
private void accWaterLevel_Click(object sender, EventArgs e)
|
{
|
var page = new IStation.WinFrmUI.River.RiverWaterLevelMainPage();
|
if (IsExistPage(page.SurfaceGuid, true))
|
return;
|
CreatePage(page, page.SurfaceGuid);
|
}
|
|
private void accHistroy_Click(object sender, EventArgs e)
|
{
|
var page = new IStation.WinFrmUI.Monitor.HistoryDataDlg();
|
if (IsExistPage(page.SurfaceGuid, true))
|
return;
|
CreatePage(page, page.SurfaceGuid);
|
}
|
|
private void MainPanel_Load(object sender, EventArgs e)
|
{
|
//数据初始化
|
if (!Settings.File.Initialize)
|
{
|
ElecPriceGenerator.Creater();
|
StationGenerator.Creater();
|
|
Settings.File.Initialize = true;
|
SettingsHelper.Save();
|
}
|
|
//
|
List<Model.RiverWaterLevelDrop> allRiverWaterLevelDrop = BLL.RiverWaterLevelDrop.GetList();
|
IStation.Calc.ErQu.GlobalParas.RiverWaterLevelDrops = allRiverWaterLevelDrop;
|
|
List<Model.ReservoirParas> allReservoirParas = BLL.ReservoirParas.GetList();
|
IStation.Calc.ErQu.GlobalParas.ReservoirParasList = allReservoirParas;
|
|
var asT = BLL.AnaSetting.GetSetting();
|
if(asT == null)
|
{
|
MessageBox.Show("配置读取失败");
|
return;
|
}
|
IStation.Calc.ErQu.GlobalParas.AnaSetting = asT;
|
|
|
var page = new IStation.WinFrmUI.CalcErQu.CalcWizardMainContainter();
|
if (IsExistPage(page.SurfaceGuid, true))
|
return;
|
CreatePage(page, page.SurfaceGuid);
|
}
|
}
|
}
|