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;
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |