292 lines
12 KiB
C#
292 lines
12 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.ComponentModel.Design;
|
|
using System.Drawing;
|
|
using System.Reflection;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using System.Windows.Forms.Design;
|
|
using System.Windows.Forms.Design.Behavior;
|
|
using DevComponents.AdvTree;
|
|
using DevComponents.AdvTree.Design;
|
|
using DevComponents.DotNetBar.Controls;
|
|
|
|
namespace DevComponents.DotNetBar.Design
|
|
{
|
|
public class ToolboxItemDesigner : ComponentDesignerWithAction
|
|
{
|
|
#region Constructor
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the LayoutItemBaseDesigner class.
|
|
/// </summary>
|
|
public ToolboxItemDesigner()
|
|
{
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Implementation
|
|
|
|
public override void Initialize(System.ComponentModel.IComponent component)
|
|
{
|
|
base.Initialize(component);
|
|
|
|
}
|
|
|
|
protected override void Dispose(bool disposing)
|
|
{
|
|
base.Dispose(disposing);
|
|
}
|
|
|
|
public override void InitializeNewComponent(IDictionary defaultValues)
|
|
{
|
|
base.InitializeNewComponent(defaultValues);
|
|
|
|
ToolboxItem item = (ToolboxItem)this.Component;
|
|
item.Text = item.Name;
|
|
item.Symbol = "\ue251";
|
|
item.SymbolSet = eSymbolSet.Material;
|
|
}
|
|
|
|
private DesignerActionListCollection _ActionLists = null;
|
|
|
|
public override DesignerActionListCollection ActionLists
|
|
{
|
|
get
|
|
{
|
|
if (this._ActionLists == null)
|
|
{
|
|
this._ActionLists = new DesignerActionListCollection();
|
|
this._ActionLists.Add(new ToolboxItemActionList(this));
|
|
}
|
|
return this._ActionLists;
|
|
}
|
|
}
|
|
|
|
public void MoveItemUp()
|
|
{
|
|
IComponentChangeService cc = (IComponentChangeService)GetService(typeof(IComponentChangeService));
|
|
ToolboxItem item = (ToolboxItem)this.Component;
|
|
BaseItem parent = item.Parent;
|
|
if (parent == null) return;
|
|
int index = parent.SubItems.IndexOf(item);
|
|
if (index == 0)
|
|
{
|
|
// Move to previous group
|
|
if (parent.Parent != null && parent.Parent.SubItems.IndexOf(parent) > 0)
|
|
{
|
|
int j = parent.Parent.SubItems.IndexOf(parent);
|
|
for (int i = j; i >= 0; i--)
|
|
{
|
|
BaseItem previousItem = parent.Parent.SubItems[i];
|
|
if (previousItem is ToolboxGroup && previousItem.Visible)
|
|
{
|
|
cc.OnComponentChanging(parent, TypeDescriptor.GetProperties(parent)["SubItems"]);
|
|
parent.SubItems.Remove(item);
|
|
cc.OnComponentChanged(parent, TypeDescriptor.GetProperties(parent)["SubItems"], null, null);
|
|
cc.OnComponentChanging(parent.Parent, TypeDescriptor.GetProperties(parent.Parent)["SubItems"]);
|
|
parent.Parent.SubItems.Add(item);
|
|
cc.OnComponentChanged(parent.Parent, TypeDescriptor.GetProperties(parent)["SubItems"], null, null);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
cc.OnComponentChanging(parent, TypeDescriptor.GetProperties(parent)["SubItems"]);
|
|
parent.SubItems.Remove(item);
|
|
parent.SubItems.Insert(index - 1, item);
|
|
cc.OnComponentChanged(parent, TypeDescriptor.GetProperties(parent)["SubItems"], null, null);
|
|
}
|
|
this.RecalcLayout();
|
|
}
|
|
|
|
public override void RecalcLayout()
|
|
{
|
|
ToolboxItem item = this.Component as ToolboxItem;
|
|
if (item != null && item.GetToolboxControl() != null)
|
|
item.GetToolboxControl().RecalcLayout();
|
|
}
|
|
|
|
public void MoveItemDown()
|
|
{
|
|
IComponentChangeService cc = (IComponentChangeService)GetService(typeof(IComponentChangeService));
|
|
ToolboxItem item = (ToolboxItem)this.Component;
|
|
BaseItem parent = item.Parent;
|
|
if (parent == null) return;
|
|
int index = parent.SubItems.IndexOf(item);
|
|
if (index == parent.SubItems.Count - 1)
|
|
{
|
|
// Move to next group
|
|
if (parent.Parent != null && parent.Parent.SubItems.IndexOf(parent) < parent.Parent.SubItems.Count - 1)
|
|
{
|
|
int j = parent.Parent.SubItems.IndexOf(parent);
|
|
for (int i = j; i < parent.Parent.SubItems.Count; i++)
|
|
{
|
|
BaseItem previousItem = parent.Parent.SubItems[i];
|
|
if (previousItem is ToolboxGroup && previousItem.Visible)
|
|
{
|
|
cc.OnComponentChanging(parent, TypeDescriptor.GetProperties(parent)["SubItems"]);
|
|
parent.SubItems.Remove(item);
|
|
cc.OnComponentChanged(parent, TypeDescriptor.GetProperties(parent)["SubItems"], null, null);
|
|
cc.OnComponentChanging(parent.Parent, TypeDescriptor.GetProperties(parent.Parent)["SubItems"]);
|
|
parent.Parent.SubItems.Add(item);
|
|
cc.OnComponentChanged(parent.Parent, TypeDescriptor.GetProperties(parent)["SubItems"], null, null);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
cc.OnComponentChanging(parent, TypeDescriptor.GetProperties(parent)["SubItems"]);
|
|
parent.SubItems.Remove(item);
|
|
parent.SubItems.Insert(index + 1, item);
|
|
cc.OnComponentChanged(parent, TypeDescriptor.GetProperties(parent)["SubItems"], null, null);
|
|
}
|
|
this.RecalcLayout();
|
|
}
|
|
|
|
//private void OnComponentRemoved(object sender, ComponentEventArgs e)
|
|
//{
|
|
// if (e.Component == this.Component)
|
|
// {
|
|
// ToolboxItem item = e.Component as ToolboxItem;
|
|
// BaseItem parent = item.Parent;
|
|
// Controls.ToolboxControl lc = item.GetToolboxControl();
|
|
// if (parent != null)
|
|
// {
|
|
// IComponentChangeService cc = (IComponentChangeService)GetService(typeof(IComponentChangeService));
|
|
// if (cc != null)
|
|
// cc.OnComponentChanging(parent, TypeDescriptor.GetProperties(parent)["SubItems"]);
|
|
// parent.SubItems.Remove(item);
|
|
// if (cc != null)
|
|
// cc.OnComponentChanged(parent, TypeDescriptor.GetProperties(parent)["SubItems"], null, null);
|
|
// if (lc != null)
|
|
// {
|
|
// lc.Invalidate();
|
|
// IDesignerHost host = (IDesignerHost)GetService(typeof(IDesignerHost));
|
|
// if (host != null)
|
|
// {
|
|
// IDesigner designer = host.GetDesigner(lc);
|
|
// if (designer is ToolboxControlDesigner)
|
|
// {
|
|
// ((ToolboxControlDesigner)designer).SelectionRefresh();
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
//}
|
|
|
|
protected override void OnDesignerSelectionChanged(bool isSelected)
|
|
{
|
|
ToolboxItem item = (ToolboxItem)this.Component;
|
|
item.Checked = isSelected;
|
|
base.OnDesignerSelectionChanged(isSelected);
|
|
}
|
|
|
|
public override System.Collections.ICollection AssociatedComponents
|
|
{
|
|
get
|
|
{
|
|
ToolboxItem item = this.Component as ToolboxItem;
|
|
if (item.SubItems.Count == 0)
|
|
return base.AssociatedComponents;
|
|
ArrayList items = new ArrayList();
|
|
item.SubItems.CopyTo(items);
|
|
return items;
|
|
}
|
|
}
|
|
|
|
protected override void PreFilterProperties(IDictionary properties)
|
|
{
|
|
base.PreFilterProperties(properties);
|
|
properties["Visible"] = TypeDescriptor.CreateProperty(typeof(ToolboxItemDesigner),
|
|
(PropertyDescriptor)properties["Visible"], new Attribute[]
|
|
{
|
|
new DefaultValueAttribute(true),
|
|
new BrowsableAttribute(true),
|
|
new CategoryAttribute("Appearance")
|
|
});
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets whether item is visible.
|
|
/// </summary>
|
|
[DefaultValue(true), Browsable(true), Category("Appearance"), Description("Indicates visiblity of the item.")]
|
|
public bool Visible
|
|
{
|
|
get { return (bool)ShadowProperties["Visible"]; }
|
|
set
|
|
{
|
|
// this value is not passed to the actual control
|
|
this.ShadowProperties["Visible"] = value;
|
|
}
|
|
}
|
|
|
|
public override Control GetHostControl()
|
|
{
|
|
return GetParentControl().Parent;
|
|
}
|
|
#endregion
|
|
}
|
|
|
|
|
|
#region ToolboxItemActionList
|
|
internal class ToolboxItemActionList : DesignerActionList
|
|
{
|
|
private ToolboxItemDesigner _Designer = null;
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the AdvTreeActionList class.
|
|
/// </summary>
|
|
/// <param name="designer"></param>
|
|
public ToolboxItemActionList(ToolboxItemDesigner designer)
|
|
: base(designer.Component)
|
|
{
|
|
_Designer = designer;
|
|
}
|
|
|
|
public override DesignerActionItemCollection GetSortedActionItems()
|
|
{
|
|
DesignerActionItemCollection items = new DesignerActionItemCollection();
|
|
items.Add(new DesignerActionHeaderItem("Position"));
|
|
//items.Add(new DesignerActionHeaderItem("Columns"));
|
|
//items.Add(new DesignerActionHeaderItem("Selection"));
|
|
|
|
items.Add(new DesignerActionMethodItem(this, "MoveItemUp", "Move Up", "Position", true));
|
|
items.Add(new DesignerActionMethodItem(this, "MoveItemDown", "Move Down", "Position", true));
|
|
//items.Add(new DesignerActionPropertyItem("CellEdit", "Allow node text editing?", "Nodes", "Indicates whether node cells are editable"));
|
|
|
|
//items.Add(new DesignerActionMethodItem(this, "EditColumns", "Edit Columns...", "Columns", "Edit Tree Control Columns", true));
|
|
//items.Add(new DesignerActionPropertyItem("ColumnsVisible", "Column header visible?", "Columns", "Indicates whether tree column header is visible"));
|
|
//items.Add(new DesignerActionPropertyItem("GridColumnLines", "Show grid column lines?", "Columns", "Indicates whether grid lines are visible"));
|
|
//items.Add(new DesignerActionPropertyItem("GridRowLines", "Show grid row lines?", "Nodes", "Indicates whether grid lines between nodes are visible"));
|
|
//items.Add(new DesignerActionPropertyItem("GridLinesColor", "Grid lines color:", "Columns", "Indicates custom color for grid lines"));
|
|
|
|
//items.Add(new DesignerActionPropertyItem("SelectionBox", "Show selection?", "Selection", "Indicates whether selection is shown for selected node"));
|
|
//items.Add(new DesignerActionPropertyItem("SelectionBoxStyle", "Selection style:", "Selection", "Indicates selection style"));
|
|
//items.Add(new DesignerActionPropertyItem("HotTracking", "Highlight mouse over node?", "Selection", "Indicates whether node that mouse is over is highlighted"));
|
|
|
|
return items;
|
|
}
|
|
|
|
public void MoveItemUp()
|
|
{
|
|
_Designer.MoveItemUp();
|
|
}
|
|
|
|
public void MoveItemDown()
|
|
{
|
|
_Designer.MoveItemDown();
|
|
}
|
|
}
|
|
#endregion
|
|
}
|