#if FRAMEWORK20
using System;
using System.Text;
using System.Windows.Forms.Design;
using DevComponents.DotNetBar.Controls;
using System.ComponentModel;
using System.Drawing;
using System.ComponentModel.Design;
namespace DevComponents.DotNetBar.Design
{
    /// 
    /// Represents the designer for WarningBox control.
    /// 
    public class WarningBoxDesigner : ControlDesigner
    {
        #region Internal Implementation
        public override void InitializeNewComponent(System.Collections.IDictionary defaultValues)
        {
            base.InitializeNewComponent(defaultValues);
            SetDefaults();
        }
        private void SetDefaults()
        {
            WarningBox box = this.Control as WarningBox;
            if (box == null) return;
            TypeDescriptor.GetProperties(box)["Text"].SetValue(box, "Warning Box control with text-markup support.");
            Image image = GetDefaultImage();
            if (image != null)
                TypeDescriptor.GetProperties(box)["Image"].SetValue(box, image);
        }
        private Image GetDefaultImage()
        {
            string imageName = "images\\Warning.png";
            try
            {
                Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine;
                string path = "";
                try
                {
                    if (key != null)
                        key = key.OpenSubKey("Software\\DevComponents\\DotNetBar");
                    if (key != null)
                        path = key.GetValue("InstallationFolder", "").ToString();
                }
                finally { if (key != null) key.Close(); }
                if (path != "")
                {
                    if (path.Substring(path.Length - 1, 1) != "\\")
                        path += "\\";
                    if (System.IO.File.Exists(path + imageName))
                        path += imageName;
                    else
                        path = "";
                }
                if (path != "")
                {
                    return new Bitmap(path);
                }
            }
            catch (Exception)
            {
            }
            return null;
        }
        private DesignerActionListCollection _ActionLists = null;
        public override DesignerActionListCollection ActionLists
        {
            get
            {
                if (_ActionLists == null)
                {
                    _ActionLists = new DesignerActionListCollection();
                    _ActionLists.Add(new WarningBoxActionList(this));
                }
                return _ActionLists;
            }
        }
        #endregion
    }
    #region WarningBoxActionList
    public class WarningBoxActionList : DesignerActionList
    {
        private WarningBoxDesigner _Designer = null;
        /// 
        /// Initializes a new instance of the AdvTreeActionList class.
        /// 
        /// 
        public WarningBoxActionList(WarningBoxDesigner designer)
            : base(designer.Component)
        {
            _Designer = designer;
        }
        public override DesignerActionItemCollection GetSortedActionItems()
        {
            DesignerActionItemCollection items = new DesignerActionItemCollection();
            items.Add(new DesignerActionHeaderItem("Appearance"));
            items.Add(new DesignerActionHeaderItem("Information"));
            items.Add(new DesignerActionPropertyItem("OptionsButtonVisible", "Show Options button?", "Appearance", "Controls visibility of Options button in WarningBox"));
            items.Add(new DesignerActionPropertyItem("CloseButtonVisible", "Show Close button?", "Appearance", "Controls visibility of Close button in WarningBox"));
            items.Add(new DesignerActionPropertyItem("Image", "Image", "Appearance", "Image that is displayed on Warning Box"));
            items.Add(new DesignerActionTextItem("See Office2007ColorTable.WarningBox members to customize colors.", "Information"));
            items.Add(new DesignerActionMethodItem(this, "OpenKB", "How to customize color table?", "Information", "Opens online Knowledge Base article which shows how to customize Office2007ColorTable", true));
            items.Add(new DesignerActionMethodItem(this, "OpenTextMarkupRef", "Text Markup Reference...", "Information", "Opens online Text Markup reference. Markup can be used in Text property.", true));
            
            return items;
        }
        public void OpenKB()
        {
            System.Diagnostics.Process.Start("http://www.devcomponents.com/kb2/");
        }
        public void OpenTextMarkupRef()
        {
            System.Diagnostics.Process.Start("http://www.devcomponents.com/kb2/?p=515");
        }
        public bool OptionsButtonVisible
        {
            get
            {
                return ((WarningBox)base.Component).OptionsButtonVisible;
            }
            set
            {
                TypeDescriptor.GetProperties(base.Component)["OptionsButtonVisible"].SetValue(base.Component, value);
            }
        }
        public bool CloseButtonVisible
        {
            get
            {
                return ((WarningBox)base.Component).CloseButtonVisible;
            }
            set
            {
                TypeDescriptor.GetProperties(base.Component)["CloseButtonVisible"].SetValue(base.Component, value);
            }
        }
        public Image Image
        {
            get
            {
                return ((WarningBox)base.Component).Image;
            }
            set
            {
                TypeDescriptor.GetProperties(base.Component)["Image"].SetValue(base.Component, value);
            }
        }
    }
    #endregion
}
#endif