119 lines
4.3 KiB
C#
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
|
|
}
|
|
}
|