DotNet 4.8.1 build of DotNetBar
This commit is contained in:
@@ -0,0 +1,237 @@
|
||||
using System;
|
||||
using System.Windows.Forms;
|
||||
using System.Windows.Forms.Design;
|
||||
using System.Collections;
|
||||
using System.Drawing;
|
||||
using System.ComponentModel.Design;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace DevComponents.DotNetBar.Design
|
||||
{
|
||||
/// <summary>
|
||||
/// Summary description for NavigationPaneDesigner.
|
||||
/// </summary>
|
||||
public class NavigationPaneDesigner:NavigationBarDesigner
|
||||
{
|
||||
public override void Initialize(IComponent component)
|
||||
{
|
||||
base.Initialize(component);
|
||||
if(!component.Site.DesignMode)
|
||||
return;
|
||||
NavigationPane pane=this.Control as NavigationPane;
|
||||
if(pane!=null)
|
||||
pane.SetDesignMode();
|
||||
}
|
||||
public override DesignerVerbCollection Verbs
|
||||
{
|
||||
get
|
||||
{
|
||||
DesignerVerb[] verbs;
|
||||
verbs = new DesignerVerb[]
|
||||
{
|
||||
new DesignerVerb("Create New Pane", new EventHandler(CreateNewPane)),
|
||||
};
|
||||
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()
|
||||
{
|
||||
CreateNewPane();
|
||||
NavigationPane pane = this.Control as NavigationPane;
|
||||
pane.Style = eDotNetBarStyle.StyleManagerControlled;
|
||||
}
|
||||
|
||||
private void CreateNewPane(object sender, EventArgs e)
|
||||
{
|
||||
CreateNewPane();
|
||||
}
|
||||
|
||||
private void CreateNewPane()
|
||||
{
|
||||
IDesignerHost dh=(IDesignerHost)GetService(typeof(IDesignerHost));
|
||||
NavigationPane navPane=this.Control as NavigationPane;
|
||||
if(navPane==null || dh==null)
|
||||
return;
|
||||
|
||||
DesignerTransaction dt = dh.CreateTransaction();
|
||||
try
|
||||
{
|
||||
IComponentChangeService change = this.GetService(typeof(IComponentChangeService)) as IComponentChangeService;
|
||||
if (change != null)
|
||||
change.OnComponentChanging(this.Component, null);
|
||||
|
||||
ButtonItem item = null;
|
||||
try
|
||||
{
|
||||
m_CreatingItem = true;
|
||||
item = dh.CreateComponent(typeof(ButtonItem)) as ButtonItem;
|
||||
item.Text = item.Name;
|
||||
item.OptionGroup = "navBar";
|
||||
item.Image = Helpers.LoadBitmap("SystemImages.DefaultNavBarImage.png");
|
||||
}
|
||||
finally
|
||||
{
|
||||
m_CreatingItem = false;
|
||||
}
|
||||
|
||||
NavigationPanePanel panel = dh.CreateComponent(typeof(NavigationPanePanel)) as NavigationPanePanel;
|
||||
panel.ParentItem = item;
|
||||
navPane.Items.Add(item);
|
||||
navPane.Controls.Add(panel);
|
||||
panel.Dock = DockStyle.Fill;
|
||||
panel.SendToBack();
|
||||
panel.ApplyPanelStyle();
|
||||
panel.ColorSchemeStyle = navPane.Style;
|
||||
if (Helpers.IsOffice2007Style(navPane.Style))
|
||||
panel.ColorScheme = navPane.NavigationBar.GetColorScheme();
|
||||
panel.Style.BackColor2.ColorSchemePart = eColorSchemePart.None;
|
||||
panel.Style.Border = eBorderType.None;
|
||||
panel.Style.BorderColor.ColorSchemePart = eColorSchemePart.PanelBorder;
|
||||
|
||||
if (navPane.Items.Count == 1)
|
||||
item.Checked = true;
|
||||
navPane.RecalcLayout();
|
||||
if (change != null)
|
||||
change.OnComponentChanged(this.Component, null, null, null);
|
||||
|
||||
if (change != null)
|
||||
{
|
||||
change.OnComponentChanging(panel, null);
|
||||
change.OnComponentChanged(panel, null, null, null);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
dt.Cancel();
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (!dt.Canceled) dt.Commit();
|
||||
}
|
||||
}
|
||||
|
||||
public override bool CanParent(Control c)
|
||||
{
|
||||
if(c is NavigationPanePanel)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
protected override BaseItem GetItemContainer()
|
||||
{
|
||||
NavigationPane bar=this.Control as NavigationPane;
|
||||
if(bar!=null)
|
||||
return bar.NavigationBar.GetBaseItemContainer();
|
||||
return null;
|
||||
}
|
||||
|
||||
protected override System.Windows.Forms.Control GetItemContainerControl()
|
||||
{
|
||||
NavigationPane bar=this.Control as NavigationPane;
|
||||
if(bar!=null)
|
||||
return bar.NavigationBar;
|
||||
return null;
|
||||
}
|
||||
/// <summary>
|
||||
/// Triggered when some other component on the form is removed.
|
||||
/// </summary>
|
||||
protected override void OtherComponentRemoving(object sender, ComponentEventArgs e)
|
||||
{
|
||||
base.OtherComponentRemoving(sender,e);
|
||||
|
||||
NavigationPane bar=this.Component as NavigationPane;
|
||||
if(bar==null || bar.IsDisposed)
|
||||
return;
|
||||
|
||||
IDesignerHost dh=(IDesignerHost)GetService(typeof(IDesignerHost));
|
||||
if(dh==null)
|
||||
return;
|
||||
IComponentChangeService cc = (IComponentChangeService)GetService(typeof(IComponentChangeService));
|
||||
|
||||
// Check is any of the buttons or panel that we host
|
||||
if(!m_InternalRemoving && e.Component is BaseItem && dh.TransactionDescription.StartsWith("Delete "))
|
||||
{
|
||||
ButtonItem item = e.Component as ButtonItem;
|
||||
if (item != null)
|
||||
{
|
||||
NavigationPanePanel panel = bar.GetPanel(item);
|
||||
if (panel != null && dh != null)
|
||||
{
|
||||
DesignerTransaction dt = dh.CreateTransaction("Removing associated NavigationPanePanel");
|
||||
panel.ParentItem = null;
|
||||
if (cc != null) cc.OnComponentChanging(bar, TypeDescriptor.GetProperties(bar)["Controls"]);
|
||||
bar.Controls.Remove(panel);
|
||||
if (cc != null) cc.OnComponentChanged(bar, TypeDescriptor.GetProperties(bar)["Controls"], null, null);
|
||||
dh.DestroyComponent(panel);
|
||||
dt.Commit();
|
||||
bar.RecalcLayout();
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(!m_InternalRemoving && e.Component is NavigationPanePanel)
|
||||
{
|
||||
if(bar.Controls.Contains(e.Component as NavigationPanePanel))
|
||||
{
|
||||
NavigationPanePanel navpane=e.Component as NavigationPanePanel;
|
||||
if (navpane.ParentItem != null)
|
||||
{
|
||||
BaseItem item = navpane.ParentItem;
|
||||
navpane.ParentItem = null;
|
||||
if (cc != null) cc.OnComponentChanging(bar, TypeDescriptor.GetProperties(bar)["Items"]);
|
||||
bar.Items.Remove(item);
|
||||
if (cc != null) cc.OnComponentChanged(bar, TypeDescriptor.GetProperties(bar)["Items"], null, null);
|
||||
dh.DestroyComponent(item);
|
||||
}
|
||||
bar.RecalcLayout();
|
||||
}
|
||||
}
|
||||
|
||||
if (bar.CheckedButton == null && bar.Items.Count > 0 && bar.Items[0] is ButtonItem)
|
||||
{
|
||||
ButtonItem buttonItem = (ButtonItem)bar.Items[0];
|
||||
buttonItem.Checked = true;
|
||||
}
|
||||
}
|
||||
|
||||
protected override void PreFilterProperties(IDictionary properties)
|
||||
{
|
||||
base.PreFilterProperties(properties);
|
||||
properties["Expanded"] = TypeDescriptor.CreateProperty(typeof(NavigationPaneDesigner), (PropertyDescriptor)properties["Expanded"], new Attribute[]
|
||||
{
|
||||
new DefaultValueAttribute(true),
|
||||
new BrowsableAttribute(true),
|
||||
new CategoryAttribute("Title"),
|
||||
new DescriptionAttribute("Indicates whether navigation pane can be collapsed.")});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets whether navigation pane is expanded. Default value is true.
|
||||
/// When control is collapsed it is reduced in size so it consumes less space.
|
||||
/// </summary>
|
||||
[Browsable(true), Category("Title"), DefaultValue(true), Description("Indicates whether navigation pane can be collapsed.")]
|
||||
public bool Expanded
|
||||
{
|
||||
get { return (bool)ShadowProperties["Expanded"]; }
|
||||
set
|
||||
{
|
||||
// this value is not passed to the actual control at design-time
|
||||
this.ShadowProperties["Expanded"] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user