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

namespace Mesnac.Controls.Default
{
    [ToolboxBitmap(typeof(InfoPanel), "Resources.InfoPanel.png")]
    public partial class InfoPanel : Panel,IBaseControl
    {
        #region 字段定义

        protected Assembly _assembly = Assembly.GetExecutingAssembly();
        protected Stream _imageStream;
        private bool _mcVisible = true; //保存可见性
        private bool _mcEnabled = true; //保存可用性
        private bool _isValid = true; //保存有效性
        private bool _isEventValid = true;      //保存事件有效性

        #endregion

        #region 构造方法

        public InfoPanel()
        {
            InitializeComponent();
            this.Size = new Size(260, 237);
            _imageStream = _assembly.GetManifestResourceStream("Mesnac.Controls.Default.Resources.InfoPanel.png");
            this.BackgroundImage = Image.FromStream(_imageStream);
            this.BackgroundImageLayout = ImageLayout.Stretch;
        }

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

            InitializeComponent();
        }

        #endregion

        #region 接口成员实现

        public string MCKey
        {
            get;
            set;
        }

        public object MCValue
        {
            get
            {
                return this.Text;
            }
            set
            {
                this.Text = value == null ? "" : value.ToString();
            }
        }

        public IBaseControl MCRoot
        {
            get;
            set;
        }

        [TypeConverter(typeof(DataSourceConverter))]

        [Description("数据连接"), Category("Data")]
        public string MCDataSourceID
        {
            get;
            set;
        }

        public MCDataSource MCDataSource
        {
            get;
            set;
        }

        [Description("是否为数据库控件"), Category("Data")]
        public bool IsDbControl
        {
            get;
            set;
        }

        [Description("初始化SQL"), Category("Data")]
        public string InitDataSource
        {
            get;
            set;
        }
        [Description("执行SQL"), Category("Data")]
        public string ActionDataSource
        {
            get;
            set;
        }

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

        [Description("操作类型"), Category("Data")]
        public DbOptionTypes DbOptionType
        {
            get;
            set;
        }

        [Description("是否可见"), Category("Behavior")]
        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("Behavior")]
        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
    }
}