/// <summary>
        /// Method implementation for our "Add TabStripPage verb".
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="eevent"></param>
        private void OnAdd(object sender, EventArgs eevent)
        {
            // fetch our designer host
            IDesignerHost host = (IDesignerHost)GetService(typeof(IDesignerHost));

            if (host != null)
            {
                // Create a transaction so we're friendly to undo/redo and serialization
                DesignerTransaction t = null;
                try {
                    try {
                        t = host.CreateTransaction(TabStripControlLibrary.Properties.Resources.AddTab + Component.Site.Name);
                    }
                    catch (CheckoutException ex) {
                        if (ex == CheckoutException.Canceled)
                        {
                            return;
                        }
                        throw ex;
                    }

                    // Add a TabStripPage to the controls collection of the TabPageSwitcher

                    // Notify the TabPageSwitcher that it's control collection is changing.
                    MemberDescriptor member = TypeDescriptor.GetProperties(ControlSwitcher)["Controls"];
                    TabStripPage     page   = host.CreateComponent(typeof(TabStripPage)) as TabStripPage;
                    RaiseComponentChanging(member);

                    // add the page to the controls collection.
                    ControlSwitcher.Controls.Add(page);

                    // set the SelectedTabStripPage to the current page so that it opens correctly
                    SetProperty("SelectedTabStripPage", page);

                    // Raise event that we're done changing the controls property.
                    RaiseComponentChanged(member, null, null);

                    // if we have an associated TabStrip,
                    // add a matching Tab to the TabStrip.
                    if (ControlSwitcher.TabStrip != null)
                    {
                        // add a tab to the toolstrip designer
                        MemberDescriptor itemsProp = TypeDescriptor.GetProperties(ControlSwitcher.TabStrip)["Items"];

                        Tab tab = host.CreateComponent(typeof(Tab)) as Tab;
                        RaiseComponentChanging(itemsProp);

                        ControlSwitcher.TabStrip.Items.Add(tab);
                        RaiseComponentChanged(itemsProp, null, null);

                        SetProperty(tab, "DisplayStyle", ToolStripItemDisplayStyle.ImageAndText);
                        SetProperty(tab, "Text", tab.Name);
                        SetProperty(tab, "TabStripPage", page);
                        SetProperty(ControlSwitcher.TabStrip, "SelectedTab", tab);
                    }
                }
                finally {
                    if (t != null)
                    {
                        t.Commit();
                    }
                }
            }
        }
        private TabStripPage CreateAndRegisterEntityPage(CategoryCollection categories, IConfigurablePlugin entity, int index)
        {
            TabStripPage entityPage = new TabStripPage();
            entityPage.BaseColor = System.Drawing.Color.FromArgb(215, 227, 242);
            entityPage.BaseColorOn = System.Drawing.Color.FromArgb(215, 227, 242);
            entityPage.Dock = System.Windows.Forms.DockStyle.Fill;
            entityPage.Opacity = 255;
            entityPage.Padding = new System.Windows.Forms.Padding(0, 3, 0, 0);
            entityPage.Size = new System.Drawing.Size(784, 99);
            entityPage.Speed = 1;
            entityPage.TabIndex = index;

            RibbonPageSwitcher.Controls.Add(entityPage);

            Tab entityTab = new Tab(entity.Name);
            entityTab.AutoSize = false;
            entityTab.Checked = true;
            entityTab.CheckState = CheckState.Checked;
            entityTab.ForeColor = System.Drawing.Color.FromArgb(44, 90, 154);
            entityTab.Margin = new Padding(6, 1, 0, 2);
            entityTab.Size = new Size(73, 23);
            entityTab.Text = entity.Name;
            entityTab.TabStripPage = entityPage;

            if (entity is IInternalConfigurator)
                entityTab.Image = VisualResources.Icon_16x16_Hyphen.ToBitmap();

            RibbonStrip.Items.Add(entityTab);

            return entityPage;
        }