using System; using System.ComponentModel; using System.Collections; using System.Diagnostics; using System.Drawing; using System.Windows.Forms; namespace DevComponents.DotNetBar { /// /// Represents the Tab on the Tab-Strip control. /// [ToolboxItem(false),System.Runtime.InteropServices.ComVisible(false)] public class TabPanel : System.Windows.Forms.Panel { private int m_ImageIndex=-1; private System.Drawing.Image m_Image; private System.Drawing.Icon m_Icon; private string m_Text=""; private TabControl m_Parent=null; private bool m_Visible=true; private Rectangle m_TabDisplayRectangle=Rectangle.Empty; private Color m_BackColor=Color.Empty; private Color m_BackColor2=Color.Empty; private int m_BackColorGradientAngle=90; private Color m_LightBorderColor=Color.Empty; private Color m_DarkBorderColor=Color.Empty; private Color m_TextColor=Color.Empty; /// /// Default constructor. /// /// Container object. public TabPanel(System.ComponentModel.IContainer container) { container.Add(this); } /// /// Default constructor. /// public TabPanel() { } /// /// Gets or sets the tab Image index. /// [Browsable(true),DevCoBrowsable(true),DefaultValue(-1),Category("Appearance"),Description("Indicates the tab image index")] public int ImageIndex { get {return m_ImageIndex;} set { if(m_ImageIndex==value) return; m_ImageIndex=value; if(m_Parent!=null) m_Parent.NeedRecalcSize=true; Refresh(); } } [Browsable(false),DevCoBrowsable(false),EditorBrowsable(EditorBrowsableState.Never)] public void ResetImageIndex() { m_ImageIndex=-1; } /// /// Gets or sets the tab image. /// [Browsable(true),DevCoBrowsable(true),DefaultValue(null),Category("Appearance"),Description("Indicates the tab image.")] public System.Drawing.Image Image { get {return m_Image;} set { if(m_Image==value) return; m_Image=value; if(m_Parent!=null) m_Parent.NeedRecalcSize=true; Refresh(); } } [Browsable(false),DevCoBrowsable(false),EditorBrowsable(EditorBrowsableState.Never)] public void ResetImage() { m_Image=null; } /// /// Gets or sets the tab icon. Icon has same functionality as Image except that it support Alpha blending. /// [Browsable(true),DevCoBrowsable(true),DefaultValue(null),Category("Appearance"),Description("Indicates the tab icon. Icon has same functionality as Image except that it support Alpha blending.")] public System.Drawing.Icon Icon { get {return m_Icon;} set { if(m_Icon==value) return; m_Icon=value; if(m_Parent!=null) m_Parent.NeedRecalcSize=true; Refresh(); } } [Browsable(false),DevCoBrowsable(false),EditorBrowsable(EditorBrowsableState.Never)] public void ResetIcon() { m_Icon=null; } /// /// Gets or sets the text displayed on the tab. /// [Browsable(true),DevCoBrowsable(true),Category("Appearance"),Description("Indicates the text displayed on the tab.")] public new string Text { get {return m_Text;} set { if(m_Text==value) return; m_Text=value; if(m_Parent!=null) m_Parent.NeedRecalcSize=true; Refresh(); } } /// /// Gets or sets whether tab is visible. /// [Browsable(true),DevCoBrowsable(true),DefaultValue(true),Category("Behavior"),Description("Indicates whether the tab is visible.")] public bool Visible { get{return m_Visible;} set { if(m_Visible==value) return; m_Visible=value; if(m_Parent!=null) m_Parent.NeedRecalcSize=true; Refresh(); } } private void Refresh() { if(m_Parent!=null) m_Parent.Refresh(); } /// /// Gets the display bounds of the tab. /// [Browsable(false),DevCoBrowsable(false)] public Rectangle TabDisplayRectangle { get {return m_TabDisplayRectangle;} } internal Rectangle _TabDisplayRectangle { get {return m_TabDisplayRectangle;} set {m_TabDisplayRectangle=value;} } internal System.Drawing.Image GetImage() { if(m_Image!=null) return m_Image; if(m_ImageIndex>=0 && m_Parent!=null && m_Parent.ImageList!=null && m_Parent.ImageList.Images.Count /// Gets or sets the target gradient background color of the tab when inactive. /// [Browsable(true),Description("Indicates the inactive tab target gradient background color."),Category("Style")] public Color BackColor2 { get {return m_BackColor2;} set { m_BackColor2=value; this.Refresh(); } } [Browsable(false),EditorBrowsable(EditorBrowsableState.Never)] public bool ShouldSerializeBackColor2() { return !m_BackColor2.IsEmpty; } [Browsable(false),EditorBrowsable(EditorBrowsableState.Never)] public void ResetBackColor2() { BackColor2=Color.Empty; } /// /// Gets or sets the gradient angle. /// [Browsable(true),Description("Indicates the gradient angle."),Category("Style"),DefaultValue(90)] public int BackColorGradientAngle { get {return m_BackColorGradientAngle;} set {m_BackColorGradientAngle=value;this.Refresh();} } /// /// Gets or sets the light border color when tab is inactive. /// [Browsable(true),Description("Indicates the inactive tab light border color."),Category("Style")] public Color LightBorderColor { get {return m_LightBorderColor;} set { m_LightBorderColor=value; this.Refresh(); } } [Browsable(false),EditorBrowsable(EditorBrowsableState.Never)] public bool ShouldSerializeLightBorderColor() { return !m_LightBorderColor.IsEmpty; } [Browsable(false),EditorBrowsable(EditorBrowsableState.Never)] public void ResetLightBorderColor() { LightBorderColor=Color.Empty; } /// /// Gets or sets the dark border color when tab is inactive. /// [Browsable(true),Description("Indicates the inactive tab dark border color."),Category("Style")] public Color DarkBorderColor { get {return m_DarkBorderColor;} set { m_DarkBorderColor=value; this.Refresh(); } } [Browsable(false),EditorBrowsable(EditorBrowsableState.Never)] public bool ShouldSerializeDarkBorderColor() { return !m_DarkBorderColor.IsEmpty; } [Browsable(false),EditorBrowsable(EditorBrowsableState.Never)] public void ResetDarkBorderColor() { DarkBorderColor=Color.Empty; } /// /// Gets or sets the text color when tab is inactive. /// [Browsable(true),Description("Indicates the inactive tab text color."),Category("Style")] public Color TextColor { get {return m_TextColor;} set { m_TextColor=value; this.Refresh(); } } [Browsable(false),EditorBrowsable(EditorBrowsableState.Never)] public bool ShouldSerializeTextColor() { return !m_TextColor.IsEmpty; } [Browsable(false),EditorBrowsable(EditorBrowsableState.Never)] public void ResetTextColor() { TextColor=Color.Empty; } public override string ToString() { return m_Text; } } }