using CefSharp;
using CefSharp.WinForms;
using OTS.WinFormsUI.Docking;
using OTSIncAReportApp.OTSDataMgrFunction;
using OTSIncAReportApp.OTSRibbon;
using OTSIncAReportApp.OTSSampleReportInfo;
using OTSIncAReportApp.SysMgrTools;
using OTSIncAReprotCharts;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Windows.Forms;
namespace OTSIncAReportApp
{
    /// 
    /// 报告主窗体类
    /// 
    public partial class frmReportApp : Form
    {
        #region 共享窗体对象--------------------------------------------------------------------------------------
        public frmMeasureRstMgr m_RstWindow = null;                             //测量结果,树控件窗体,属性Grid窗体
        public frmMeasureRstProp m_PropWindow = null;                           //属性Grid窗体
        public frmSampleImage m_SImageWindow = null;                            //BSE窗体
        public frmCharts m_CChartsWindow = null;                                //图表窗体
        public frmTables m_CTablesWindow = null;                                //报表窗体
        public frmReportSysConfig m_ReportSysConfigForm;                        //配置参数窗体
        #endregion //-----------------------------------------------------------------------------------------------
        #region 报告类结构相关------------------------------------------------------------------------------------
        NLog.Logger log;
        const String m_csFileName = "OTSReportAppLog";                                      //日志文件名常量
        public OutputNlog m_OutputNlog;                                                     //日志类对象
        public DataMgrFun m_DataMgrFun = null;                                              //DataMgrFun 对象, 此类是和调用C++ DataMGR交互数据
        public OTSRibbonFun m_RibbonFun = null;                                             //报告菜单相关操作类
        public string m_OTSReportMgrParamFile = "\\Config\\SysData\\OTSReportMgrParam.rpf"; //报告对应使用的参数文件名
        public int ResultFileId = 0;                                                                                //测量结果ID
        public List resultFilesList = new List();   //测量结果列表
        public DataOperation.Model.RptConfigFile m_RptConfigFile = new DataOperation.Model.RptConfigFile();         //报表程序的配置文件
        public int WorkingResult = -1;                                                                              //当前工作结果
        public OTSSampleMeaInfo SourceGridData = new OTSSampleMeaInfo();                                            //当前SourceGrid
        public List SourceGridDataList = new List();                            //所有模块的SourceGrid
        public List SourceGridDataListLog = new List();                         //所有模块的SourceGrid使用记录
        public List SelectedParticles = new List();     //所有选择颗粒
        
        public DataTable OriginalPoint = new DataTable();//帧图位置point
        public string MoreSource = "";
        Hashtable table;                                                                                            //国际化表
        string[] m_str_resultfilepaths;
        #endregion //-----------------------------------------------------------------------------------------------
        #region EChart相关变量------------------------------------------------------------------------------------
        //定义浏览器
        public CefSharp.WinForms.ChromiumWebBrowser browser;
        public CefSharp.WinForms.ChromiumWebBrowser browsermore;//多测量结果对比时使用
        public bool more = false;
        public bool trans = false;
        //定义浏览器
        public CefSharp.WinForms.ChromiumWebBrowser browser_trio;
        public CefSharp.WinForms.ChromiumWebBrowser browser_triomore;//多测量结果对比时使用
        public class JsEvent
        {
            public string MessageText { set; get; }
            public void ShowTest()
            {
                MessageBox.Show(MessageText);
            }
        }
        public JsEvent js = new JsEvent();
        public string m_reportname;
        public string data;
        public string type;
        public bool timerKG;
        #endregion //------------------------------------------------------------------------------------------------
        #region 各功能模块窗体 -----------------------------------------------------------------------------------
        /// 
        /// 颗粒分布图
        /// 
        public OTSIncAReportGraph.Controls.Control_DrawDistrbutionImageAndBSE im_Control_DrawDistrbutionImageAndBSE = null;
        /// 
        /// 颗粒排序图
        /// 
        public OTSIncAReportGraph.Controls.Control_DrawDistrbutionSortImage im_Control_DrawDistrbutionSortImage = null;
        /// 
        /// 颗粒列表_分页
        /// 
        public OTSIncAReportGrids.ParticlesGridDevidePage im_ParticlesGridDevidePage = null;
        /// 
        /// 颗粒成份分布表
        /// 
        public OTSIncAReportGrids.CompositionDistributionGrid im_CompositionDistributionGrid = null;
        /// 
        /// 平均元素含量表
        /// 
        public OTSIncAReportGrids.ElementCompositionAvgGrid im_ElementCompositionAvgGrid = null;
        /// 
        /// 元素含量表
        /// 
        public OTSIncAReportGrids.ElementContentGrid im_ElementContentGrid = null;
        /// 
        /// 颗粒尺寸表
        /// 
        public OTSIncAReportGrids.ParticlesSizeGrid im_ParticlesSizeGrid = null;
        /// 
        /// 测量结果概况
        /// 
        public OTSIncAReportGrids.ResultGrid im_ResultGrid = null;
        /// 
        /// 颗粒成份图EChart
        /// 
        public Control_ECharts.EChart_ParticlesComposition im_EChart_ParticlesComposition = null;
        /// 
        /// 三元相图EChart
        /// 
        public Control_ECharts.EChart_Trianglediagram im_EChart_Trianglediagram = null;
        /// 
        /// 国标信息表方法一
        /// 
        public OTSIncAReportGB.ChineseStandardABCDDS im_ChineseStandardABCDDS = null;
        /// 
        /// 国标信息表方法二
        /// 
        public OTSIncAReportGB.NationalStandardMethodTwo im_NationalStandardMethodTwo = null;
        /// 
        /// 美标
        /// 
        public OTSIncAReportGB.ASTMStandardABCDDS im_ASTMStandardABCDDS = null;
        /// 
        /// 德标
        /// 
        public OTSIncAReportGB.DINStandardABCDDS im_DINStandardABCDDS = null;
        #endregion //--------------------------------------------------------------------------------------------
        #region 窗体初始化及构造函数
        /// 
        /// 窗体构造函数
        /// 
        public frmReportApp()
        {
            InitializeComponent();
            m_OutputNlog = new OutputNlog();
            m_OutputNlog.Visible = true;
            //树窗口
            m_RstWindow = new frmMeasureRstMgr(this);
            //属性窗口
            m_PropWindow = new frmMeasureRstProp(this);
            //分布图,排列图窗体
            m_SImageWindow = new frmSampleImage(this);
            //chart图表窗体
            m_CChartsWindow = new frmCharts(this);
            //grid表格窗体
            m_CTablesWindow = new frmTables(this);
            //初始化Ribbon类,操作Ribbon按钮的可用或者不可用
            m_RibbonFun = new OTSRibbonFun(this);
            //和DataMgr进行数据交互类
            m_DataMgrFun = new DataMgrFun(this);
            //配置文件管理窗体
            m_ReportSysConfigForm = new frmReportSysConfig(this);
            
            SetTag();
            #region 国际化语言
            Language lan = new Language(this);
            table = lan.GetNameTable(this.Name);
            #endregion
        }
        /// 
        /// 为生成后没有Name的控件添加标签,为了国际化语言设置时可以找到这个控件
        /// 
        protected void SetTag()
        {
            ribbonPanel3.Tag = "ribbonPanel3";
            ribbonPanel2.Tag = "ribbonPanel2";
            rbSelTool.Tag = "rbSelTool";
            rbChoiceTools.Tag = "rbChoiceTools";
            ribbonTab1.Tag = "ribbonTab1";
            rbMenu.Tag = "rbMenu";
            dpbOpen.Tag = "dpbOpen";
            dpbExport.Tag = "dpbExport";
            dpbCopy.Tag = "dpbCopy";
            dpbCopyAll.Tag = "dpbCopyAll";
            ribbonOrbOptionButton1.Tag = "ribbonOrbOptionButton1";
        }
        /// 
        /// 窗体构造函数,可接收多个测量结果文件
        /// 
        public frmReportApp(string[] str_resultfilepaths)
        {
            
            m_str_resultfilepaths = str_resultfilepaths;
            
            InitializeComponent();
            m_OutputNlog = new OutputNlog();
            m_OutputNlog.Visible = true;
            //树窗口
            m_RstWindow = new frmMeasureRstMgr(this);
            //属性窗口
            m_PropWindow = new frmMeasureRstProp(this);
            //初始化图形组件中返回的颗粒列表对象
            SelectedParticles = new List();
            //分布图,排列图窗体
            m_SImageWindow = new frmSampleImage(this);
            //chart图表窗体
            m_CChartsWindow = new frmCharts(this);
            //grid表格窗体
            m_CTablesWindow = new frmTables(this);
            //初始化Ribbon类,操作Ribbon按钮的可用或者不可用
            m_RibbonFun = new OTSRibbonFun(this);
            //和DataMgr进行数据交互类
            m_DataMgrFun = new DataMgrFun(this);//必须放在new frmReportSysConfig(this)前
            //配置文件管理窗体
            m_ReportSysConfigForm = new frmReportSysConfig(this);
            SetTag();
            #region 国际化语言
            Language lan = new Language(this);
            table = lan.GetNameTable(this.Name);
            #endregion
        }
        /// 
        /// 报告主窗体加载事件
        /// 
        /// 
        /// 
        private void OTSReportApp_Load(object sender, EventArgs e)
        {
            log = NLog.LogManager.GetCurrentClassLogger();
            if (Cef.IsInitialized == false)
            {
                var settings = new CefSettings();
                settings.Locale = "zh-CN";
                settings.CefCommandLineArgs.Add("disable-gpu", "1");
                Cef.Initialize(settings);
            }
            //加载配置文件
            string pathe = Application.StartupPath + m_OTSReportMgrParamFile;
            DataSet ds = DataOperation.DataAccess.XMLoperate.GetXml(pathe);
            m_RptConfigFile.FileFolderSize = ds.Tables[0].Rows[0]["FileFolderSize"].ToString();
            m_RptConfigFile.FileFolderTrigTemp = ds.Tables[0].Rows[0]["FileFolderTrigTemp"].ToString();
            m_RptConfigFile.Scale = ds.Tables[0].Rows[0]["Scale"].ToString();
            m_RptConfigFile.PartSizeFile = ds.Tables[1].Rows[2]["Name"].ToString();
            m_RptConfigFile.TriTempFile = ds.Tables[1].Rows[3]["Name"].ToString();
            //设置菜单按钮,都为true状态
            m_RibbonFun.SetAllRibbonButnStatu(false);
            //创建,树窗口,属性grid窗口,分布图,grid,chart窗体等。
            CreateNewWorkspaceWindow();
            //激活测量结果窗体
            this.m_RstWindow.Activate();
            //激活分布图窗体
            this.m_SImageWindow.Activate();
            if (m_str_resultfilepaths != null)
            {
                //构造函数直接接收传入的测量结果文件,并加载
                for (int i = 0; i < m_str_resultfilepaths.Length; i++)
                {
                    this.m_RstWindow.AddSampleClick(m_str_resultfilepaths[i].Replace("^", " "));
                }
            }
        }
        #endregion
        #region Ribbon菜单按钮及菜单相关按按钮事件
      
        /// 
        /// 新建按钮事件
        /// 
        /// 
        /// 
        private void ribTitleNewFile_Click(object sender, EventArgs e)
        {
            InitReportProState();
        }
        /// 
        /// 初始伦报告加载
        /// 
        public void InitReportProState()
        {
            //清除树窗体
            m_RstWindow.treeView1.Nodes.Clear();
            //清除属性Grid
            m_PropWindow.m_SampleGrid = new SampleGrid(m_PropWindow);
            resultFilesList.Clear();
            //清除各模块报表文件
            m_CChartsWindow.Controls.Clear();
            m_CTablesWindow.Controls.Clear();
            m_SImageWindow.Controls.Clear();
            //再重新初始化下拉菜单和ribbon菜单中的按钮状态
            m_RibbonFun.SetAllRibbonButnStatu(false);
            im_Control_DrawDistrbutionImageAndBSE = null;
            im_Control_DrawDistrbutionSortImage = null;
            im_ParticlesGridDevidePage = null;
            im_CompositionDistributionGrid = null;
            im_ElementCompositionAvgGrid = null;
            im_ElementContentGrid = null;
            im_ParticlesSizeGrid = null;
            im_ResultGrid = null;
        }
        /// 
        /// 程序管理按钮点击事件
        /// 
        /// 
        /// 
        private void RibbonOrbOptionButton1_Click(object sender, EventArgs e)
        {
            //程序管理
            m_ReportSysConfigForm.ShowDialog();
        }
        /// 
        /// 打开报告项目文件按钮事件
        /// 
        /// 
        /// 
        private void rbOpen_Click(object sender, EventArgs e)
        {
            string path = "";
            OpenFileDialog fileDialog = new OpenFileDialog();
            fileDialog.Filter = "文本文件|*.rst";
            fileDialog.RestoreDirectory = true; 
            if (fileDialog.ShowDialog() == DialogResult.OK)
                path = System.IO.Path.GetFullPath(fileDialog.FileName);
            this.m_RstWindow.AddSampleClick(path);
        }
        /// 
        /// 模板导出按钮事件
        /// 
        /// 
        /// 
        private void rbOut_Click(object sender, EventArgs e)
        {
            OTSReport_Export oe = new OTSReport_Export(this);
            oe.ShowDialog();
        }
        /// 
        /// 全图匹配按钮事件
        /// 
        /// 
        /// 
        private void rbAllImage_Click(object sender, EventArgs e)
        {
            int tabIndex = (int)(m_PropWindow.tabIndex);
            switch (tabIndex)
            {
                case (int)DisplayPicutureType.AnalyzeImg:
                    int idx = m_DataMgrFun.GetSampleIndexByPropItemName(SourceGridData.SampleDataList, OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
                    int imgDisType = SourceGridData.SampleDataList[idx].comboDownList.IndexOf(SourceGridData.SampleDataList[idx].itemVal.ToString());
                    if (imgDisType == 0)
                    {
                        if (im_Control_DrawDistrbutionImageAndBSE != null)
                        {
                            //分布图
                            im_Control_DrawDistrbutionImageAndBSE.FullGraphMate();
                            im_Control_DrawDistrbutionImageAndBSE.Invalidate();
                        }
                    }
                    else
                    {
                        if (im_Control_DrawDistrbutionSortImage != null)
                        {
                            //排列图
                        }
                    }
                    break;
                case (int)DisplayPicutureType.AnalyzeDataTable:
                    break;
                case (int)DisplayPicutureType.AnalyzeDataChart:
                    break;
                default:
                    break;
            }
        }
        /// 
        /// 宽度匹配按钮事件
        /// 
        /// 
        /// 
        private void rbWidthImage_Click(object sender, EventArgs e)
        {
            int tabIndex = (int)(m_PropWindow.tabIndex);
            switch (tabIndex)
            {
                case (int)DisplayPicutureType.AnalyzeImg:
                    int idx = m_DataMgrFun.GetSampleIndexByPropItemName(SourceGridData.SampleDataList, OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
                    int imgDisType = SourceGridData.SampleDataList[idx].comboDownList.IndexOf(SourceGridData.SampleDataList[idx].itemVal.ToString());
                    if (imgDisType == 0)
                    {
                        if (im_Control_DrawDistrbutionImageAndBSE != null)
                        {
                            //分布图
                            im_Control_DrawDistrbutionImageAndBSE.WidthMate();
                            im_Control_DrawDistrbutionImageAndBSE.Invalidate();
                        }
                    }
                    else
                    {
                        if (im_Control_DrawDistrbutionSortImage != null)
                        {
                            //排列图
                        }
                    }
                    break;
                case (int)DisplayPicutureType.AnalyzeDataTable:
                    break;
                case (int)DisplayPicutureType.AnalyzeDataChart:
                    break;
                default:
                    break;
            }
        }
        /// 
        /// 帧图边框按钮事件
        /// 
        /// 
        /// 
        private void rbFrame_Click(object sender, EventArgs e)
        {
            int tabIndex = (int)(m_PropWindow.tabIndex);
            switch (tabIndex)
            {
                case (int)DisplayPicutureType.AnalyzeImg:
                    int idx = m_DataMgrFun.GetSampleIndexByPropItemName(SourceGridData.SampleDataList, OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
                    int imgDisType = SourceGridData.SampleDataList[idx].comboDownList.IndexOf(SourceGridData.SampleDataList[idx].itemVal.ToString());
                    if (imgDisType == 0)
                    {
                        if (im_Control_DrawDistrbutionImageAndBSE != null)
                        {
                            //分布图
                            im_Control_DrawDistrbutionImageAndBSE.ShowGridLine();
                            im_Control_DrawDistrbutionImageAndBSE.Invalidate();
                        }
                    }
                    else
                    {
                        if (im_Control_DrawDistrbutionSortImage != null)
                        {
                        }
                    }
                    break;
                case (int)DisplayPicutureType.AnalyzeDataTable:
                    break;
                case (int)DisplayPicutureType.AnalyzeDataChart:
                    break;
                default:
                    break;
            }
        }
        /// 
        /// 标尺按钮事件
        /// 
        /// 
        /// 
        private void rbStaff_Click(object sender, EventArgs e)
        {
            int tabIndex = (int)(m_PropWindow.tabIndex);
            switch (tabIndex)
            {
                case (int)DisplayPicutureType.AnalyzeImg:
                    int idx = m_DataMgrFun.GetSampleIndexByPropItemName(SourceGridData.SampleDataList, OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
                    int imgDisType = SourceGridData.SampleDataList[idx].comboDownList.IndexOf(SourceGridData.SampleDataList[idx].itemVal.ToString());
                    if (imgDisType == 0)
                    {
                        if (im_Control_DrawDistrbutionImageAndBSE != null)
                        {
                            //分布图
                            im_Control_DrawDistrbutionImageAndBSE.ShowRulerControl();
                            im_Control_DrawDistrbutionImageAndBSE.Invalidate();
                        }
                    }
                    else
                    {
                        if (im_Control_DrawDistrbutionSortImage != null)
                        {
                            im_Control_DrawDistrbutionSortImage.ShowRulerControl();
                            im_Control_DrawDistrbutionSortImage.Invalidate();
                        }
                    }
                    break;
                case (int)DisplayPicutureType.AnalyzeDataTable:
                    break;
                case (int)DisplayPicutureType.AnalyzeDataChart:
                    break;
                default:
                    break;
            }
        }
        /// 
        /// 恢复按钮事件
        /// 
        /// 
        /// 
        private void rbRenew_Click(object sender, EventArgs e)
        {
            int tabIndex = (int)m_PropWindow.tabIndex;
            int idx = m_DataMgrFun.GetSampleIndexByPropItemName(SourceGridData.SampleDataList, OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
            int DisType = SourceGridData.SampleDataList[idx].comboDownList.IndexOf(SourceGridData.SampleDataList[idx].itemVal.ToString());
            switch (tabIndex)
            {
                case (int)DisplayPicutureType.AnalyzeImg:
                    if (DisType == (int)IMAGE_DISPLAY_TYPE.GENERAL)
                    {
                        if (im_Control_DrawDistrbutionImageAndBSE != null)
                        {
                            //分布图
                            im_Control_DrawDistrbutionImageAndBSE.ShowRulerControl(false);
                            im_Control_DrawDistrbutionImageAndBSE.ShowGridLine(false);
                            im_Control_DrawDistrbutionImageAndBSE.Invalidate();
                            m_SImageWindow.Controls.Clear();
                            im_Control_DrawDistrbutionImageAndBSE = new OTSIncAReportGraph.Controls.Control_DrawDistrbutionImageAndBSE(this);
                            im_Control_DrawDistrbutionImageAndBSE.Dock = DockStyle.Fill;
                            m_SImageWindow.Controls.Add(im_Control_DrawDistrbutionImageAndBSE);
                            m_SImageWindow.Activate();
                            im_Control_DrawDistrbutionImageAndBSE.ShowSourceName = "";
                            im_Control_DrawDistrbutionImageAndBSE.DrawDistrbutionImageAndBSE_ByQuery(SourceGridData);
                            im_Control_DrawDistrbutionImageAndBSE.SetSelectParticle(SelectedParticles);
                            //并删除排列图
                            im_Control_DrawDistrbutionSortImage = null;
                        }
                    }
                    if (DisType == (int)IMAGE_DISPLAY_TYPE.IMAGE_GRID)
                    {
                        if (im_Control_DrawDistrbutionSortImage != null)
                        {
                            //排序图
                            im_Control_DrawDistrbutionSortImage.ShowRulerControl(false);
                            im_Control_DrawDistrbutionSortImage.Invalidate();
                            m_SImageWindow.Controls.Clear();
                            im_Control_DrawDistrbutionSortImage = new OTSIncAReportGraph.Controls.Control_DrawDistrbutionSortImage(this);
                            im_Control_DrawDistrbutionSortImage.Dock = DockStyle.Fill;
                            m_SImageWindow.Controls.Add(im_Control_DrawDistrbutionSortImage);
                            m_SImageWindow.Activate();
                            im_Control_DrawDistrbutionSortImage.ShowSourceName = "";
                            im_Control_DrawDistrbutionSortImage.Control_DrawDistrbutionSortImage_ByQuery(SourceGridData);
                            im_Control_DrawDistrbutionSortImage.SetSelectParticle(SelectedParticles);
                        }
                    }
                    break;
                case (int)DisplayPicutureType.AnalyzeDataTable:
                    break;
                case (int)DisplayPicutureType.AnalyzeDataChart:
                    break;
                default:
                    break;
            }
        }
        /// 
        /// 反选操作按钮事件
        /// 
        /// 
        /// 
        private void rbReverseSelection_Click(object sender, EventArgs e)
        {
            int tabIndex = (int)(m_PropWindow.tabIndex);
            switch (tabIndex)
            {
                case (int)DisplayPicutureType.AnalyzeImg:
                    int idx = m_DataMgrFun.GetSampleIndexByPropItemName(SourceGridData.SampleDataList, OTSIncAReportApp.OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
                    int imgDisType = SourceGridData.SampleDataList[idx].comboDownList.IndexOf(SourceGridData.SampleDataList[idx].itemVal.ToString());
                    if (imgDisType == 0)
                    {
                        if (im_Control_DrawDistrbutionImageAndBSE != null)
                        {
                            //分布图
                            im_Control_DrawDistrbutionImageAndBSE.ReverSeSelection();
                        }
                    }
                    else
                    {
                        if (im_Control_DrawDistrbutionSortImage != null)
                        {
                            im_Control_DrawDistrbutionSortImage.ReverSeSelection();
                        }
                    }
                    break;
                case (int)DisplayPicutureType.AnalyzeDataTable:
                    break;
                case (int)DisplayPicutureType.AnalyzeDataChart:
                    break;
                default:
                    break;
            }
        }
        /// 
        /// 圆形工具按钮事件
        /// 
        /// 
        /// 
        private void rbCircular_Click(object sender, EventArgs e)
        {
            int tabIndex = (int)(m_PropWindow.tabIndex);
            switch (tabIndex)
            {
                case (int)DisplayPicutureType.AnalyzeImg:
                    int idx = m_DataMgrFun.GetSampleIndexByPropItemName(SourceGridData.SampleDataList, OTSIncAReportApp.OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
                    int imgDisType = SourceGridData.SampleDataList[idx].comboDownList.IndexOf(SourceGridData.SampleDataList[idx].itemVal.ToString());
                    if (imgDisType == 0)
                    {
                        if (im_Control_DrawDistrbutionImageAndBSE != null)
                        {
                            //分布图
                            im_Control_DrawDistrbutionImageAndBSE.MultiSelect_Ellipse();
                        }
                    }
                    else
                    {
                        if (im_Control_DrawDistrbutionSortImage != null)
                        {
                            im_Control_DrawDistrbutionSortImage.MultiSelect_Ellipse();
                        }
                    }
                    break;
                case (int)DisplayPicutureType.AnalyzeDataTable:
                    break;
                case (int)DisplayPicutureType.AnalyzeDataChart:
                    break;
                default:
                    break;
            }
        }
        /// 
        /// 矩形工具按钮事件
        /// 
        /// 
        /// 
        private void rbRectangle_Click(object sender, EventArgs e)
        {
            int tabIndex = (int)(m_PropWindow.tabIndex);
            switch (tabIndex)
            {
                case (int)DisplayPicutureType.AnalyzeImg:
                    int idx = m_DataMgrFun.GetSampleIndexByPropItemName(SourceGridData.SampleDataList, OTSIncAReportApp.OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
                    int imgDisType = SourceGridData.SampleDataList[idx].comboDownList.IndexOf(SourceGridData.SampleDataList[idx].itemVal.ToString());
                    if (imgDisType == 0)
                    {
                        if (im_Control_DrawDistrbutionImageAndBSE != null)
                        {
                            //分布图
                            im_Control_DrawDistrbutionImageAndBSE.MultiSelect_Rectangle();
                        }
                    }
                    else
                    {
                        if (im_Control_DrawDistrbutionSortImage != null)
                        {
                            im_Control_DrawDistrbutionSortImage.MultiSelect_Rectangle();
                        }
                    }
                    break;
                case (int)DisplayPicutureType.AnalyzeDataTable:
                    break;
                case (int)DisplayPicutureType.AnalyzeDataChart:
                    break;
                default:
                    break;
            }
        }
        /// 
        /// 取消多边形选择工具按钮事件
        /// 
        /// 
        /// 
        private void rbCancel_Click(object sender, EventArgs e)
        {
            int tabIndex = (int)(m_PropWindow.tabIndex);
            switch (tabIndex)
            {
                case (int)DisplayPicutureType.AnalyzeImg:
                    int idx = m_DataMgrFun.GetSampleIndexByPropItemName(SourceGridData.SampleDataList, OTSIncAReportApp.OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
                    int imgDisType = SourceGridData.SampleDataList[idx].comboDownList.IndexOf(SourceGridData.SampleDataList[idx].itemVal.ToString());
                    if (imgDisType == 0)// oper_module == "颗粒分布图"
                    {
                        if (im_Control_DrawDistrbutionImageAndBSE != null)
                        {
                            //分布图
                            im_Control_DrawDistrbutionImageAndBSE.DeselectAllParticle();
                        }
                    }
                    else
                    {
                        if (im_Control_DrawDistrbutionSortImage != null)
                        {
                            im_Control_DrawDistrbutionSortImage.DeselectAllParticle();
                        }
                    }
                    break;
                case (int)DisplayPicutureType.AnalyzeDataTable:
                    break;
                case (int)DisplayPicutureType.AnalyzeDataChart:
                    break;
                default:
                    break;
            }
        }
        #endregion
        #region 自定义封装相关方法
        /// 
        /// 新建一个工作区域
        /// 
        public void CreateNewWorkspaceWindow()
        {
            //Show BSE图窗口
            CreateSampleWindow();
            //创建测量数据窗口
            CreateCTablesWindow();
            //创建图表窗口
            CreateChartsWindow();
            m_OutputNlog = new OutputNlog();
            m_OutputNlog.Show(DockWindowPanel, OTS.WinFormsUI.Docking.DockState.DockRight);
            m_OutputNlog.Visible = true;
            m_RstWindow.Show(DockWindowPanel, OTS.WinFormsUI.Docking.DockState.DockLeft);
            m_PropWindow.Show(DockWindowPanel);
            DockWindowPanel.DockLeftPortion = 300;
            DockWindowPanel.DockRightPortion = 351;
        }
        /// 
        /// 创建新的窗体
        /// 
        /// 
        /// 
        /// 
        private OTS.WinFormsUI.Docking.DockContent CreateNewDocument(OTS.WinFormsUI.Docking.DockContent WorkWindow, DisplayPicutureType iType)
        {
            string text = "";
            if (iType == DisplayPicutureType.AnalyzeImg)
            {
                text = "分析图";
            }
            else if (iType == DisplayPicutureType.AnalyzeDataTable)
            {
                text = "分析数据表";
            }
            else if (iType == DisplayPicutureType.AnalyzeDataChart)
            {
                text = "分析数据图";
            }
            WorkWindow.Text = text;
            return WorkWindow;
        }
        /// 
        /// 创建样品BSE图窗口
        /// 
        public void CreateSampleWindow()
        {
            if (null == m_SImageWindow)
            {
                m_SImageWindow = new frmSampleImage(this);
            }
            m_SImageWindow = (frmSampleImage)CreateNewDocument(m_SImageWindow, DisplayPicutureType.AnalyzeImg);
            if (DockWindowPanel.DocumentStyle == DocumentStyle.SystemMdi)
            {
                m_SImageWindow.MdiParent = this;
                m_SImageWindow.Show();
            }
            else
            {
                m_SImageWindow.Show(DockWindowPanel);
            }
        }
        /// 
        /// 创建Grid表格窗体
        /// 
        private void CreateCTablesWindow()
        {
            if (null == m_CTablesWindow)
            {
                m_CTablesWindow = new frmTables(this);
            }
            m_CTablesWindow = (frmTables)CreateNewDocument(m_CTablesWindow, DisplayPicutureType.AnalyzeDataTable);
            if (DockWindowPanel.DocumentStyle == DocumentStyle.SystemMdi)
            {
                m_CTablesWindow.MdiParent = this;
                m_CTablesWindow.Show();
            }
            else
            {
                m_CTablesWindow.Show(DockWindowPanel);
            }
        }
        /// 
        /// 创建chart图表窗体
        /// 
        private void CreateChartsWindow()
        {
            if (null == m_CChartsWindow)
            {
                m_CChartsWindow = new frmCharts(this);
            }
            m_CChartsWindow = (frmCharts)CreateNewDocument(m_CChartsWindow, DisplayPicutureType.AnalyzeDataChart);
            if (DockWindowPanel.DocumentStyle == DocumentStyle.SystemMdi)
            {
                m_CChartsWindow.MdiParent = this;
                m_CChartsWindow.Show();
            }
            else
            {
                m_CChartsWindow.Show(DockWindowPanel);
            }
        }
        /// 
        /// 添加属性Grid相关数据
        /// 
        public void DisCurrentPicProperty()
        {
            OTSSampleMeaInfo SMInfo = new OTSSampleMeaInfo();
            //获取工作样品属性
            if (!m_DataMgrFun.GetWorkSamplePropertyVal(ref SMInfo))
            {
                return;
            }
            //添加属性Grid相关数据
            m_PropWindow.DisProperyWindow(SMInfo);
        }
        /// 
        /// 新建样品时提示保存样品信息Messagebox 
        /// 
        /// 
        public int ShowSaveInfoMsgBox()
        {
            //是否保存修改信息,保存样品信息提示
            int iRev = (int)MessageBox.Show("是否保存修改信息", "信息提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning);
            if (iRev == (int)DialogResult.Yes)
            {
                return (int)MessageBoxRev.DIALOG_YES;
            }
            else if (iRev == (int)DialogResult.No)
            {
                return (int)MessageBoxRev.DIALOG_NO;
            }
            else
            {
                return (int)MessageBoxRev.DIALOG_CANCEL;
            }
        }
        #endregion
        #region 系统菜单相关功能
        private void ribbonOrbMenuItem4_Click(object sender, EventArgs e)
        {
            MemoryManagementClass.FlushMemory();
            //系统菜单,输出
            OTSReport_Export oe = new OTSReport_Export(this);
            oe.ShowDialog();
            oe.Dispose();
            oe = null;
            MemoryManagementClass.FlushMemory();
        }
        /// 
        /// 复制
        /// 
        /// 
        /// 
        private void ribbonOrbMenuItem6_Click(object sender, EventArgs e)
        {
            int tabIndex = (int)m_PropWindow.tabIndex;
            //int imgDisType = SourceGridData.SampleDataList[2].comboDownList.IndexOf(SourceGridData.SampleDataList[2].itemVal.ToString());
            //int calTableType = SourceGridData.SampleDataList[2].comboDownList.IndexOf(SourceGridData.SampleDataList[2].itemVal.ToString());
            //int calChartType = SourceGridData.SampleDataList[2].comboDownList.IndexOf(SourceGridData.SampleDataList[2].itemVal.ToString());
            int idx = m_DataMgrFun.GetSampleIndexByPropItemName(SourceGridData.SampleDataList, OTSIncAReportApp.OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.CALCULATE_TABLE_TYPE);
            int DisType = SourceGridData.SampleDataList[idx].comboDownList.IndexOf(SourceGridData.SampleDataList[idx].itemVal.ToString());
            switch (tabIndex)
            {
                case (int)DisplayPicutureType.AnalyzeImg:                 //如果是分布图,排列图
                    if (DisType == (int)IMAGE_DISPLAY_TYPE.GENERAL) //oper_module == "颗粒分布图"
                    {
                        if (im_Control_DrawDistrbutionImageAndBSE != null)
                        {
                            //分布图
                            im_Control_DrawDistrbutionImageAndBSE.CopyToBitmap();
                        }
                    }
                    if (DisType == (int)IMAGE_DISPLAY_TYPE.IMAGE_GRID)
                    {
                        if (im_Control_DrawDistrbutionSortImage != null)
                        {
                            //排列图
                            im_Control_DrawDistrbutionSortImage.CopyToBitmap();
                        }
                    }
                    break;
                case (int)DisplayPicutureType.AnalyzeDataTable:                //如果是Grid表格
                    if (DisType == (int)CALCULATE_TABLE_TYPE.MEASURE_INFO)
                    {
                        if (im_ResultGrid != null)
                        {
                            //测量结果信息
                            im_ResultGrid.CopySelected();
                        }
                    }
                    if (DisType == (int)CALCULATE_TABLE_TYPE.PARTICALE_GENE_INFO)
                    {
                        if (im_ParticlesGridDevidePage != null)
                        {
                            //颗粒列表
                            im_ParticlesGridDevidePage.CopySelected();
                        }
                    }
                    if (DisType == (int)CALCULATE_TABLE_TYPE.PARTICALE_COMP)
                    {
                        if (im_CompositionDistributionGrid != null)
                        {
                            //成份分布表
                            im_CompositionDistributionGrid.CopySelected();
                        }
                    }
                    if (DisType == (int)CALCULATE_TABLE_TYPE.AVE_ELEMENT_COMP)
                    {
                        if (im_ElementCompositionAvgGrid != null)
                        {
                            //平均元素含量表
                            im_ElementCompositionAvgGrid.CopySelected();
                        }
                    }
                    if (DisType == (int)CALCULATE_TABLE_TYPE.ELEMENT_COMP)
                    {
                        if (im_ElementContentGrid != null)
                        {
                            //元素含量表
                            im_ElementContentGrid.CopySelected();
                        }
                    }
                    if (DisType == (int)CALCULATE_TABLE_TYPE.PARTICALE_SIZE_DISTRIBUTION)
                    {
                        if (im_ParticlesSizeGrid != null)
                        {
                            //颗粒尺寸表
                            im_ParticlesSizeGrid.CopySelected();
                        }
                    }
                    break;
                case (int)DisplayPicutureType.AnalyzeDataChart:                   //如果是Chart图表
                    if (DisType == (int)CALCULATE_CHART_TYPE.PARTICALE_COMP)
                    {
                        //if (im_ParticalesCompositionChart != null)
                        //{
                        //    //颗粒成份图
                        //    im_ParticalesCompositionChart.CopyToBitmap();
                        //}
                    }
                    if (DisType == (int)CALCULATE_CHART_TYPE.ELEMENT_COMP)
                    {
                        //if (im_ElementCompositionChart != null)
                        //{
                        //    //元素成份图
                        //    im_ElementCompositionChart.CopyToBitmap();
                        //}
                    }
                    if (DisType == (int)CALCULATE_CHART_TYPE.PARTICALE_SIZE_DISTRIBUTION)
                    {
                        //if (im_ParticalesSizeDistributionChart != null)
                        //{
                        //    //颗粒尺寸分布图
                        //    im_ParticalesSizeDistributionChart.CopyToBitmap();
                        //}
                    }
                    if (DisType == (int)CALCULATE_CHART_TYPE.TRIO_CHART)
                    {
                        //if (im_Trianglediagram != null)
                        //{
                        //    //三角图
                        //    im_Trianglediagram.CopyToBitmap();
                        //}
                    }
                    break;
                default:
                    break;
            }
        }
        /// 
        /// 复制全部
        /// 
        /// 
        /// 
        private void ribbonOrbMenuItem8_Click(object sender, EventArgs e)
        {
            int tabIndex = (int)m_PropWindow.tabIndex;
            int idx = m_DataMgrFun.GetSampleIndexByPropItemName(SourceGridData.SampleDataList, OTSIncAReportApp.OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.CALCULATE_TABLE_TYPE);
            int DisType = SourceGridData.SampleDataList[idx].comboDownList.IndexOf(SourceGridData.SampleDataList[idx].itemVal.ToString());
            switch (tabIndex)
            {
                case (int)DisplayPicutureType.AnalyzeImg:
                    if (DisType == (int)IMAGE_DISPLAY_TYPE.GENERAL)
                    {
                        if (im_Control_DrawDistrbutionImageAndBSE != null)
                        {
                            //分布图
                            im_Control_DrawDistrbutionImageAndBSE.CopyToBitmap();
                        }
                    }
                    if (DisType == (int)IMAGE_DISPLAY_TYPE.IMAGE_GRID)
                    {
                        if (im_Control_DrawDistrbutionSortImage != null)
                        {
                            //排列图
                            im_Control_DrawDistrbutionSortImage.CopyToBitmap();
                        }
                    }
                    break;
                case (int)DisplayPicutureType.AnalyzeDataTable:
                    if (DisType == (int)CALCULATE_TABLE_TYPE.MEASURE_INFO)
                    {
                        if (im_ResultGrid != null)
                        {
                            //测量结果信息
                            im_ResultGrid.CopyAll();
                        }
                    }
                    if (DisType == (int)CALCULATE_TABLE_TYPE.PARTICALE_GENE_INFO)
                    {
                        if (im_ParticlesGridDevidePage != null)
                        {
                            //颗粒列表
                            im_ParticlesGridDevidePage.CopyAll();
                        }
                    }
                    if (DisType == (int)CALCULATE_TABLE_TYPE.PARTICALE_COMP)
                    {
                        if (im_CompositionDistributionGrid != null)
                        {
                            //成份分布表
                            im_CompositionDistributionGrid.CopyAll();
                        }
                    }
                    if (DisType == (int)CALCULATE_TABLE_TYPE.AVE_ELEMENT_COMP)
                    {
                        if (im_ElementCompositionAvgGrid != null)
                        {
                            //平均元素含量表
                            im_ElementCompositionAvgGrid.CopyAll();
                        }
                    }
                    if (DisType == (int)CALCULATE_TABLE_TYPE.ELEMENT_COMP)
                    {
                        if (im_ElementContentGrid != null)
                        {
                            //元素含量表
                            im_ElementContentGrid.CopyAll();
                        }
                    }
                    if (DisType == (int)CALCULATE_TABLE_TYPE.PARTICALE_SIZE_DISTRIBUTION)
                    {
                        if (im_ParticlesSizeGrid != null)
                        {
                            //颗粒尺寸表
                            im_ParticlesSizeGrid.CopyAll();
                        }
                    }
                    break;
                case (int)DisplayPicutureType.AnalyzeDataChart:
                    if (DisType == (int)CALCULATE_CHART_TYPE.PARTICALE_COMP)
                    {
                        //if (im_ParticalesCompositionChart != null)
                        //{
                        //    //颗粒成份图
                        //    im_ParticalesCompositionChart.CopyToBitmap();
                        //}
                    }
                    if (DisType == (int)CALCULATE_CHART_TYPE.ELEMENT_COMP)
                    {
                        //if (im_ElementCompositionChart != null)
                        //{
                        //    //元素成份图
                        //    im_ElementCompositionChart.CopyToBitmap();
                        //}
                    }
                    if (DisType == (int)CALCULATE_CHART_TYPE.PARTICALE_SIZE_DISTRIBUTION)
                    {
                        //if (im_ParticalesSizeDistributionChart != null)
                        //{
                        //    //颗粒尺寸分布图
                        //    im_ParticalesSizeDistributionChart.CopyToBitmap();
                        //}
                    }
                    if (DisType == (int)CALCULATE_CHART_TYPE.TRIO_CHART)
                    {
                        //if (im_Trianglediagram != null)
                        //{
                        //    //三角图
                        //    im_Trianglediagram.CopyToBitmap();
                        //}
                    }
                    break;
                default:
                    break;
            }
        }
        private void frmReportApp_FormClosed(object sender, FormClosedEventArgs e)
        {
            Process.GetCurrentProcess().Kill();
            this.Hide();//打开EChar图后,回收浏览器资源暂卡,为达到操作流畅性,先隐藏窗体再回收资源
           
            this.Invoke(new Action(() =>
            {
                if (Cef.IsInitialized)
                    Cef.Shutdown();
            }));
            
        }
        #endregion
        private void dpbOpen_Click(object sender, EventArgs e)
        {
            OpenProFile();
        }
        /// 
        /// 打开报告项目工程文件,封装方法
        /// 
        /// 
        private bool OpenProFile()
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "Measure Project Files((*.prj)|*.prj";
            openFileDialog.ValidateNames = true;
            openFileDialog.CheckPathExists = true;
            openFileDialog.CheckFileExists = true;
            openFileDialog.Multiselect = false;
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                string strFilePath = System.IO.Path.GetDirectoryName(openFileDialog.FileName);
                System.IO.DirectoryInfo folder = new System.IO.DirectoryInfo(strFilePath);
                foreach (System.IO.DirectoryInfo directory in folder.GetDirectories())
                {
                    foreach (System.IO.FileInfo file in directory.GetFiles("*.rst"))
                    {
                        this.m_RstWindow.AddSampleClick(file.FullName);
                    }
                }
                return true;
            }
            else return false;
        }
        private void frmReportApp_FormClosing(object sender, FormClosingEventArgs e)
        {
            ServiceInterface.SemController sem = new ServiceInterface.SemController();
            sem.DisConnect();
        }
    }
}