DotNet 4.8.1 build of DotNetBar
This commit is contained in:
215
PROMS/DotNetBar Source Code/ExplorerBarDesigner.cs
Normal file
215
PROMS/DotNetBar Source Code/ExplorerBarDesigner.cs
Normal file
@@ -0,0 +1,215 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.ComponentModel.Design;
|
||||
using System.Windows.Forms;
|
||||
using System.ComponentModel.Design.Serialization;
|
||||
using System.CodeDom;
|
||||
using System.Drawing;
|
||||
using System.Collections;
|
||||
|
||||
namespace DevComponents.DotNetBar
|
||||
{
|
||||
/// <summary>
|
||||
/// Summary description for ExplorerBarDesigner.
|
||||
/// </summary>
|
||||
public class ExplorerBarDesigner:BarBaseControlDesigner
|
||||
{
|
||||
#region Internal Implementation
|
||||
public ExplorerBarDesigner():base()
|
||||
{
|
||||
this.EnableItemDragDrop=true;
|
||||
}
|
||||
|
||||
public override void Initialize(IComponent component)
|
||||
{
|
||||
base.Initialize(component);
|
||||
if(!component.Site.DesignMode)
|
||||
return;
|
||||
ExplorerBar bar=this.Control as ExplorerBar;
|
||||
if(bar!=null)
|
||||
bar.SetDesignMode();
|
||||
}
|
||||
|
||||
public override DesignerVerbCollection Verbs
|
||||
{
|
||||
get
|
||||
{
|
||||
DesignerVerb[] verbs = new DesignerVerb[]
|
||||
{
|
||||
new DesignerVerb("Create Group", new EventHandler(OnAddGroup)),
|
||||
new DesignerVerb("Create Button", new EventHandler(OnAddButton))
|
||||
};
|
||||
return new DesignerVerbCollection(verbs);
|
||||
}
|
||||
}
|
||||
|
||||
#if FRAMEWORK20
|
||||
public override void InitializeNewComponent(IDictionary defaultValues)
|
||||
{
|
||||
base.InitializeNewComponent(defaultValues);
|
||||
SetDesignTimeDefaults();
|
||||
}
|
||||
#else
|
||||
public override void OnSetComponentDefaults()
|
||||
{
|
||||
base.OnSetComponentDefaults();
|
||||
SetDesignTimeDefaults();
|
||||
}
|
||||
#endif
|
||||
private void SetDesignTimeDefaults()
|
||||
{
|
||||
if (this.Control is ExplorerBar)
|
||||
{
|
||||
ExplorerBar eb = this.Control as ExplorerBar;
|
||||
eb.ApplyDefaultSettings();
|
||||
eb.ThemeAware = true;
|
||||
}
|
||||
}
|
||||
|
||||
protected override BaseItem GetItemContainer()
|
||||
{
|
||||
ExplorerBar bar=this.Control as ExplorerBar;
|
||||
if(bar!=null)
|
||||
return bar.ItemsContainer;
|
||||
return null;
|
||||
}
|
||||
|
||||
protected override void RecalcLayout()
|
||||
{
|
||||
ExplorerBar bar=this.GetItemContainerControl() as ExplorerBar;
|
||||
if(bar!=null)
|
||||
bar.RecalcLayout();
|
||||
}
|
||||
|
||||
protected override void OnSubItemsChanging()
|
||||
{
|
||||
base.OnSubItemsChanging();
|
||||
IComponentChangeService change=this.GetService(typeof(IComponentChangeService)) as IComponentChangeService;
|
||||
if(change!=null)
|
||||
{
|
||||
ExplorerBar bar=this.GetItemContainerControl() as ExplorerBar;
|
||||
change.OnComponentChanging(this.Component,TypeDescriptor.GetProperties(bar).Find("Groups",true));
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnSubItemsChanged()
|
||||
{
|
||||
base.OnSubItemsChanged();
|
||||
IComponentChangeService change=this.GetService(typeof(IComponentChangeService)) as IComponentChangeService;
|
||||
if(change!=null)
|
||||
{
|
||||
ExplorerBar bar=this.GetItemContainerControl() as ExplorerBar;
|
||||
change.OnComponentChanged(this.Component,TypeDescriptor.GetProperties(bar).Find("Groups",true),null,null);
|
||||
}
|
||||
}
|
||||
|
||||
// /// <summary>
|
||||
// /// Triggered when some other component on the form is removed.
|
||||
// /// </summary>
|
||||
// protected override void ComponentRemoved(object sender, ComponentEventArgs e)
|
||||
// {
|
||||
// base.ComponentRemoved(sender,e);
|
||||
// if(e.Component is ExplorerBarGroupItem)
|
||||
// {
|
||||
// ExplorerBar bar=this.GetItemContainerControl() as ExplorerBar;
|
||||
// if(bar.Groups.Contains(e.Component as BaseItem))
|
||||
// bar.Groups.Remove(e.Component as BaseItem);
|
||||
// DestroySubItems(e.Component as BaseItem);
|
||||
// bar.RecalcLayout();
|
||||
// }
|
||||
// }
|
||||
#endregion
|
||||
|
||||
#region Design-Time Item Creation
|
||||
private void OnAddGroup(object sender, EventArgs e)
|
||||
{
|
||||
CreateGroup();
|
||||
}
|
||||
|
||||
private ExplorerBarGroupItem CreateGroup()
|
||||
{
|
||||
ExplorerBar bar=this.Component as ExplorerBar;
|
||||
ExplorerBarGroupItem item=null;
|
||||
IDesignerHost dh=(IDesignerHost)GetService(typeof(IDesignerHost));
|
||||
|
||||
if(bar!=null && dh!=null)
|
||||
{
|
||||
OnSubItemsChanging();
|
||||
item=dh.CreateComponent(typeof(ExplorerBarGroupItem)) as ExplorerBarGroupItem;
|
||||
if(item==null)
|
||||
return null;
|
||||
item.SetDefaultAppearance();
|
||||
item.Text="New Group";
|
||||
item.Expanded=true;
|
||||
bar.Groups.Add(item);
|
||||
OnSubItemsChanged();
|
||||
}
|
||||
|
||||
return item;
|
||||
}
|
||||
|
||||
private void OnAddButton(object sender, EventArgs e)
|
||||
{
|
||||
ExplorerBar bar=this.Component as ExplorerBar;
|
||||
ExplorerBarGroupItem group=null;
|
||||
|
||||
IDesignerHost dh=(IDesignerHost)GetService(typeof(IDesignerHost));
|
||||
ISelectionService selection = (ISelectionService) this.GetService(typeof(ISelectionService));
|
||||
|
||||
if(selection!=null && selection.PrimarySelection is ExplorerBarGroupItem)
|
||||
{
|
||||
group=selection.PrimarySelection as ExplorerBarGroupItem;
|
||||
}
|
||||
else if(bar.Groups.Count>0)
|
||||
{
|
||||
System.Drawing.Point point=bar.PointToClient(Form.MousePosition);
|
||||
if(bar.Bounds.Contains(point))
|
||||
{
|
||||
foreach(BaseItem item in bar.Groups)
|
||||
{
|
||||
if(item.DisplayRectangle.Contains(point))
|
||||
{
|
||||
group=item as ExplorerBarGroupItem;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(group==null)
|
||||
{
|
||||
foreach(BaseItem item in bar.Groups)
|
||||
{
|
||||
if(item.Visible)
|
||||
{
|
||||
group=item as ExplorerBarGroupItem;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(group==null)
|
||||
group=CreateGroup();
|
||||
|
||||
IComponentChangeService change=this.GetService(typeof(IComponentChangeService)) as IComponentChangeService;
|
||||
if(change!=null)
|
||||
change.OnComponentChanging(this.Component,TypeDescriptor.GetProperties(group).Find("SubItems",true));
|
||||
ButtonItem button=dh.CreateComponent(typeof(ButtonItem)) as ButtonItem;
|
||||
if(button==null)
|
||||
return;
|
||||
ExplorerBarGroupItem.SetDesignTimeDefaults(button,group.StockStyle);
|
||||
group.SubItems.Add(button);
|
||||
if(change!=null)
|
||||
change.OnComponentChanged(this.Component,TypeDescriptor.GetProperties(group).Find("SubItems",true),null,null);
|
||||
|
||||
this.RecalcLayout();
|
||||
}
|
||||
|
||||
protected override bool CanDragItem(BaseItem item)
|
||||
{
|
||||
if(item is ExplorerBarGroupItem)
|
||||
return false;
|
||||
return base.CanDragItem(item);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user