A single tab button for a single panel.
Inheritance: Open.Core.Controls.Buttons.ButtonView
 private void WirePanelEvents(bool add, TabPanel panel, TabPanelButton tab)
 {
     if (add)
     {
         panel.Disposed += HandlePanelDisposed;
         panel.VisibilityChanged += HandlePanelVisibilityChanged;
         tab.Model.IsPressedChanged += OnIsPressedChanged;
     }
     else
     {
         panel.Disposed -= HandlePanelDisposed;
         panel.VisibilityChanged -= HandlePanelVisibilityChanged;
         tab.Model.IsPressedChanged -= OnIsPressedChanged;
     }
 }
 private int GetButtonOffset(TabPanelButton tab)
 {
     int offset = 0;
     foreach (TabPanelButton item in buttonViews)
     {
         if (tab == item) return offset;
         if (item.IsVisible) offset += item.Container.GetWidth();
     }
     return offset;
 }
 private bool IsOverflowing(TabPanelButton tab, int left)
 {
     return (left + tab.Width) > (view.Container.GetWidth() - 20);
 }
 private static void Show(TabPanelButton tab)
 {
     tab.Model.IsPressed = true;
     Css.SetVisibility(tab.Panel.Div, true);
 }
 private static void Hide(TabPanelButton tab)
 {
     tab.Model.IsPressed = false;
     Css.SetVisibility(tab.Panel.Div, false);
 }
 private void HideAll(TabPanelButton exclude)
 {
     foreach (TabPanelButton tab in buttonViews)
     {
         if (tab != exclude) Hide(tab);
     }
 }
 private void Select(TabPanelButton tab)
 {
     HideAll(tab);
     Show(tab);
 }
        private void AddButton(TabPanel panel)
        {
            // Create button.
            TabPanelButton tab = new TabPanelButton(panel);
            toolbarElement.Append(tab.Container);

            // Wire up events.
            WirePanelEvents(true, panel, tab);

            // Finish up.
            buttonViews.Add(tab);
            UpdateButtonPositions();
        }