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