279 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			279 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System.ComponentModel;
 | 
						|
using System.ComponentModel.Design;
 | 
						|
using System.Drawing;
 | 
						|
using System.Windows.Forms;
 | 
						|
using System.Windows.Forms.Design;
 | 
						|
using DevComponents.DotNetBar.Controls;
 | 
						|
using DevComponents.DotNetBar.SuperGrid;
 | 
						|
using System;
 | 
						|
using System.Collections;
 | 
						|
 | 
						|
namespace DevComponents.SuperGrid.Design
 | 
						|
{
 | 
						|
    /// <summary>
 | 
						|
    /// SuperGridDesigner
 | 
						|
    /// </summary>
 | 
						|
    public class SuperGridDesigner : ControlDesigner
 | 
						|
    {
 | 
						|
        #region Private variables
 | 
						|
 | 
						|
        private SuperGridControl _SuperGrid;
 | 
						|
        private DesignerActionListCollection _ActionLists;
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Initialize
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Initializes our designer
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="component"></param>
 | 
						|
        public override void Initialize(IComponent component)
 | 
						|
        {
 | 
						|
            base.Initialize(component);
 | 
						|
 | 
						|
            if (component.Site.DesignMode == true)
 | 
						|
                _SuperGrid = component as SuperGridControl;
 | 
						|
				
 | 
						|
#if !TRIAL
 | 
						|
            IDesignerHost dh = this.GetService(typeof(IDesignerHost)) as IDesignerHost;
 | 
						|
            if (dh != null)
 | 
						|
                dh.LoadComplete += new EventHandler(DesignerLoadComplete);
 | 
						|
#endif
 | 
						|
 | 
						|
            // If our component is removed we need to clean-up
 | 
						|
            IComponentChangeService cc = (IComponentChangeService)GetService(typeof(IComponentChangeService));
 | 
						|
 | 
						|
            if (cc != null)
 | 
						|
                cc.ComponentRemoving += new ComponentEventHandler(OnComponentRemoving);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Dispose
 | 
						|
 | 
						|
        protected override void Dispose(bool disposing)
 | 
						|
        {
 | 
						|
            // If our component is removed we need to clean-up
 | 
						|
            IComponentChangeService cc = (IComponentChangeService)GetService(typeof(IComponentChangeService));
 | 
						|
 | 
						|
            if (cc != null)
 | 
						|
                cc.ComponentRemoving -= new ComponentEventHandler(OnComponentRemoving);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Verbs
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Creates our verb collection
 | 
						|
        /// </summary>
 | 
						|
        public override DesignerVerbCollection Verbs
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                DesignerVerb[] verbs = new DesignerVerb[]
 | 
						|
                {
 | 
						|
                    //new DesignerVerb("KnobStyle 1", SetStyle1),
 | 
						|
                    //new DesignerVerb("KnobStyle 2", SetStyle2),
 | 
						|
                    //new DesignerVerb("KnobStyle 3", SetStyle3),
 | 
						|
                    //new DesignerVerb("KnobStyle 4", SetStyle4),
 | 
						|
                };
 | 
						|
 | 
						|
                return (new DesignerVerbCollection(verbs));
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region ActionLists
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets our DesignerActionListCollection list
 | 
						|
        /// </summary>
 | 
						|
        public override DesignerActionListCollection ActionLists
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                if (_ActionLists == null)
 | 
						|
                {
 | 
						|
                    _ActionLists = new DesignerActionListCollection();
 | 
						|
 | 
						|
                    _ActionLists.Add(new SuperGridActionList(_SuperGrid));
 | 
						|
                }
 | 
						|
 | 
						|
                return (_ActionLists);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region OnSetCursor
 | 
						|
 | 
						|
        protected override void OnSetCursor()
 | 
						|
        {
 | 
						|
            if (InScrollBar(Control.MousePosition) == true)
 | 
						|
                Cursor.Current = Cursors.Default;
 | 
						|
 | 
						|
            base.OnSetCursor();
 | 
						|
        }
 | 
						|
 | 
						|
        #region InScrollBar
 | 
						|
 | 
						|
        private bool InScrollBar(Point point)
 | 
						|
        {
 | 
						|
            if (_SuperGrid != null)
 | 
						|
            {
 | 
						|
                Point pt = _SuperGrid.PointToClient(point);
 | 
						|
 | 
						|
                if (_SuperGrid.HScrollBar.Visible)
 | 
						|
                {
 | 
						|
                    if (_SuperGrid.HScrollBar.Bounds.Contains(pt))
 | 
						|
                        return (true);
 | 
						|
                }
 | 
						|
 | 
						|
                if (_SuperGrid.VScrollBar.Visible)
 | 
						|
                {
 | 
						|
                    if (_SuperGrid.VScrollBar.Bounds.Contains(pt))
 | 
						|
                        return (true);
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            return (false);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region OnComponentRemoving
 | 
						|
 | 
						|
        /// <summary>Called when component is about to be removed from designer.</summary>
 | 
						|
        /// <param name="sender">Event sender.</param>
 | 
						|
        /// <param name="e">Event arguments.</param>
 | 
						|
        public void OnComponentRemoving(object sender, ComponentEventArgs e)
 | 
						|
        {
 | 
						|
            if (e.Component == this.Component)
 | 
						|
            {
 | 
						|
                IDesignerHost dh = (IDesignerHost)GetService(typeof(IDesignerHost));
 | 
						|
 | 
						|
                if (dh == null)
 | 
						|
                    return;
 | 
						|
 | 
						|
                ArrayList list = new ArrayList(AssociatedComponents);
 | 
						|
 | 
						|
                foreach (IComponent c in list)
 | 
						|
                    dh.DestroyComponent(c);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region AssociatedComponents
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Returns all components associated with this control
 | 
						|
        /// </summary>
 | 
						|
        public override ICollection AssociatedComponents
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                ArrayList c = new ArrayList(base.AssociatedComponents);
 | 
						|
 | 
						|
                SuperGridControl sg = Control as SuperGridControl;
 | 
						|
 | 
						|
                if (sg != null)
 | 
						|
                    GetComponents(sg.PrimaryGrid, c);
 | 
						|
 | 
						|
                return (c);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #region GetComponents
 | 
						|
 | 
						|
        private void GetComponents(GridContainer cont, ArrayList c)
 | 
						|
        {
 | 
						|
            if (cont is GridPanel)
 | 
						|
            {
 | 
						|
                foreach (GridColumn col in ((GridPanel)cont).Columns)
 | 
						|
                    c.Add(col);
 | 
						|
            }
 | 
						|
 | 
						|
            if (cont.Rows != null && cont.Rows.Count > 0)
 | 
						|
            {
 | 
						|
                foreach (GridElement item in cont.Rows)
 | 
						|
                {
 | 
						|
                    c.Add(item);
 | 
						|
 | 
						|
                    if (item is GridRow)
 | 
						|
                    {
 | 
						|
                        foreach (GridCell cell in ((GridRow)item).Cells)
 | 
						|
                            c.Add(cell);
 | 
						|
                    }
 | 
						|
 | 
						|
                    if (item is GridContainer)
 | 
						|
                        GetComponents((GridContainer)item, c);
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region GetHitTest
 | 
						|
 | 
						|
        protected override bool GetHitTest(Point point)
 | 
						|
        {
 | 
						|
            if (InScrollBar(point) == true)
 | 
						|
                return (true);
 | 
						|
 | 
						|
            return (base.GetHitTest(point));
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Licensing Stuff
 | 
						|
        public override void InitializeNewComponent(IDictionary defaultValues)
 | 
						|
        {
 | 
						|
            base.InitializeNewComponent(defaultValues);
 | 
						|
            SetDesignTimeDefaults();
 | 
						|
        }
 | 
						|
        private void SetDesignTimeDefaults()
 | 
						|
        {
 | 
						|
            SuperGridControl c = this.Control as SuperGridControl;
 | 
						|
#if !TRIAL
 | 
						|
            string key = GetLicenseKey();
 | 
						|
            c.LicenseKey = key;
 | 
						|
#endif
 | 
						|
        }
 | 
						|
#if !TRIAL
 | 
						|
        internal static string GetLicenseKey()
 | 
						|
        {
 | 
						|
            string key = "";
 | 
						|
            Microsoft.Win32.RegistryKey regkey = Microsoft.Win32.Registry.LocalMachine;
 | 
						|
            regkey = regkey.OpenSubKey("Software\\DevComponents\\Licenses", false);
 | 
						|
            if (regkey != null)
 | 
						|
            {
 | 
						|
                object keyValue = regkey.GetValue("DevComponents.DotNetBar.DotNetBarManager2");
 | 
						|
                if (keyValue != null)
 | 
						|
                    key = keyValue.ToString();
 | 
						|
            }
 | 
						|
            return key;
 | 
						|
        }
 | 
						|
        private void DesignerLoadComplete(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            IDesignerHost dh = this.GetService(typeof(IDesignerHost)) as IDesignerHost;
 | 
						|
            if (dh != null)
 | 
						|
                dh.LoadComplete -= new EventHandler(DesignerLoadComplete);
 | 
						|
 | 
						|
            string key = GetLicenseKey();
 | 
						|
            SuperGridControl grid = this.Control as SuperGridControl;
 | 
						|
            if (key != "" && grid != null && grid.LicenseKey == "" && grid.LicenseKey != key)
 | 
						|
                TypeDescriptor.GetProperties(grid)["LicenseKey"].SetValue(grid, key);
 | 
						|
        }
 | 
						|
#endif
 | 
						|
        #endregion
 | 
						|
    }
 | 
						|
}
 |