249 lines
6.9 KiB
C#

using System;
using System.ComponentModel;
using System.Drawing;
namespace DevComponents.DotNetBar
{
/// <summary>
/// Represents colors for the active tab.
/// </summary>
[ToolboxItem(false), TypeConverter(typeof(System.ComponentModel.ExpandableObjectConverter))]
public class TabColors
{
#region Events
/// <summary>
/// Occurs after color property has changed.
/// </summary>
public event EventHandler ColorChanged;
#endregion
#region Private Variables
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_BorderColor=Color.Empty;
private Color m_TextColor=Color.Empty;
private BackgroundColorBlendCollection m_BackgroundColorBlend = new BackgroundColorBlendCollection();
#endregion
#region Internal Implementation
/// <summary>
/// Creates new instance of the object.
/// </summary>
public TabColors(){}
/// <summary>
/// Gets or sets the background color of the tab when inactive.
/// </summary>
[Browsable(true),Description("Indicates the inactive tab background color."),Category("Style")]
public Color BackColor
{
get {return m_BackColor;}
set
{
m_BackColor=value;
this.Refresh();
}
}
/// <summary>
/// Returns whether property should be serialized.
/// </summary>
/// <returns>true if property should be serialized otherwise false.</returns>
[Browsable(false),EditorBrowsable(EditorBrowsableState.Never)]
public bool ShouldSerializeBackColor()
{
return !m_BackColor.IsEmpty;
}
/// <summary>
/// Resets property to the default value.
/// </summary>
[Browsable(false),EditorBrowsable(EditorBrowsableState.Never)]
public void ResetBackColor()
{
BackColor=Color.Empty;
}
/// <summary>
/// Gets or sets the target gradient background color of the tab when inactive.
/// </summary>
[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();
}
}
/// <summary>
/// Returns whether property should be serialized.
/// </summary>
/// <returns>true if property should be serialized otherwise false.</returns>
[Browsable(false),EditorBrowsable(EditorBrowsableState.Never)]
public bool ShouldSerializeBackColor2()
{
return !m_BackColor2.IsEmpty;
}
/// <summary>
/// Resets property to the default value.
/// </summary>
[Browsable(false),EditorBrowsable(EditorBrowsableState.Never)]
public void ResetBackColor2()
{
BackColor2=Color.Empty;
}
/// <summary>
/// Gets or sets the gradient angle.
/// </summary>
[Browsable(true),Description("Indicates the gradient angle."),Category("Style"),DefaultValue(90)]
public int BackColorGradientAngle
{
get {return m_BackColorGradientAngle;}
set {m_BackColorGradientAngle=value;this.Refresh();}
}
/// <summary>
/// Gets the collection that defines the multi-color gradient background for tab item..
/// </summary>
[Browsable(true), DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Description("Collection that defines the multicolor gradient background.")]
public BackgroundColorBlendCollection BackgroundColorBlend
{
get { return m_BackgroundColorBlend; }
}
/// <summary>
/// Gets or sets the light border color when tab is inactive.
/// </summary>
[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();
}
}
/// <summary>
/// Returns whether property should be serialized.
/// </summary>
/// <returns>true if property should be serialized otherwise false.</returns>
[Browsable(false),EditorBrowsable(EditorBrowsableState.Never)]
public bool ShouldSerializeLightBorderColor()
{
return !m_LightBorderColor.IsEmpty;
}
/// <summary>
/// Resets property to the default value.
/// </summary>
[Browsable(false),EditorBrowsable(EditorBrowsableState.Never)]
public void ResetLightBorderColor()
{
LightBorderColor=Color.Empty;
}
/// <summary>
/// Gets or sets the dark border color when tab is inactive.
/// </summary>
[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();
}
}
/// <summary>
/// Returns whether property should be serialized.
/// </summary>
/// <returns>true if property should be serialized otherwise false.</returns>
[Browsable(false),EditorBrowsable(EditorBrowsableState.Never)]
public bool ShouldSerializeDarkBorderColor()
{
return !m_DarkBorderColor.IsEmpty;
}
/// <summary>
/// Resets property to the default value.
/// </summary>
[Browsable(false),EditorBrowsable(EditorBrowsableState.Never)]
public void ResetDarkBorderColor()
{
DarkBorderColor=Color.Empty;
}
/// <summary>
/// Gets or sets the border color when tab is inactive.
/// </summary>
[Browsable(true),Description("Indicates the inactive tab border color."),Category("Style")]
public Color BorderColor
{
get {return m_BorderColor;}
set
{
m_BorderColor=value;
this.Refresh();
}
}
/// <summary>
/// Returns whether property should be serialized.
/// </summary>
/// <returns>true if property should be serialized otherwise false.</returns>
[Browsable(false),EditorBrowsable(EditorBrowsableState.Never)]
public bool ShouldSerializeBorderColor()
{
return !m_BorderColor.IsEmpty;
}
/// <summary>
/// Resets property to the default value.
/// </summary>
[Browsable(false),EditorBrowsable(EditorBrowsableState.Never)]
public void ResetBorderColor()
{
BorderColor=Color.Empty;
}
/// <summary>
/// Gets or sets the text color when tab is inactive.
/// </summary>
[Browsable(true),Description("Indicates the inactive tab text color."),Category("Style")]
public Color TextColor
{
get {return m_TextColor;}
set
{
m_TextColor=value;
this.Refresh();
}
}
/// <summary>
/// Returns whether property should be serialized.
/// </summary>
/// <returns>true if property should be serialized otherwise false.</returns>
[Browsable(false),EditorBrowsable(EditorBrowsableState.Never)]
public bool ShouldSerializeTextColor()
{
return !m_TextColor.IsEmpty;
}
/// <summary>
/// Resets property to the default value.
/// </summary>
[Browsable(false),EditorBrowsable(EditorBrowsableState.Never)]
public void ResetTextColor()
{
TextColor=Color.Empty;
}
private void Refresh()
{
if(ColorChanged!=null)
ColorChanged(this,new EventArgs());
}
#endregion
}
}