122 lines
3.9 KiB
C#

using System;
using System.Text;
using System.ComponentModel.Design;
using System.Windows.Forms.Design;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace DevComponents.DotNetBar.Design
{
/// <summary>
/// Represents designer for RibbonPanel control.
/// </summary>
public class RibbonPanelDesigner:PanelControlDesigner
{
#region Internal Implementation
public override SelectionRules SelectionRules
{
get{return (SelectionRules.Locked | SelectionRules.Visible);}
}
protected override void SetDesignTimeDefaults()
{
RibbonPanel p = this.Control as RibbonPanel;
#if FRAMEWORK20
p.Padding = new System.Windows.Forms.Padding(3, 0, 3, 3);
#else
p.DockPadding.Left = 3;
p.DockPadding.Right = 3;
p.DockPadding.Bottom = 3;
#endif
}
public override DesignerVerbCollection Verbs
{
get
{
DesignerVerbCollection verbs=new DesignerVerbCollection(new DesignerVerb[]
{
new DesignerVerb("Create RibbonBar", new EventHandler(CreateRibbonBar)),
new DesignerVerb("Layout Ribbons", new EventHandler(LayoutRibbons))
});
//verbs.AddRange(base.Verbs);
return verbs;
}
}
private void LayoutRibbons(object sender, EventArgs e)
{
RibbonPanel panel = this.Control as RibbonPanel;
if (panel == null)
return;
IDesignerHost host = this.GetService(typeof(IDesignerHost)) as IDesignerHost;
DesignerTransaction trans=null;
if (host != null)
trans=host.CreateTransaction("Rendering Layout");
try
{
panel.LayoutRibbons();
}
finally
{
if (trans != null)
trans.Commit();
}
}
private void CreateRibbonBar(object sender, EventArgs e)
{
RibbonPanel panel = this.Control as RibbonPanel;
if (panel == null)
return;
IDesignerHost dh = (IDesignerHost)GetService(typeof(IDesignerHost));
if (dh != null)
{
DesignerTransaction trans = dh.CreateTransaction("Create Default Ribbon Bar");
IComponentChangeService cc = (IComponentChangeService)GetService(typeof(IComponentChangeService));
try
{
RibbonBar bar = dh.CreateComponent(typeof(RibbonBar)) as RibbonBar;
TypeDescriptor.GetProperties(bar)["Width"].SetValue(bar, 100);
#if !TRIAL
string key = RibbonBarDesigner.GetLicenseKey();
bar.LicenseKey = key;
#endif
TypeDescriptor.GetProperties(bar)["Text"].SetValue(bar, bar.Name);
cc.OnComponentChanging(panel, TypeDescriptor.GetProperties(typeof(Control))["Controls"]);
panel.Controls.Add(bar);
bar.Dock = DockStyle.Left;
bar.BringToFront();
cc.OnComponentChanged(panel, TypeDescriptor.GetProperties(typeof(Control))["Controls"], null, null);
}
catch
{
trans.Cancel();
throw;
}
finally
{
if (!trans.Canceled)
trans.Commit();
}
}
}
/// <summary>
/// Draws design-time border around the panel when panel does not have one.
/// </summary>
/// <param name="g"></param>
protected override void DrawBorder(Graphics g)
{
}
#endregion
}
}