195 lines
6.2 KiB
C#
195 lines
6.2 KiB
C#
#if FRAMEWORK20
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.Windows.Forms.Design;
|
|
using System.Collections;
|
|
using DevComponents.DotNetBar.Controls;
|
|
using DevComponents.AdvTree;
|
|
using System.ComponentModel;
|
|
using System.ComponentModel.Design;
|
|
using DevComponents.DotNetBar.Rendering;
|
|
|
|
namespace DevComponents.DotNetBar.Design
|
|
{
|
|
public class ComboTreeDesigner : ControlDesigner
|
|
{
|
|
public override void InitializeNewComponent(IDictionary defaultValues)
|
|
{
|
|
base.InitializeNewComponent(defaultValues);
|
|
SetDesignTimeDefaults();
|
|
}
|
|
|
|
public override void Initialize(IComponent component)
|
|
{
|
|
base.Initialize(component);
|
|
if (component.Site!=null && !component.Site.DesignMode)
|
|
return;
|
|
|
|
// If our component is removed we need to clean-up
|
|
IComponentChangeService cc = (IComponentChangeService)GetService(typeof(IComponentChangeService));
|
|
if (cc != null)
|
|
{
|
|
cc.ComponentRemoving += new ComponentEventHandler(this.OnComponentRemoved);
|
|
}
|
|
|
|
#if !TRIAL
|
|
IDesignerHost dh = this.GetService(typeof(IDesignerHost)) as IDesignerHost;
|
|
if (dh != null)
|
|
dh.LoadComplete += new EventHandler(dh_LoadComplete);
|
|
#endif
|
|
}
|
|
#if !TRIAL
|
|
private void dh_LoadComplete(object sender, EventArgs e)
|
|
{
|
|
IDesignerHost dh = this.GetService(typeof(IDesignerHost)) as IDesignerHost;
|
|
if (dh != null)
|
|
dh.LoadComplete -= new EventHandler(dh_LoadComplete);
|
|
|
|
string key = RibbonBarDesigner.GetLicenseKey();
|
|
ComboTree bar = this.Control as ComboTree;
|
|
if (key != "" && bar != null && bar.LicenseKey == "" && bar.LicenseKey != key)
|
|
TypeDescriptor.GetProperties(bar)["LicenseKey"].SetValue(bar, key);
|
|
}
|
|
#endif
|
|
|
|
protected override void Dispose(bool disposing)
|
|
{
|
|
IComponentChangeService cc = (IComponentChangeService)GetService(typeof(IComponentChangeService));
|
|
if (cc != null)
|
|
cc.ComponentRemoved -= new ComponentEventHandler(this.OnComponentRemoved);
|
|
|
|
base.Dispose(disposing);
|
|
}
|
|
|
|
private void SetDesignTimeDefaults()
|
|
{
|
|
ComboTree c = this.Control as ComboTree;
|
|
PropertyDescriptor d = TypeDescriptor.GetProperties(c)["Text"];
|
|
if (d != null && d.PropertyType == typeof(string) && !d.IsReadOnly && d.IsBrowsable)
|
|
{
|
|
d.SetValue(c, "");
|
|
}
|
|
c.ButtonDropDown.Visible = true;
|
|
c.BackgroundStyle.Class = ElementStyleClassKeys.TextBoxBorderKey;
|
|
c.Style = eDotNetBarStyle.StyleManagerControlled;
|
|
#if !TRIAL
|
|
string key = RibbonBarDesigner.GetLicenseKey();
|
|
c.LicenseKey = key;
|
|
#endif
|
|
}
|
|
|
|
public override ICollection AssociatedComponents
|
|
{
|
|
get
|
|
{
|
|
ArrayList al = new ArrayList(base.AssociatedComponents);
|
|
ComboTree combo = this.Component as ComboTree;
|
|
foreach(Node o in combo.Nodes)
|
|
{
|
|
al.Add(o);
|
|
AddChildNodes(o, al);
|
|
}
|
|
return al;
|
|
}
|
|
}
|
|
|
|
private void AddChildNodes(Node parent, ArrayList al)
|
|
{
|
|
foreach (Node item in parent.Nodes)
|
|
{
|
|
al.Add(item);
|
|
}
|
|
}
|
|
|
|
private void OnComponentRemoved(object sender, ComponentEventArgs e)
|
|
{
|
|
if (e.Component == this.Component)
|
|
{
|
|
ICollection nodes = AssociatedComponents;
|
|
IDesignerHost dh = GetService(typeof(IDesignerHost)) as IDesignerHost;
|
|
if (dh == null) return;
|
|
foreach (object item in nodes)
|
|
{
|
|
if (item is Node)
|
|
{
|
|
Node ci = item as Node;
|
|
dh.DestroyComponent(ci);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
internal void EditColumns()
|
|
{
|
|
ComboTree tree = this.Component as ComboTree;
|
|
DevComponents.AdvTree.Design.AdvTreeDesigner.EditValue(this, tree, "Columns");
|
|
}
|
|
|
|
private DesignerActionListCollection _ActionLists = null;
|
|
public override DesignerActionListCollection ActionLists
|
|
{
|
|
get
|
|
{
|
|
if (this._ActionLists == null)
|
|
{
|
|
this._ActionLists = new DesignerActionListCollection();
|
|
this._ActionLists.Add(new ComboTreeActionList(this));
|
|
}
|
|
return this._ActionLists;
|
|
}
|
|
}
|
|
|
|
internal void CreateNode()
|
|
{
|
|
Node node = CreateNode(this.Component as ComboTree);
|
|
//if (node != null)
|
|
//{
|
|
// ISelectionService sel = this.GetService(typeof(ISelectionService)) as ISelectionService;
|
|
// ArrayList list = new ArrayList(1);
|
|
// list.Add(node);
|
|
// if (sel != null)
|
|
// {
|
|
// sel.SetSelectedComponents(list, SelectionTypes.MouseDown);
|
|
// node.TreeControl.SelectedNode = node;
|
|
// }
|
|
//}
|
|
}
|
|
|
|
private Node CreateNode(ComboTree tree)
|
|
{
|
|
IDesignerHost dh = (IDesignerHost)GetService(typeof(IDesignerHost));
|
|
if (dh == null)
|
|
return null;
|
|
|
|
Node node = null;
|
|
tree.AdvTree.BeginUpdate();
|
|
try
|
|
{
|
|
IComponentChangeService change = this.GetService(typeof(IComponentChangeService)) as IComponentChangeService;
|
|
if (change != null)
|
|
{
|
|
change.OnComponentChanging(this.Component, TypeDescriptor.GetProperties(tree).Find("Nodes", true));
|
|
}
|
|
|
|
node = dh.CreateComponent(typeof(Node)) as Node;
|
|
if (node != null)
|
|
{
|
|
node.Text = node.Name;
|
|
node.Expanded = true;
|
|
tree.Nodes.Add(node);
|
|
|
|
if (change != null)
|
|
change.OnComponentChanged(this.Component, TypeDescriptor.GetProperties(tree).Find("Nodes", true), null, null);
|
|
}
|
|
}
|
|
finally
|
|
{
|
|
tree.AdvTree.EndUpdate();
|
|
}
|
|
|
|
return node;
|
|
}
|
|
}
|
|
}
|
|
#endif |