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
}
}