241 lines
		
	
	
		
			9.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			241 lines
		
	
	
		
			9.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Text;
 | 
						|
using System.ComponentModel;
 | 
						|
using System.Drawing;
 | 
						|
 | 
						|
namespace DevComponents.DotNetBar
 | 
						|
{
 | 
						|
    /// <summary>
 | 
						|
    /// Represents the color picker button control.
 | 
						|
    /// </summary>
 | 
						|
    [ToolboxBitmap(typeof(ColorPickerButton), "Controls.ColorPickerButton.ico"), ToolboxItem(true), DefaultEvent("SelectedColorChanged"), Designer("DevComponents.DotNetBar.Design.ColorPickerButtonDesigner, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral,  PublicKeyToken=90f470f34c89ccaf"), System.Runtime.InteropServices.ComVisible(false)]
 | 
						|
    public class ColorPickerButton : ButtonX
 | 
						|
    {
 | 
						|
        #region Private Variables
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Events
 | 
						|
        /// <summary>
 | 
						|
        /// Occurs when color is chosen from drop-down color picker or from Custom Colors dialog box. Selected color can be accessed through SelectedColor property.
 | 
						|
        /// </summary>
 | 
						|
        [Description("Occurs when color is chosen from drop-down color picker or from Custom Colors dialog box.")]
 | 
						|
        public event EventHandler SelectedColorChanged;
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Occurs when mouse is moving over the colors presented by the color picker. You can use it to preview the color before it is selected.
 | 
						|
        /// </summary>
 | 
						|
        [Description("Occurs when mouse is moving over the colors presented by the color picker")]
 | 
						|
        public event ColorPreviewEventHandler ColorPreview;
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Constructor
 | 
						|
        /// <summary>
 | 
						|
        /// Creates new instance of the object.
 | 
						|
        /// </summary>
 | 
						|
        public ColorPickerButton()
 | 
						|
            : base()
 | 
						|
        {
 | 
						|
            ColorPickerDropDown cp = GetColorPickerDropDown();
 | 
						|
            cp.SelectedColorChanged += new EventHandler(InternalSelectedColorChanged);
 | 
						|
            cp.ColorPreview += new ColorPreviewEventHandler(InternalColorPreview);
 | 
						|
        }
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Internal Implementation
 | 
						|
#if FRAMEWORK20
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the array of ColorItem objects that will be used as standard colors instead of built-in color palette.
 | 
						|
        /// See: http://www.devcomponents.com/kb2/?p=79 for instructions.
 | 
						|
        /// </summary>
 | 
						|
        [DefaultValue(null), Browsable(false), Category("Colors"), Description("Array of ColorItem objects that will be used as standard colors instead of built-in color palette.")]
 | 
						|
        public ColorItem[][] CustomStandardColors
 | 
						|
        {
 | 
						|
            get { return GetColorPickerDropDown().CustomStandardColors; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                GetColorPickerDropDown().CustomStandardColors = value;
 | 
						|
            }
 | 
						|
        }
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the array of ColorItem objects that will be used as theme colors instead of built-in color palette.
 | 
						|
        /// See: http://www.devcomponents.com/kb2/?p=79 for instructions.
 | 
						|
        /// </summary>
 | 
						|
        [DefaultValue(null), Browsable(false), Category("Colors"), Description("Array of ColorItem objects that will be used as theme colors instead of built-in color palette.")]
 | 
						|
        public ColorItem[][] CustomThemeColors
 | 
						|
        {
 | 
						|
            get { return GetColorPickerDropDown().CustomThemeColors; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                GetColorPickerDropDown().CustomThemeColors = value;
 | 
						|
            }
 | 
						|
        }
 | 
						|
#endif
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Displays the Colors dialog that allows user to choose the color or create a custom color. If new color is chosen the
 | 
						|
        /// SelectedColorChanged event is raised.
 | 
						|
        /// </summary>
 | 
						|
        public System.Windows.Forms.DialogResult DisplayMoreColorsDialog()
 | 
						|
        {
 | 
						|
            return GetColorPickerDropDown().DisplayMoreColorsDialog();
 | 
						|
        }
 | 
						|
 | 
						|
        protected override ButtonItem CreateButtonItem()
 | 
						|
        {
 | 
						|
            return new ColorPickerDropDown();
 | 
						|
        }
 | 
						|
 | 
						|
        private ColorPickerDropDown GetColorPickerDropDown()
 | 
						|
        {
 | 
						|
            return InternalItem as ColorPickerDropDown;
 | 
						|
        }
 | 
						|
 | 
						|
        private void InternalColorPreview(object sender, ColorPreviewEventArgs e)
 | 
						|
        {
 | 
						|
            OnColorPreview(e);
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Raises the ColorPreview event.
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="e">Provides event data.</param>
 | 
						|
        protected virtual void OnColorPreview(ColorPreviewEventArgs e)
 | 
						|
        {
 | 
						|
            if (ColorPreview != null)
 | 
						|
                ColorPreview(this, e);
 | 
						|
        }
 | 
						|
 | 
						|
        private void InternalSelectedColorChanged(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            OnSelectedColorChanged(e);
 | 
						|
            ExecuteCommand();
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets whether command is executed when button is clicked.
 | 
						|
        /// </summary>
 | 
						|
        protected virtual bool ExecuteCommandOnClick
 | 
						|
        {
 | 
						|
            get { return false; }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Raises the SelectedColorChanged event.
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="e">Provides event data.</param>
 | 
						|
        protected virtual void OnSelectedColorChanged(EventArgs e)
 | 
						|
        {
 | 
						|
            if (SelectedColorChanged != null)
 | 
						|
                SelectedColorChanged(this, e);
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the Owner Window that will be used as owner for the colors modal dialog when displayed.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DefaultValue(null)]
 | 
						|
        public System.Windows.Forms.IWin32Window OwnerWindow
 | 
						|
        {
 | 
						|
            get { return GetColorPickerDropDown().OwnerWindow; }
 | 
						|
            set { GetColorPickerDropDown().OwnerWindow = value; }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets more colors menu item is visible which allows user to open Custom Colors dialog box. Default value is true.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(true), DefaultValue(true), DevCoSerialize(), Category("Appearance"), Description("Indicates more colors menu item is visible which allows user to open Custom Colors dialog box.")]
 | 
						|
        public bool DisplayMoreColors
 | 
						|
        {
 | 
						|
            get { return GetColorPickerDropDown().DisplayMoreColors; }
 | 
						|
            set { GetColorPickerDropDown().DisplayMoreColors = value; }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the last selected color from either the drop-down or Custom Color dialog box. Default value is
 | 
						|
        /// Color.Empty. You can use SelectedColorChanged event to be notified when this property changes.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
 | 
						|
        public Color SelectedColor
 | 
						|
        {
 | 
						|
            get { return GetColorPickerDropDown().SelectedColor; }
 | 
						|
            set { GetColorPickerDropDown().SelectedColor = value; }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets whether theme colors are displayed on drop-down. Default value is true.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(true), DefaultValue(true), DevCoSerialize(), Category("Appearance"), Description("Indicates whether theme colors are displayed on drop-down.")]
 | 
						|
        public bool DisplayThemeColors
 | 
						|
        {
 | 
						|
            get { return GetColorPickerDropDown().DisplayThemeColors; }
 | 
						|
            set { GetColorPickerDropDown().DisplayThemeColors = value; }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets whether standard colors are displayed on drop-down. Default value is true.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(true), DefaultValue(true), DevCoSerialize(), Category("Appearance"), Description("Indicates whether standard colors are displayed on drop-down.")]
 | 
						|
        public bool DisplayStandardColors
 | 
						|
        {
 | 
						|
            get { return GetColorPickerDropDown().DisplayStandardColors; }
 | 
						|
            set { GetColorPickerDropDown().DisplayStandardColors = value; }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Indicates whether SubItems collection is serialized. ColorPickerDropDown does not serialize the sub items.
 | 
						|
        /// </summary>
 | 
						|
        [EditorBrowsable(EditorBrowsableState.Never)]
 | 
						|
        public bool ShouldSerializeSubItems()
 | 
						|
        {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the rectangle in Image coordinates where selected color will be painted. Setting this property will
 | 
						|
        /// have an effect only if Image property is used to set the image. Default value is an empty rectangle which indicates
 | 
						|
        /// that selected color will not be painted on the image.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(true), Description("Indicates rectangle in Image coordinates where selected color will be painted. Property will have effect only if Image property is used to set the image."), Category("Behaviour")]
 | 
						|
        public Rectangle SelectedColorImageRectangle
 | 
						|
        {
 | 
						|
            get { return GetColorPickerDropDown().SelectedColorImageRectangle; }
 | 
						|
            set { GetColorPickerDropDown().SelectedColorImageRectangle = value; }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets whether property should be serialized.
 | 
						|
        /// </summary>
 | 
						|
        [EditorBrowsable(EditorBrowsableState.Never)]
 | 
						|
        public bool ShouldSerializeSelectedColorImageRectangle()
 | 
						|
        {
 | 
						|
            return GetColorPickerDropDown().ShouldSerializeSelectedColorImageRectangle();
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Resets the property to its default value.
 | 
						|
        /// </summary>
 | 
						|
        [EditorBrowsable(EditorBrowsableState.Never)]
 | 
						|
        public void ResetSelectedColorImageRectangle()
 | 
						|
        {
 | 
						|
            GetColorPickerDropDown().ResetSelectedColorImageRectangle();
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Invokes the ColorPreview event.
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="e">Provides data for the event.</param>
 | 
						|
        public void InvokeColorPreview(ColorPreviewEventArgs e)
 | 
						|
        {
 | 
						|
            GetColorPickerDropDown().InvokeColorPreview(e);
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Update the selected color image if the SelectedColorImageRectangle has been set and button is using Image property to display the image.
 | 
						|
        /// </summary>
 | 
						|
        public void UpdateSelectedColorImage()
 | 
						|
        {
 | 
						|
            GetColorPickerDropDown().UpdateSelectedColorImage();
 | 
						|
        }
 | 
						|
        #endregion
 | 
						|
    }
 | 
						|
}
 |