119 lines
4.3 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms.Design;
using DevComponents.DotNetBar.Controls;
using System.ComponentModel.Design;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
namespace DevComponents.DotNetBar.Design
{
public class PageSliderPageDesigner : ScrollableControlDesigner
{
#region Internal Implementation
public override DesignerVerbCollection Verbs
{
get
{
DesignerVerb[] verbs = null;
verbs = new DesignerVerb[]
{
new DesignerVerb("Move Forward", new EventHandler(MovePageForward)),
new DesignerVerb("Move Backward", new EventHandler(MovePageBackward)),
new DesignerVerb("Make First", new EventHandler(MakeFirstPage)),
new DesignerVerb("Make Last", new EventHandler(MakeLastPage))
};
return new DesignerVerbCollection(verbs);
}
}
private void MovePageTo(PageSliderPage page, PageSlider slider, int newIndex)
{
IDesignerHost dh = this.GetService(typeof(IDesignerHost)) as IDesignerHost;
IComponentChangeService cc = this.GetService(typeof(IComponentChangeService)) as IComponentChangeService;
ISelectionService ss = this.GetService(typeof(ISelectionService)) as ISelectionService;
DesignerTransaction dt = dh.CreateTransaction("Moving page");
if (cc != null)
cc.OnComponentChanging(slider, TypeDescriptor.GetProperties(slider)["Controls"]);
slider.Controls.SetChildIndex(page, newIndex);
if (cc != null)
cc.OnComponentChanged(slider, TypeDescriptor.GetProperties(slider)["Controls"], null, null);
dt.Commit();
}
private void MovePageForward(object sender, EventArgs e)
{
PageSliderPage page = this.Control as PageSliderPage;
if (page == null) return;
PageSlider slider = page.Parent as PageSlider;
if (slider == null) return;
int newIndex = slider.Controls.IndexOf(page);
if (newIndex < slider.PageCount - 1)
newIndex++;
else
newIndex = 0;
MovePageTo(page, slider, newIndex);
}
private void MovePageBackward(object sender, EventArgs e)
{
PageSliderPage page = this.Control as PageSliderPage;
if (page == null) return;
PageSlider slider = page.Parent as PageSlider;
if (slider == null) return;
int newIndex = slider.Controls.IndexOf(page);
if (newIndex > 0)
newIndex--;
else
newIndex = slider.PageCount - 1;
MovePageTo(page, slider, newIndex);
}
private void MakeFirstPage(object sender, EventArgs e)
{
PageSliderPage page = this.Control as PageSliderPage;
if (page == null) return;
PageSlider slider = page.Parent as PageSlider;
if (slider == null) return;
MovePageTo(page, slider, 0);
}
private void MakeLastPage(object sender, EventArgs e)
{
PageSliderPage page = this.Control as PageSliderPage;
if (page == null) return;
PageSlider slider = page.Parent as PageSlider;
if (slider == null) return;
MovePageTo(page, slider, slider.PageCount - 1);
}
public override SelectionRules SelectionRules
{
get { return SelectionRules.Locked; }
}
protected override void OnPaintAdornments(PaintEventArgs pe)
{
PageSliderPage p;
p = this.Component as PageSliderPage;
if (p != null)
{
this.DrawBorder(pe.Graphics);
}
base.OnPaintAdornments(pe);
}
private void DrawBorder(Graphics g)
{
PageSliderPage panel = this.Control as PageSliderPage;
Color border = SystemColors.ControlDarkDark;
Rectangle rClient = this.Control.ClientRectangle;
Color backColor = Color.Empty;
Helpers.DrawDesignTimeSelection(g, rClient, backColor, border, 1);
}
#endregion
}
}