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 |