using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Mesnac.Controls.Base;
using System.Drawing;

namespace Mesnac.Controls.Default
{
    [ToolboxBitmap(typeof(System.Windows.Forms.RadioButton))]
    public partial class MCRadioButton : RadioButton, IBaseControl
    {
        #region 字段定义

        private bool _mcVisible = true; //保存可见性
        private bool _mcEnabled = true; //保存可用性
        private bool _isValid = true; //保存有效性
        private bool _isEventValid = true;  //保存事件有效性
        private bool _isChecked;
        private List<DesignAction> _clickActionList = new List<DesignAction>();

        #endregion

        #region 构造方法

        public MCRadioButton()
            : base()
        {
            InitializeComponent();
        }

        public MCRadioButton(IContainer container)
        {
            container.Add(this);

            InitializeComponent();
        }

        #endregion

        #region 事件属性

        public List<DesignAction> ClickActionList
        {
            get { return _clickActionList; }
            set { _clickActionList = value; }
        }

        #endregion

        #region 属性定义

        //是否处于选中状态
        [Description("是否选中"), Category("Behavior")]
        public bool IsChecked
        {
            get { return this.Checked; }
            set { this.Checked = value; }
        }

        #endregion

        #region 接口实现

        public string MCKey
        {
            get;
            set;
        }

        public object MCValue
        {
            get
            {
                return this.Checked;
            }
            set
            {
                if (value != null)
                {
                    if (value.ToString().ToLower() == "true" || value.ToString().ToLower() == "false")
                    {
                        this.Checked = Convert.ToBoolean(value.ToString());
                    }
                    else    //不是true、false
                    {
                        int result = 0;
                        if (int.TryParse(value.ToString(), out result))
                        {
                            this.Checked = Convert.ToBoolean(result);
                        }
                    }
                }
            }
        }


        public IBaseControl MCRoot
        {
            get;
            set;
        }

        [TypeConverter(typeof(DataSourceConverter))]
        [Description("数据连接"), Category("数据")]
        public string MCDataSourceID
        {
            get;
            set;
        }
        public MCDataSource MCDataSource
        {
            get;
            set;
        }
        [Description("是否为数据库控件"), Category("数据")]
        public bool IsDbControl
        {
            get;
            set;
        }
        [Description("初始化SQL"), Category("数据")]
        public string InitDataSource
        {
            get;
            set;
        }
        [Description("执行SQL"), Category("数据")]
        public string ActionDataSource
        {
            get;
            set;
        }

        [Description("绑定数据源"), Category("数据")]
        public object BindDataSource
        {
            get;
            set;
        }

        [Description("操作类型"), Category("数据")]
        public DbOptionTypes DbOptionType
        {
            get;
            set;
        }
        [Description("是否可见"), Category("行为")]
        public bool MCVisible
        {
            get
            {
                return this._mcVisible;
            }
            set
            {
                this._mcVisible = value == null ? true : value;
                if (this.Site.DesignMode)
                {
                    this.Visible = true;
                }
                else
                {
                    this.Visible = this._mcVisible;
                }
            }
        }
        [Description("是否可用"), Category("行为")]
        public bool MCEnabled
        {
            get
            {
                return this._mcEnabled;
            }
            set
            {
                this._mcEnabled = value == null ? true : value;
                if (this.Site.DesignMode)
                {
                    this.Enabled = true;
                }
                else
                {
                    this.Enabled = this._mcEnabled;
                }
            }
        }

        public bool IsValid
        {
            get { return _isValid; }
            set { _isValid = value; }
        }

        public bool IsEventValid
        {
            get { return this._isEventValid; }
            set { this._isEventValid = value; }
        }

        #endregion
    }
}