130 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			130 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Windows.Forms.Design;
 | 
						|
using System.Collections;
 | 
						|
using System.ComponentModel.Design;
 | 
						|
using System.Windows.Forms;
 | 
						|
 | 
						|
namespace DevComponents.DotNetBar.Design
 | 
						|
{
 | 
						|
	#region TabControlPanelDesigner
 | 
						|
	/// <summary>
 | 
						|
	/// Designer for Tab Control Panel.
 | 
						|
	/// </summary>
 | 
						|
	public class TabControlPanelDesigner:PanelExDesigner
 | 
						|
	{
 | 
						|
		public override SelectionRules SelectionRules
 | 
						|
		{
 | 
						|
			get{return (SelectionRules.Locked | SelectionRules.Visible);}
 | 
						|
		}
 | 
						|
 | 
						|
#if FRAMEWORK20
 | 
						|
        public override void InitializeNewComponent(IDictionary defaultValues)
 | 
						|
        {
 | 
						|
            base.InitializeNewComponent(defaultValues);
 | 
						|
            SetDesignTimeDefaults();
 | 
						|
        }
 | 
						|
#else
 | 
						|
		public override void OnSetComponentDefaults()
 | 
						|
		{
 | 
						|
			base.OnSetComponentDefaults();
 | 
						|
			SetDesignTimeDefaults();
 | 
						|
		}
 | 
						|
#endif
 | 
						|
 | 
						|
		private void SetDesignTimeDefaults()
 | 
						|
		{
 | 
						|
			PanelEx p = this.Control as PanelEx;
 | 
						|
			if (p == null)
 | 
						|
				return;
 | 
						|
			p.ApplyLabelStyle();
 | 
						|
			p.Text = "";
 | 
						|
		}
 | 
						|
 | 
						|
        public override DesignerVerbCollection Verbs
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                DesignerVerb[] verbs;
 | 
						|
                verbs = new DesignerVerb[]
 | 
						|
				{
 | 
						|
                    new DesignerVerb("Next Tab", new EventHandler(SelectNextTab)),
 | 
						|
                    new DesignerVerb("Previous Tab", new EventHandler(SelectPreviousTab)),
 | 
						|
                    new DesignerVerb("Create New Tab", new EventHandler(CreateNewTab))
 | 
						|
				};
 | 
						|
                return new DesignerVerbCollection(verbs);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        protected virtual void CreateNewTab(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            TabControlPanel cp = this.Control as TabControlPanel;
 | 
						|
            if (cp == null || !(cp.Parent is TabControl))
 | 
						|
                return;
 | 
						|
 | 
						|
            IDesignerHost dh = (IDesignerHost)GetService(typeof(IDesignerHost));
 | 
						|
            TabControl tabControl = cp.Parent as TabControl;
 | 
						|
            if (tabControl == null || dh == null)
 | 
						|
                return;
 | 
						|
            DesignerTransaction dt = dh.CreateTransaction();
 | 
						|
            try
 | 
						|
            {
 | 
						|
                IComponentChangeService change = this.GetService(typeof(IComponentChangeService)) as IComponentChangeService;
 | 
						|
                if (change != null)
 | 
						|
                    change.OnComponentChanging(this.Component, null);
 | 
						|
 | 
						|
                TabItem tab = dh.CreateComponent(typeof(TabItem)) as TabItem;
 | 
						|
                tab.Text = tab.Name;
 | 
						|
 | 
						|
                TabControlPanel panel = dh.CreateComponent(typeof(TabControlPanel)) as TabControlPanel;
 | 
						|
                tabControl.ApplyDefaultPanelStyle(panel);
 | 
						|
                tab.AttachedControl = panel;
 | 
						|
                panel.TabItem = tab;
 | 
						|
 | 
						|
                tabControl.Tabs.Add(tab);
 | 
						|
                tabControl.Controls.Add(panel);
 | 
						|
                panel.Dock = DockStyle.Fill;
 | 
						|
                panel.SendToBack();
 | 
						|
 | 
						|
                tabControl.RecalcLayout();
 | 
						|
                tabControl.SelectedTab = tab;
 | 
						|
 | 
						|
                if (change != null)
 | 
						|
                    change.OnComponentChanged(this.Component, null, null, null);
 | 
						|
 | 
						|
                if (change != null)
 | 
						|
                {
 | 
						|
                    change.OnComponentChanging(panel, null);
 | 
						|
                    change.OnComponentChanged(panel, null, null, null);
 | 
						|
                }
 | 
						|
            }
 | 
						|
            catch
 | 
						|
            {
 | 
						|
                dt.Cancel();
 | 
						|
            }
 | 
						|
            finally
 | 
						|
            {
 | 
						|
                if (!dt.Canceled) dt.Commit();
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        private void SelectNextTab(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            TabControlPanel panel = this.Control as TabControlPanel;
 | 
						|
            if (panel == null || !(panel.Parent is TabControl))
 | 
						|
                return;
 | 
						|
            TabControl tc = panel.Parent as TabControl;
 | 
						|
            tc.SelectNextTab();
 | 
						|
        }
 | 
						|
 | 
						|
        private void SelectPreviousTab(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            TabControlPanel panel = this.Control as TabControlPanel;
 | 
						|
            if (panel == null || !(panel.Parent is TabControl))
 | 
						|
                return;
 | 
						|
            TabControl tc = panel.Parent as TabControl;
 | 
						|
            tc.SelectPreviousTab();
 | 
						|
        }
 | 
						|
	}
 | 
						|
	#endregion
 | 
						|
}
 |