using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Windows.Forms; namespace TweetDuck.Core.Controls{ sealed partial class TabPanel : UserControl{ public Panel Content => panelContent; public IEnumerable<TabButton> Buttons => panelButtons.Controls.Cast<TabButton>(); public TabButton ActiveButton { get; private set; } private int btnWidth; public TabPanel(){ InitializeComponent(); } public void SetupTabPanel(int buttonWidth){ this.btnWidth = buttonWidth; } public TabButton AddButton(string title, Action callback){ TabButton button = new TabButton(); button.SetupButton((btnWidth-1)*panelButtons.Controls.Count, btnWidth, title, callback); button.Click += (sender, args) => SelectTab((TabButton)sender); panelButtons.Controls.Add(button); return button; } public void SelectTab(TabButton button){ if (ActiveButton != null){ ActiveButton.BackColor = SystemColors.Control; } button.BackColor = Color.White; button.Callback(); ActiveButton = button; } public void ReplaceContent(Control newControl){ newControl.Dock = DockStyle.Fill; Content.SuspendLayout(); Content.Controls.Clear(); Content.Controls.Add(newControl); Content.ResumeLayout(true); } } }