using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data;
using Mesnac.Action.Base;
using Mesnac.Codd.Session;
using System.Reflection;
using Mesnac.Controls.Base;

namespace Mesnac.Action.ChemicalWeighing.Technical.XlRecipe
{
    /// <summary>
    /// 当班计划窗体初始化业务
    /// </summary>
    public class InitFormAction : ChemicalWeighingAction,IAction
    {
        #region 字段定义

        public static bool IsFirstRun = true;       //是否首次运行
        private RuntimeParameter _runtime;
        private DbMCControl _clientGridControl = null;      //配方管理控件
        private DbMCControl _weighGridControl = null;       //物料控件

        #endregion

        public void Run(RuntimeParameter runtime)
        {
            base.RunIni(runtime);

            #region 首次执行,进行事件订阅

            if (IsFirstRun)
            {
                IsFirstRun = false;
                ICSharpCode.Core.LoggingService<InitFormAction>.Debug("配方管理-窗体初始化业务...");
            }

            #endregion

            #region 初始化

            #region 获取界面控件

            string source = string.Empty;
            DbMCControl clientGridControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "xl_recipe").FirstOrDefault();         //获取本机台计划网格控件

            if (clientGridControl == null)
            {
                ICSharpCode.Core.LoggingService<InitFormAction>.Error("{配方管理-窗体加载} 缺少计划列表网格控件...");
                return;
            }

            DbMCControl weighGridControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "xl_weigh").FirstOrDefault();
            if (weighGridControl == null || !(weighGridControl.BaseControl is DataGridView))
            {
                ICSharpCode.Core.LoggingService<RefreshAction>.Error("{配方管理—选择配方}缺少配方物料显示控件...");
                return;
            }

            this._runtime = runtime;
            this._clientGridControl = clientGridControl;
            this._weighGridControl = weighGridControl;

            #endregion

            #region 初始化操作

            DataGridView clientGrid = (clientGridControl.BaseControl as DataGridView);
            DataGridView weighGridView = (weighGridControl.BaseControl as DataGridView);

            this.InitGridViewEvent(clientGrid);
            this.InitGridViewEvent(weighGridView);

            #endregion

            #endregion
        }

        #region 方法定义

        #region 网格事件处理方法

        /// <summary>
        /// 初始化网格样式
        /// </summary>
        /// <param name="dgv">DataGridView网格控件对象</param>
        private void InitGridViewEvent(DataGridView dgv)
        {
            if (dgv != null)
            {
                RecipeHelper.SetDataGridViewStyle(dgv);        //设置网格样式
                //双击时取消选择行(取消高亮显示)
                dgv.CellDoubleClick += delegate(object sender, DataGridViewCellEventArgs e)
                {
                    if (dgv.Rows != null && dgv.Rows.Count > 0)
                    {
                        foreach (DataGridViewRow row in dgv.Rows)
                        {
                            row.Selected = false;
                        }
                    }
                };
            }
        }
        
        #endregion

        #endregion
    }
}