using DrawGraph;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms; 
namespace DrawGraph
{
    /// 
    /// 可编辑区域管理器
    /// 
    public class EditAreaManage: AreaManageBase
    {
        public EditAreaManage() { 
        }
        public EditAreaManage(object _operationRecor, ZedGraphControl _zedControl, TemplateManage _template, string _name) : base(_operationRecor, _zedControl, _template, _name)
        { }
        #region 重写的事件
        /// 
        /// 鼠标点击画板
        /// 
        /// 
        /// 
        public override void MouseDown(ZedGraphControl sender, MouseEventArgs e)
        {
        }
        public override void MouseMove(ZedGraphControl sender, MouseEventArgs e)
        {
        }
        public override void MouseUp(ZedGraphControl sender, MouseEventArgs e)
        {
        }
        public override void MouseDoubleClick(ZedGraphControl sender, MouseEventArgs e)
        {
        }
        public override void KeyUp(ZedGraphControl sender, KeyEventArgs e)
        {
        }
        #endregion 重写的事件结束
        public override void Bind()
        {
        }
        public override void editAr_Click(object sender, EventArgs e)
        {
            //传过来的数据是不是可编辑的
            AbleEditPackObj editPack = sender as AbleEditPackObj;
            if (editPack == null) return;
            //找到这个组件
            AbleEditPackObj aEdit1 = PackManage.ListPob.FirstOrDefault(s => s is AbleEditPackObj && s.PackTag == editPack.PackTag) as AbleEditPackObj;
            if (aEdit1 == null) return;
            //先把所有WINFORM组件隐藏
            foreach (PackObjBase pack in PackManage.ListPob)
            {
                AbleEditPackObj aEdit = pack as AbleEditPackObj;
                if (aEdit != null)
                {
                    aEdit.IsVisible = false;
                }
            }
            if (aEdit1 != null)
            {
                aEdit1.IsVisible = !aEdit1.IsVisible;
                Control conl = aEdit1.CControl;
                    conl.Leave -= new EventHandler(txt_Leave);
                    //根据数据源名称进行不同的事件处理
                    switch (aEdit1.ClassDataSourceName)
                    {
                        case "OperationRecord.PatientRef.Bed":
                            conl.Leave += new EventHandler(txt_Leave);
                            break;
                        case "OperationRecord.Operation": //手术名称
                            conl.Leave += new EventHandler(txt_Leave);
                            break;
                        default:
                            //在此处写日志
                            aEdit1.IsVisible = !aEdit1.IsVisible;
                            MessageBox.Show("没找到-" + aEdit1.ClassDataSourceName + "-属性的事件");
                            break;
                    }
            }
        }
        private void txt_Leave(object sender, EventArgs e)
        {
            Control control = (Control)sender;
            if (control == null) return;
            AbleEditPackObj ableEdit = control.Tag as AbleEditPackObj;
            if (ableEdit == null) return;
            string DataSourceName = ableEdit.ClassDataSourceName;
            Console.WriteLine(DataSourceName);
            //拿到数据源(格式:OperationRecord.PatientRef.Bed)
            bool updateOk = true;
            try
            {
                
            }
            catch (Exception  )
            {
                //写日志
            }
            finally
            {
                if (!updateOk)
                {
                }
                else
                {
                    //设置属性的值
                    template.SetObjValue(OpeRecord, DataSourceName, control.Text.Trim(), control.Text.Trim()); 
                }
                ableEdit.IsVisible = !ableEdit.IsVisible;
            }
        }
    }
}