599 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			599 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
#if FRAMEWORK20
 | 
						|
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.ComponentModel;
 | 
						|
using System.Windows.Forms;
 | 
						|
using System.Drawing;
 | 
						|
 | 
						|
namespace DevComponents.DotNetBar.Validator
 | 
						|
{
 | 
						|
    [ToolboxBitmap(typeof(Highlighter), "Validator.Highlighter.ico"), ToolboxItem(true), ProvideProperty("HighlightColor", typeof(Control)),
 | 
						|
    ProvideProperty("HighlightOnFocus", typeof(Control)),
 | 
						|
   System.Runtime.InteropServices.ComVisible(false), Designer("DevComponents.DotNetBar.Design.HighlighterDesigner, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral,  PublicKeyToken=90f470f34c89ccaf")]
 | 
						|
    public class Highlighter : Component, IExtenderProvider, IErrorProvider
 | 
						|
    {
 | 
						|
        #region Private Variables
 | 
						|
        private Dictionary<Control, eHighlightColor> _Highlights = new Dictionary<Control, eHighlightColor>();
 | 
						|
        private Dictionary<Control, bool> _HighlightOnFocus = new Dictionary<Control, bool>();
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Implementation
 | 
						|
        protected override void Dispose(bool disposing)
 | 
						|
        {
 | 
						|
            if (_ContainerControl != null)
 | 
						|
            {
 | 
						|
                _ContainerControl.SizeChanged -= ContainerControlSizeChanged;
 | 
						|
                _ContainerControl.HandleCreated -= ContainerControlHandleCreated;
 | 
						|
            }
 | 
						|
 | 
						|
            if (_HighlightPanel != null && _HighlightPanel.Parent == null && !_HighlightPanel.IsDisposed)
 | 
						|
            {
 | 
						|
                _HighlightPanel.Dispose();
 | 
						|
                _HighlightPanel = null;
 | 
						|
            }
 | 
						|
            else
 | 
						|
                _HighlightPanel = null;
 | 
						|
 | 
						|
            base.Dispose(disposing);
 | 
						|
        }
 | 
						|
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Retrieves whether control is highlighted when it receives input focus.
 | 
						|
        /// </summary>
 | 
						|
        [DefaultValue(false), Localizable(true), Description("Indicates whether control is highlighted when it receives input focus.")]
 | 
						|
        public bool GetHighlightOnFocus(Control c)
 | 
						|
        {
 | 
						|
            if (_HighlightOnFocus.ContainsKey(c))
 | 
						|
            {
 | 
						|
                return _HighlightOnFocus[c];
 | 
						|
            }
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
        /// <summary>
 | 
						|
        /// Sets whether control is highlighted when it receives input focus.
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="c">Reference to supported control.</param>
 | 
						|
        /// <param name="highlight">Indicates whether to highlight control on focus.</param>
 | 
						|
        public void SetHighlightOnFocus(Control c, bool highlight)
 | 
						|
        {
 | 
						|
            if (c == null) throw new NullReferenceException();
 | 
						|
 | 
						|
            if (_HighlightOnFocus.ContainsKey(c))
 | 
						|
            {
 | 
						|
                if (!highlight)
 | 
						|
                {
 | 
						|
                    RemoveHighlightOnFocus(_HighlightOnFocus, c);
 | 
						|
                }
 | 
						|
                return;
 | 
						|
            }
 | 
						|
            if(highlight)
 | 
						|
                AddHighlightOnFocus(_HighlightOnFocus, c);
 | 
						|
        }
 | 
						|
        private void AddHighlightOnFocus(Dictionary<Control, bool> highlightOnFocus, Control c)
 | 
						|
        {
 | 
						|
            c.Enter += ControlHighlightEnter;
 | 
						|
            c.Leave += ControlHighlightLeave;
 | 
						|
            c.VisibleChanged += ControlHighlightVisibleChanged;
 | 
						|
            highlightOnFocus.Add(c, true);
 | 
						|
        }
 | 
						|
 | 
						|
        void ControlHighlightVisibleChanged(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            if(_HighlightPanel!=null && _HighlightPanel.FocusHighlightControl == sender)
 | 
						|
                UpdateHighlighterRegion();
 | 
						|
        }
 | 
						|
        void ControlHighlightLeave(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            if (_HighlightPanel != null) _HighlightPanel.FocusHighlightControl = null;
 | 
						|
            UpdateHighlighterRegion();
 | 
						|
        }
 | 
						|
        void ControlHighlightEnter(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            if (_HighlightPanel != null)
 | 
						|
            {
 | 
						|
                if (!_HighlightPanel.Visible) _HighlightPanel.Visible = true;
 | 
						|
                _HighlightPanel.BringToFront();
 | 
						|
                _HighlightPanel.FocusHighlightControl = (Control)sender;
 | 
						|
            }
 | 
						|
            UpdateHighlighterRegion();
 | 
						|
        }
 | 
						|
        private void RemoveHighlightOnFocus(Dictionary<Control, bool> highlightOnFocus, Control c)
 | 
						|
        {
 | 
						|
            c.Enter -= ControlHighlightEnter;
 | 
						|
            c.Leave -= ControlHighlightLeave;
 | 
						|
            c.VisibleChanged -= ControlHighlightVisibleChanged;
 | 
						|
            highlightOnFocus.Remove(c);
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Retrieves the highlight color that is applied to the control.
 | 
						|
        /// </summary>
 | 
						|
        [DefaultValue(eHighlightColor.None), Localizable(true), Description("Indicates the highlight color that is applied to the control.")]
 | 
						|
        public eHighlightColor GetHighlightColor(Control c)
 | 
						|
        {
 | 
						|
            if (_Highlights.ContainsKey(c))
 | 
						|
            {
 | 
						|
                return _Highlights[c];
 | 
						|
            }
 | 
						|
            return eHighlightColor.None;
 | 
						|
        }
 | 
						|
        /// <summary>
 | 
						|
        /// Sets the highlight color for the control.
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="c">Reference to supported control.</param>
 | 
						|
        /// <param name="highlightColor">Highlight color.</param>
 | 
						|
        public void SetHighlightColor(Control c, eHighlightColor highlightColor)
 | 
						|
        {
 | 
						|
            if (_Highlights.ContainsKey(c))
 | 
						|
            {
 | 
						|
                if (highlightColor == eHighlightColor.None)
 | 
						|
                {
 | 
						|
                    RemoveHighlight(_Highlights, c);
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    eHighlightColor color = _Highlights[c];
 | 
						|
                    RemoveHighlight(_Highlights, c);
 | 
						|
                    AddHighlight(_Highlights, c, highlightColor);
 | 
						|
                }
 | 
						|
            }
 | 
						|
            else if (highlightColor != eHighlightColor.None)
 | 
						|
            {
 | 
						|
                AddHighlight(_Highlights, c, highlightColor);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        private Dictionary<TabControl, int> _TabControl1 = new Dictionary<TabControl, int>();
 | 
						|
        private Dictionary<SuperTabControl, int> _SuperTabControl1 = new Dictionary<SuperTabControl, int>();
 | 
						|
        private Dictionary<System.Windows.Forms.TabControl, int> _TabControl2 = new Dictionary<System.Windows.Forms.TabControl, int>();
 | 
						|
        private Dictionary<Panel, int> _ParentPanel = new Dictionary<Panel, int>();
 | 
						|
 | 
						|
        private void AddHighlight(Dictionary<Control, eHighlightColor> highlights, Control c, eHighlightColor highlightColor)
 | 
						|
        {
 | 
						|
            highlights.Add(c, highlightColor);
 | 
						|
            c.LocationChanged += new EventHandler(ControlLocationChanged);
 | 
						|
            c.SizeChanged += new EventHandler(ControlSizeChanged);
 | 
						|
            c.VisibleChanged += new EventHandler(ControlVisibleChanged);
 | 
						|
            if (_HighlightPanel != null)
 | 
						|
            {
 | 
						|
                if (!_HighlightPanel.Visible) _HighlightPanel.Visible = true;
 | 
						|
                _HighlightPanel.BringToFront();
 | 
						|
            }
 | 
						|
 | 
						|
            if(c.Parent == null)
 | 
						|
                c.ParentChanged += ControlParentChanged;
 | 
						|
            else
 | 
						|
                AddTabControlHandlers(c);
 | 
						|
 | 
						|
            UpdateHighlighterRegion();
 | 
						|
        }
 | 
						|
 | 
						|
        private void ControlParentChanged(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            Control c = (Control)sender;
 | 
						|
            c.ParentChanged -= ControlParentChanged;
 | 
						|
            AddTabControlHandlers(c);
 | 
						|
        }
 | 
						|
 | 
						|
        private void AddTabControlHandlers(Control c)
 | 
						|
        {
 | 
						|
            TabControl tab1 = GetParentControl(c, typeof(TabControl)) as TabControl;
 | 
						|
 | 
						|
            if (tab1 != null)
 | 
						|
            {
 | 
						|
                if (_TabControl1.ContainsKey(tab1))
 | 
						|
                    _TabControl1[tab1] = _TabControl1[tab1] + 1;
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    _TabControl1.Add(tab1, 1);
 | 
						|
                    tab1.SelectedTabChanged += TabControl1SelectedTabChanged;
 | 
						|
                }
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                SuperTabControl tab = GetParentControl(c, typeof(SuperTabControl)) as SuperTabControl;
 | 
						|
 | 
						|
                if (tab != null)
 | 
						|
                {
 | 
						|
                    if (_SuperTabControl1.ContainsKey(tab))
 | 
						|
                        _SuperTabControl1[tab] = _SuperTabControl1[tab] + 1;
 | 
						|
                    else
 | 
						|
                    {
 | 
						|
                        _SuperTabControl1.Add(tab, 1);
 | 
						|
                        tab.SelectedTabChanged += SuperTabControl1SelectedTabChanged;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    System.Windows.Forms.TabControl tab2 =
 | 
						|
                        GetParentControl(c, typeof (System.Windows.Forms.TabControl)) as System.Windows.Forms.TabControl;
 | 
						|
 | 
						|
                    if (tab2 != null)
 | 
						|
                    {
 | 
						|
                        if (_TabControl2.ContainsKey(tab2))
 | 
						|
                            _TabControl2[tab2] = _TabControl2[tab2] + 1;
 | 
						|
                        else
 | 
						|
                        {
 | 
						|
                            _TabControl2.Add(tab2, 1);
 | 
						|
                            tab2.SelectedIndexChanged += WinFormsTabSelectedIndexChanged;
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    else
 | 
						|
                    {
 | 
						|
                        Panel parentPanel = GetParentControl(c, typeof (Panel)) as Panel;
 | 
						|
 | 
						|
                        if (parentPanel != null)
 | 
						|
                        {
 | 
						|
                            if (_ParentPanel.ContainsKey(parentPanel))
 | 
						|
                                _ParentPanel[parentPanel] = _ParentPanel[parentPanel] + 1;
 | 
						|
                            else
 | 
						|
                            {
 | 
						|
                                _ParentPanel.Add(parentPanel, 1);
 | 
						|
                                parentPanel.Resize += ParentPanelResized;
 | 
						|
                                parentPanel.LocationChanged += ParentPanelLocationChanged;
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        private void ParentPanelLocationChanged(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            UpdateHighlights();
 | 
						|
        }
 | 
						|
        private void ParentPanelResized(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            UpdateHighlights();
 | 
						|
        }
 | 
						|
        private void WinFormsTabSelectedIndexChanged(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            UpdateHighlighterRegion();
 | 
						|
        }
 | 
						|
 | 
						|
        private void TabControl1SelectedTabChanged(object sender, TabStripTabChangedEventArgs e)
 | 
						|
        {
 | 
						|
            UpdateHighlighterRegion();
 | 
						|
        }
 | 
						|
 | 
						|
        private void SuperTabControl1SelectedTabChanged(object sender, SuperTabStripSelectedTabChangedEventArgs e)
 | 
						|
        {
 | 
						|
            UpdateHighlighterRegion();
 | 
						|
        }
 | 
						|
 | 
						|
        private Control GetParentControl(Control c, Type parentType)
 | 
						|
        {
 | 
						|
            Control parent = c.Parent;
 | 
						|
            while (parent != null)
 | 
						|
            {
 | 
						|
                if (parentType.IsAssignableFrom(parent.GetType())) return parent;
 | 
						|
                parent = parent.Parent;
 | 
						|
            }
 | 
						|
            return null;
 | 
						|
        }
 | 
						|
 | 
						|
        void ControlVisibleChanged(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            UpdateHighlighterRegion();
 | 
						|
        }
 | 
						|
 | 
						|
        private void ControlSizeChanged(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            UpdateHighlighterRegion();
 | 
						|
        }
 | 
						|
        private void ControlLocationChanged(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            UpdateHighlighterRegion();
 | 
						|
        }
 | 
						|
 | 
						|
        private void UpdateHighlighterRegion()
 | 
						|
        {
 | 
						|
            if (_HighlightPanel != null) _HighlightPanel.UpdateRegion();
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Updates the highlighted controls border. Usually call to this method is not needed but under
 | 
						|
        /// certain scenarios where highlighter does not automatically detects the change in visibility of 
 | 
						|
        /// the highlighted control call to this method is necessary.
 | 
						|
        /// </summary>
 | 
						|
        public void UpdateHighlights()
 | 
						|
        {
 | 
						|
            UpdateHighlighterRegion();
 | 
						|
        }
 | 
						|
 | 
						|
        private void RemoveHighlight(Dictionary<Control, eHighlightColor> highlights, Control c)
 | 
						|
        {
 | 
						|
            highlights.Remove(c);
 | 
						|
            c.LocationChanged -= new EventHandler(ControlLocationChanged);
 | 
						|
            c.SizeChanged -= new EventHandler(ControlSizeChanged);
 | 
						|
            c.VisibleChanged -= new EventHandler(ControlVisibleChanged);
 | 
						|
 | 
						|
            TabControl tab1 = GetParentControl(c, typeof(TabControl)) as TabControl;
 | 
						|
            if (tab1 != null)
 | 
						|
            {
 | 
						|
                if (_TabControl1.ContainsKey(tab1))
 | 
						|
                {
 | 
						|
                    if (_TabControl1[tab1] == 1)
 | 
						|
                    {
 | 
						|
                        _TabControl1.Remove(tab1);
 | 
						|
                        tab1.SelectedTabChanged -= TabControl1SelectedTabChanged;
 | 
						|
                    }
 | 
						|
                    else
 | 
						|
                        _TabControl1[tab1] = _TabControl1[tab1] - 1;
 | 
						|
                }
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                SuperTabControl tab = GetParentControl(c, typeof(SuperTabControl)) as SuperTabControl;
 | 
						|
 | 
						|
                if (tab != null)
 | 
						|
                {
 | 
						|
                    if (_SuperTabControl1.ContainsKey(tab))
 | 
						|
                    {
 | 
						|
                        if (_SuperTabControl1[tab] == 1)
 | 
						|
                        {
 | 
						|
                            _SuperTabControl1.Remove(tab);
 | 
						|
                            tab.SelectedTabChanged -= SuperTabControl1SelectedTabChanged;
 | 
						|
                        }
 | 
						|
                        else
 | 
						|
                            _SuperTabControl1[tab] = _SuperTabControl1[tab] - 1;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    System.Windows.Forms.TabControl tab2 =
 | 
						|
                        GetParentControl(c, typeof (System.Windows.Forms.TabControl)) as System.Windows.Forms.TabControl;
 | 
						|
 | 
						|
                    if (tab2 != null)
 | 
						|
                    {
 | 
						|
                        if (_TabControl2.ContainsKey(tab2))
 | 
						|
                        {
 | 
						|
                            if (_TabControl2[tab2] == 1)
 | 
						|
                            {
 | 
						|
                                _TabControl2.Remove(tab2);
 | 
						|
                                tab2.SelectedIndexChanged -= WinFormsTabSelectedIndexChanged;
 | 
						|
                            }
 | 
						|
                            else
 | 
						|
                                _TabControl2[tab2] = _TabControl2[tab2] - 1;
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    else
 | 
						|
                    {
 | 
						|
                        Panel parentPanel = GetParentControl(c, typeof (Panel)) as Panel;
 | 
						|
 | 
						|
                        if (parentPanel != null)
 | 
						|
                        {
 | 
						|
                            if (_ParentPanel.ContainsKey(parentPanel))
 | 
						|
                            {
 | 
						|
                                if (_ParentPanel[parentPanel] == 1)
 | 
						|
                                {
 | 
						|
                                    _ParentPanel.Remove(parentPanel);
 | 
						|
                                    parentPanel.LocationChanged -= ParentPanelLocationChanged;
 | 
						|
                                    parentPanel.SizeChanged -= ParentPanelResized;
 | 
						|
                                }
 | 
						|
                                else
 | 
						|
                                    _ParentPanel[parentPanel] = _ParentPanel[parentPanel] - 1;
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            UpdateHighlighterRegion();
 | 
						|
        }
 | 
						|
 | 
						|
        internal Dictionary<Control, eHighlightColor> Highlights
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                return _Highlights;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        private eHighlightColor _FocusHighlightColor = eHighlightColor.Blue;
 | 
						|
        /// <summary>
 | 
						|
        /// Indicates the highlight focus color.
 | 
						|
        /// </summary>
 | 
						|
        [DefaultValue(eHighlightColor.Blue), Category("Appearance"), Description("Indicates the highlight focus color."), Localizable(true)]
 | 
						|
        public eHighlightColor FocusHighlightColor
 | 
						|
        {
 | 
						|
            get { return _FocusHighlightColor; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                _FocusHighlightColor = value;
 | 
						|
                if (_HighlightPanel != null)
 | 
						|
                {
 | 
						|
                    _HighlightPanel.FocusHighlightColor = value;
 | 
						|
                    UpdateHighlighterRegion();
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        private HighlightPanel _HighlightPanel = null;
 | 
						|
        private Control _ContainerControl = null;
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the container control highlighter is bound to. The container control must be set in order for highlighter to work.
 | 
						|
        /// Container control should always be a form.
 | 
						|
        /// </summary>
 | 
						|
        [DefaultValue(null), Description("Indicates container control highlighter is bound to. Should be set to parent form."), Category("Behavior")]
 | 
						|
        public Control ContainerControl
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                return _ContainerControl;
 | 
						|
            }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                if (this.DesignMode)
 | 
						|
                {
 | 
						|
                    _ContainerControl = value;
 | 
						|
                    return;
 | 
						|
                }
 | 
						|
 | 
						|
                if (_ContainerControl != value)
 | 
						|
                {
 | 
						|
                    if (_ContainerControl != null)
 | 
						|
                    {
 | 
						|
                        _ContainerControl.SizeChanged -= ContainerControlSizeChanged;
 | 
						|
                        _ContainerControl.HandleCreated -= ContainerControlHandleCreated;
 | 
						|
                        if (_HighlightPanel != null && _HighlightPanel.Parent == _ContainerControl)
 | 
						|
                            _ContainerControl.Controls.Remove(_HighlightPanel);
 | 
						|
                    }
 | 
						|
 | 
						|
                    _ContainerControl = value;
 | 
						|
 | 
						|
                    if (_ContainerControl != null)
 | 
						|
                    {
 | 
						|
                        if (_HighlightPanel == null)
 | 
						|
                        {
 | 
						|
                            _HighlightPanel = new HighlightPanel(_Highlights);
 | 
						|
                            _HighlightPanel.FocusHighlightColor = _FocusHighlightColor;
 | 
						|
                            _HighlightPanel.Margin = new System.Windows.Forms.Padding(0);
 | 
						|
                            _HighlightPanel.Padding = new System.Windows.Forms.Padding(0);
 | 
						|
                            _HighlightPanel.CustomHighlightColors = _CustomHighlightColors;
 | 
						|
                            _HighlightPanel.Visible = false;
 | 
						|
                        }
 | 
						|
                        _ContainerControl.SizeChanged += ContainerControlSizeChanged;
 | 
						|
                        _ContainerControl.HandleCreated += ContainerControlHandleCreated;
 | 
						|
                        _ContainerControl.Controls.Add(_HighlightPanel);
 | 
						|
                        UpdateHighlightPanelBounds();
 | 
						|
                    }
 | 
						|
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        void ContainerControlHandleCreated(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            if (_Highlights.Count > 0 && _HighlightPanel != null && !_HighlightPanel.Visible)
 | 
						|
                _HighlightPanel.Visible = true;
 | 
						|
        }
 | 
						|
 | 
						|
        private void UpdateHighlightPanelBounds()
 | 
						|
        {
 | 
						|
            Rectangle bounds = new Rectangle(0, 0, _ContainerControl.ClientRectangle.Width, _ContainerControl.ClientRectangle.Height);
 | 
						|
            if (_HighlightPanel.Parent is Form)
 | 
						|
            {
 | 
						|
                Form form = _HighlightPanel.Parent as Form;
 | 
						|
                if (form.AutoSize)
 | 
						|
                {
 | 
						|
                    bounds.X += form.Padding.Left;
 | 
						|
                    bounds.Y += form.Padding.Top;
 | 
						|
                    bounds.Width -= form.Padding.Horizontal;
 | 
						|
                    bounds.Height -= form.Padding.Vertical;
 | 
						|
                }
 | 
						|
            }
 | 
						|
            if(_HighlightPanel.Bounds.Equals(bounds))
 | 
						|
                _HighlightPanel.UpdateRegion();
 | 
						|
            else
 | 
						|
                _HighlightPanel.Bounds = bounds;
 | 
						|
            //_HighlightPanel.UpdateRegion();
 | 
						|
            _HighlightPanel.BringToFront();
 | 
						|
        }
 | 
						|
 | 
						|
        private Timer _DelayTimer = null;
 | 
						|
        private void ContainerControlSizeChanged(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            if (!BarFunctions.IsVista)
 | 
						|
            {
 | 
						|
                Form form = sender as Form;
 | 
						|
                if (form != null)
 | 
						|
                {
 | 
						|
                    if (_DelayTimer == null)
 | 
						|
                    {
 | 
						|
                        _DelayTimer = new Timer();
 | 
						|
                        _DelayTimer.Interval = 100;
 | 
						|
                        _DelayTimer.Tick += new EventHandler(DelayTimerTick);
 | 
						|
                        _DelayTimer.Start();
 | 
						|
                    }
 | 
						|
                    return;
 | 
						|
                }
 | 
						|
            }
 | 
						|
            UpdateHighlightPanelBounds();
 | 
						|
        }
 | 
						|
 | 
						|
        void DelayTimerTick(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            Timer timer = _DelayTimer;
 | 
						|
            _DelayTimer = null;
 | 
						|
            timer.Tick -= new EventHandler(DelayTimerTick);
 | 
						|
            timer.Stop();
 | 
						|
            timer.Dispose();
 | 
						|
            UpdateHighlightPanelBounds();
 | 
						|
        }
 | 
						|
 | 
						|
        private Color[] _CustomHighlightColors = null;
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the array of colors used to render custom highlight color. Control expects 3 colors in array to be specified which define the highlight border.
 | 
						|
        /// </summary>
 | 
						|
        [DefaultValue(null), Category("Appearance"), Description("Array of colors used to render custom highlight color. Control expects 3 colors in array to be specified which define the highlight border.")]
 | 
						|
        public Color[] CustomHighlightColors
 | 
						|
        {
 | 
						|
            get { return _CustomHighlightColors; }
 | 
						|
            set 
 | 
						|
            {
 | 
						|
                _CustomHighlightColors = value;
 | 
						|
                if (_HighlightPanel != null)
 | 
						|
                {
 | 
						|
                    _HighlightPanel.CustomHighlightColors = _CustomHighlightColors;
 | 
						|
                    _HighlightPanel.Invalidate();
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region IExtenderProvider Members
 | 
						|
 | 
						|
        public bool CanExtend(object extendee)
 | 
						|
        {
 | 
						|
            return (extendee is Control);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Licensing
 | 
						|
#if !TRIAL
 | 
						|
        private string _LicenseKey = "";
 | 
						|
        [Browsable(false), DefaultValue("")]
 | 
						|
        public string LicenseKey
 | 
						|
        {
 | 
						|
            get { return _LicenseKey; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                if (NativeFunctions.ValidateLicenseKey(value))
 | 
						|
                    return;
 | 
						|
                _LicenseKey = (!NativeFunctions.CheckLicenseKey(value) ? "9dsjkhds7" : value);
 | 
						|
            }
 | 
						|
        }
 | 
						|
#endif
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region IErrorProvider Members
 | 
						|
 | 
						|
        void IErrorProvider.SetError(Control control, string value)
 | 
						|
        {
 | 
						|
            this.SetHighlightColor(control, eHighlightColor.Red);
 | 
						|
        }
 | 
						|
 | 
						|
        void IErrorProvider.ClearError(Control control)
 | 
						|
        {
 | 
						|
            this.SetHighlightColor(control, eHighlightColor.None);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
    }
 | 
						|
    /// <summary>
 | 
						|
    /// Defines highlight colors provided by Highlighter control.
 | 
						|
    /// </summary>
 | 
						|
    public enum eHighlightColor
 | 
						|
    {
 | 
						|
        None,
 | 
						|
        Red,
 | 
						|
        Blue,
 | 
						|
        Green,
 | 
						|
        Orange,
 | 
						|
        Custom
 | 
						|
    }
 | 
						|
}
 | 
						|
#endif |