219 lines
7.2 KiB
C#
219 lines
7.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.ComponentModel;
|
|
using System.ComponentModel.Design;
|
|
using DevComponents.DotNetBar.Controls;
|
|
using System.Collections;
|
|
|
|
namespace DevComponents.DotNetBar.Design
|
|
{
|
|
public class PageSliderDesigner : System.Windows.Forms.Design.ControlDesigner
|
|
{
|
|
public override void Initialize(IComponent component)
|
|
{
|
|
base.Initialize(component);
|
|
if (!component.Site.DesignMode)
|
|
return;
|
|
|
|
IComponentChangeService cc = (IComponentChangeService)GetService(typeof(IComponentChangeService));
|
|
if (cc != null)
|
|
{
|
|
cc.ComponentRemoved += new ComponentEventHandler(this.OnComponentRemoved);
|
|
}
|
|
}
|
|
protected override void Dispose(bool disposing)
|
|
{
|
|
IComponentChangeService cc = (IComponentChangeService)GetService(typeof(IComponentChangeService));
|
|
if (cc != null)
|
|
{
|
|
cc.ComponentRemoved -= new ComponentEventHandler(this.OnComponentRemoved);
|
|
}
|
|
|
|
base.Dispose(disposing);
|
|
}
|
|
|
|
private void OnComponentRemoved(object sender, ComponentEventArgs e)
|
|
{
|
|
if (e.Component is PageSliderPage)
|
|
{
|
|
PageSliderPage page = e.Component as PageSliderPage;
|
|
PageSlider slider = this.Control as PageSlider;
|
|
|
|
if (page != null && slider.Controls.Contains(page))
|
|
{
|
|
IComponentChangeService cc = this.GetService(typeof(IComponentChangeService)) as IComponentChangeService;
|
|
if (cc != null)
|
|
cc.OnComponentChanging(slider, TypeDescriptor.GetProperties(slider)["Controls"]);
|
|
|
|
slider.Controls.Remove(page);
|
|
|
|
if (cc != null)
|
|
cc.OnComponentChanged(slider, TypeDescriptor.GetProperties(slider)["Controls"], null, null);
|
|
}
|
|
}
|
|
}
|
|
|
|
public override void DoDefaultAction()
|
|
{
|
|
}
|
|
|
|
public override DesignerVerbCollection Verbs
|
|
{
|
|
get
|
|
{
|
|
DesignerVerb[] verbs = null;
|
|
verbs = new DesignerVerb[]
|
|
{
|
|
new DesignerVerb("Create Page", new EventHandler(CreatePage)),
|
|
new DesignerVerb("Delete Page", new EventHandler(DeletePage)),
|
|
new DesignerVerb("Next Page", new EventHandler(NextPage)),
|
|
new DesignerVerb("Previous Page", new EventHandler(PreviousPage))
|
|
};
|
|
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()
|
|
{
|
|
}
|
|
|
|
private void CreatePage(object sender, EventArgs e)
|
|
{
|
|
IDesignerHost dh = this.GetService(typeof(IDesignerHost)) as IDesignerHost;
|
|
IComponentChangeService cc = this.GetService(typeof(IComponentChangeService)) as IComponentChangeService;
|
|
ISelectionService ss = this.GetService(typeof(ISelectionService)) as ISelectionService;
|
|
|
|
CreatePage(this.Control as PageSlider, dh, cc, ss);
|
|
}
|
|
|
|
internal static PageSliderPage CreatePage(PageSlider parent, IDesignerHost dh, IComponentChangeService cc, ISelectionService ss)
|
|
{
|
|
DesignerTransaction dt = dh.CreateTransaction();
|
|
PageSliderPage page = null;
|
|
try
|
|
{
|
|
page = dh.CreateComponent(typeof(PageSliderPage)) as PageSliderPage;
|
|
|
|
if (cc != null)
|
|
cc.OnComponentChanging(parent, TypeDescriptor.GetProperties(parent)["Controls"]);
|
|
parent.Controls.Add(page);
|
|
if (cc != null)
|
|
cc.OnComponentChanged(parent, TypeDescriptor.GetProperties(parent)["Controls"], null, null);
|
|
|
|
if (ss != null)
|
|
ss.SetSelectedComponents(new PageSliderPage[] { page }, SelectionTypes.Replace);
|
|
|
|
TypeDescriptor.GetProperties(parent)["SelectedPage"].SetValue(parent, page);
|
|
}
|
|
catch
|
|
{
|
|
dt.Cancel();
|
|
}
|
|
finally
|
|
{
|
|
if (!dt.Canceled)
|
|
dt.Commit();
|
|
}
|
|
|
|
return page;
|
|
}
|
|
|
|
private void DeletePage(object sender, EventArgs e)
|
|
{
|
|
IDesignerHost dh = this.GetService(typeof(IDesignerHost)) as IDesignerHost;
|
|
IComponentChangeService cc = this.GetService(typeof(IComponentChangeService)) as IComponentChangeService;
|
|
PageSlider w = this.Control as PageSlider;
|
|
if (w == null)
|
|
return;
|
|
DeletePage(w.SelectedPage, dh, cc);
|
|
}
|
|
|
|
internal static void DeletePage(PageSliderPage page, IDesignerHost dh, IComponentChangeService cc)
|
|
{
|
|
if (page == null || !(page.Parent is PageSlider))
|
|
return;
|
|
|
|
PageSlider slider = (PageSlider)page.Parent;
|
|
|
|
DesignerTransaction dt = dh.CreateTransaction("Deleting page");
|
|
|
|
try
|
|
{
|
|
if (cc != null)
|
|
cc.OnComponentChanging(slider, TypeDescriptor.GetProperties(slider)["Controls"]);
|
|
|
|
slider.Controls.Remove(page);
|
|
|
|
if (cc != null)
|
|
cc.OnComponentChanged(slider, TypeDescriptor.GetProperties(slider)["Controls"], null, null);
|
|
|
|
dh.DestroyComponent(page);
|
|
}
|
|
catch
|
|
{
|
|
dt.Cancel();
|
|
}
|
|
finally
|
|
{
|
|
if (!dt.Canceled)
|
|
dt.Commit();
|
|
}
|
|
}
|
|
|
|
private void NextPage(object sender, EventArgs e)
|
|
{
|
|
SelectNextPage(this.Control as PageSlider);
|
|
}
|
|
|
|
private void PreviousPage(object sender, EventArgs e)
|
|
{
|
|
SelectPreviousPage(this.Control as PageSlider);
|
|
}
|
|
|
|
internal static bool SelectNextPage(PageSlider slider)
|
|
{
|
|
if (slider == null)
|
|
return false;
|
|
if (slider.PageCount > 0)
|
|
{
|
|
if (slider.SelectedPageIndex < slider.PageCount - 1)
|
|
slider.SelectedPageIndex++;
|
|
else
|
|
slider.SelectedPageIndex = 0;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
internal static bool SelectPreviousPage(PageSlider slider)
|
|
{
|
|
if (slider == null)
|
|
return false;
|
|
if (slider.PageCount > 0)
|
|
{
|
|
if (slider.SelectedPageIndex > 0)
|
|
slider.SelectedPageIndex--;
|
|
else
|
|
slider.SelectedPageIndex = slider.PageCount - 1;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
}
|