internal static void AddTab(DetailsTemplatesSurface designSurface)
 {
     if (designSurface != null)
     {
         IDesignerHost designerHost = designSurface.GetService(typeof(IDesignerHost)) as IDesignerHost;
         if (designerHost != null)
         {
             DesignerTransaction designerTransaction = null;
             try
             {
                 designerTransaction = designerHost.CreateTransaction("TabControlAddTabPage" + designSurface.TemplateTab.Site.Name);
                 Hashtable hashtable = new Hashtable();
                 hashtable["Parent"]       = designSurface.TemplateTab;
                 hashtable["TabPageIndex"] = designSurface.TemplateTab.SelectedIndex + 1;
                 ToolboxItem toolboxItem = new ToolboxItem(typeof(CustomTabPage));
                 toolboxItem.CreateComponents(designerHost, hashtable);
             }
             finally
             {
                 if (designerTransaction != null)
                 {
                     designerTransaction.Commit();
                 }
             }
         }
     }
 }
        private static void RemoveTab(DetailsTemplatesSurface designSurface)
        {
            UIService     uiservice    = null;
            IDesignerHost designerHost = designSurface.GetService(typeof(IDesignerHost)) as IDesignerHost;

            if (designerHost != null)
            {
                uiservice = (designerHost.GetService(typeof(UIService)) as UIService);
            }
            if (uiservice != null)
            {
                if (designSurface.TemplateTab.Controls.Count <= 1)
                {
                    uiservice.ShowMessage(Strings.CannotDeletePage);
                    return;
                }
                TabPage selectedTab = designSurface.TemplateTab.SelectedTab;
                if (selectedTab != null)
                {
                    DialogResult dialogResult = uiservice.ShowMessage(Strings.ConfirmDeleteTab(selectedTab.Text), UIService.DefaultCaption, MessageBoxButtons.OKCancel);
                    if (dialogResult == DialogResult.OK)
                    {
                        DesignerTransaction designerTransaction = null;
                        try
                        {
                            designerTransaction = designerHost.CreateTransaction("TabControlRemoveTabPage" + designSurface.TemplateTab.Site.Name);
                            designerHost.DestroyComponent(selectedTab);
                        }
                        finally
                        {
                            if (designerTransaction != null)
                            {
                                designerTransaction.Commit();
                            }
                        }
                        designSurface.DataContext.IsDirty = true;
                    }
                }
            }
        }