using DrawGraph;
using System;
using System.Windows.Forms;
namespace DrawGraphManagement.MyUserControl
{
    public partial class ConvertModeForm : Form
    {
        PackObjBase mappingObj = null;
        Control conl = null;
 
        public ConvertModeForm()
        {
            InitializeComponent();
        }
        public ConvertModeForm(PackObjBase _mappingObj,Control _conl)
        {
            InitializeComponent();
            mappingObj = _mappingObj;
            conl = _conl;
        }
        private void ConvertModeForm_Load(object sender, EventArgs e)
        {
            if (mappingObj == null) {
                MessageBox.Show("没有详细的映射对象");
                this.Close();
                return;
            }
            //转换模式的绑定
            this.cmbConvertMode.SelectedIndexChanged -= new System.EventHandler(this.cmbConvertMode_SelectedIndexChanged);
            cmbConvertMode.DataSource = System.Enum.GetNames(typeof(EConvertMode));
            cmbConvertMode.Text = mappingObj.ConvertMode.ToString();
            labTitle.Text = mappingObj.Descript;
            this.cmbConvertMode.SelectedIndexChanged += new System.EventHandler(this.cmbConvertMode_SelectedIndexChanged);
            cmbConvertMode_SelectedIndexChanged(null, null);
            ///rihCodes.DataBindings.Add("text",mappingObj, "CodeConvertText");
        }
        private void cmbConvertMode_SelectedIndexChanged(object sender, EventArgs e)
        {
            string convertValue = cmbConvertMode.Text.Trim();
            if (convertValue == "") {
                return;
            }
            mappingObj.ConvertMode = (convertValue == EConvertMode.NoConvert.ToString())? EConvertMode.NoConvert :EConvertMode.NoConvert;
            foreach (Control conl in tabControl1.Controls)
            {
                conl.Enabled = false;
            }
            if (convertValue != "") {
                Control[] conls = tabControl1.Controls.Find("tab" + convertValue, false);
                if(conls.Length > 0){
                    conls[0].Enabled = true;
                    tabControl1.SelectedTab = conls[0] as TabPage;
                }
                //更新码表控件组
                CreateCodeTableControls();
            }
        }
        /// 
        /// 新增加一个码表项
        /// 
        /// 
        /// 
        private void button1_Click(object sender, EventArgs e)
        {
            mappingObj.CodeTableItems.Add(new CodeTableItem());
            CreateCodeTableControls();
        }
        /// 
        /// 建立码表控件组
        /// 
        private void CreateCodeTableControls()
        {
            pnlCodeTable.Controls.Clear();
            
            for (int i = 0; i < mappingObj.CodeTableItems.Count; i++)
            {
                CodeTableItem item = mappingObj.CodeTableItems[i];
                //增加列名
                TextBox txb = new TextBox();
                txb.AutoSize = true;
                int y = 26 * i + 10;
                txb.Location = new System.Drawing.Point(labSrcCodeTableVal.Location.X, y);
                txb.Size = new System.Drawing.Size(113, 21);
                txb.TabIndex = 0;
                txb.BringToFront();
                txb.DataBindings.Add("text", item,"SrcVal");
                pnlCodeTable.Controls.Add(txb);
                //增加列描述
                txb = new TextBox();
                txb.AutoSize = true;
                txb.Location = new System.Drawing.Point(labDescCodeTableVal.Location.X, y);
                txb.Size = new System.Drawing.Size(113, 21);
                txb.TabIndex = 0;
                txb.DataBindings.Add("text", item, "DescVal");
                txb.BringToFront();
                pnlCodeTable.Controls.Add(txb);
                //增加操作按钮
                Button btn = new Button();
                btn.Location = new System.Drawing.Point(labCZ.Location.X, y);
                btn.Size = new System.Drawing.Size(75, 20);
                btn.TabIndex = 29;
                btn.Text = "删除";
                btn.UseVisualStyleBackColor = true;
                btn.Tag = item;
                btn.Click += new System.EventHandler(btnDel_Click);
                btn.BringToFront();
                pnlCodeTable.Controls.Add(btn);
            }
        }
        /// 
        /// 删除一个码表项
        /// 
        /// 
        /// 
        private void btnDel_Click(object sender, EventArgs e)
        {
            //查询一条记录下的一个字段的值
            Button btn = sender as Button;
            if (btn != null)
            {
                CodeTableItem item = btn.Tag as CodeTableItem;
                mappingObj.CodeTableItems.Remove(item);
            }
            CreateCodeTableControls();
        }
        private void button2_Click(object sender, EventArgs e)
        {
            //CodeMaintenanceForm form = new CodeMaintenanceForm();
            //form.ShowDialog();
        }
        private void ConvertModeForm_FormClosing(object sender, FormClosingEventArgs e)
        {            
            if (conl != null) {
                //if (mappingObj.ConvertMode != ConvertModeEnum.NoConvert.ToString())
                //{
                //    conl.ForeColor = Color.Red;
                //}
                //else {
                //    conl.ForeColor = Color.Black;
                //}
            }
        }
    }
}