using System.ComponentModel;
using System.Drawing;
namespace DevComponents.DotNetBar.SuperGrid.Style
{
///
/// Represents the visual style of a Row.
///
[ToolboxItem(false), DesignTimeVisible(false)]
[TypeConverter(typeof(BlankExpandableObjectConverter))]
public class BaseRowHeaderVisualStyle : BaseVisualStyle
{
#region Static data
///
/// Empty
///
public static BaseRowHeaderVisualStyle Empty
{
get { return (new BaseRowHeaderVisualStyle()); }
}
#endregion
#region Private variables
private Background _Background;
private Color _BorderHighlightColor = Color.Empty;
private Font _Font;
private Color _TextColor = Color.Empty;
private Tbool _AllowWrap = Tbool.NotSet;
private Alignment _TextAlignment = Alignment.NotSet;
#endregion
#region Public properties
#region AllowWrap
///
/// Gets or sets whether text wrapping is permitted
///
[DefaultValue(Tbool.NotSet), Category("Appearance")]
[Description("Indicates whether text wrapping is permitted.")]
public Tbool AllowWrap
{
get { return (_AllowWrap); }
set
{
if (_AllowWrap != value)
{
_AllowWrap = value;
OnPropertyChangedEx("AllowWrap", VisualChangeType.Render);
}
}
}
#endregion
#region Background
///
/// Gets or sets the style background.
///
[Description("Indicates whether the style background")]
public Background Background
{
get
{
if (_Background == null)
{
_Background = Background.Empty;
UpdateChangeHandler(null, _Background);
}
return (_Background);
}
set
{
if (_Background != value)
{
UpdateChangeHandler(_Background, value);
_Background = value;
OnPropertyChangedEx("Background", VisualChangeType.Render);
}
}
}
///
/// Gets whether property should be serialized.
///
[EditorBrowsable(EditorBrowsableState.Never)]
private bool ShouldSerializeBackground()
{
return (_Background != null && _Background.IsEmpty == false);
}
///
/// Resets property to its default value.
///
[EditorBrowsable(EditorBrowsableState.Never)]
private void ResetBackground()
{
Background = null;
}
#endregion
#region BorderHighlightColor
///
/// Gets or sets the border Highlight color.
///
[Description("Indicates whether the border Highlight color")]
public Color BorderHighlightColor
{
get { return (_BorderHighlightColor); }
set
{
if (_BorderHighlightColor != value)
{
_BorderHighlightColor = value;
OnPropertyChangedEx("BorderHighlightColor", VisualChangeType.Render);
}
}
}
///
/// Gets whether property should be serialized.
///
[EditorBrowsable(EditorBrowsableState.Never)]
private bool ShouldSerializeBorderHighlightColor()
{
return (_BorderHighlightColor.IsEmpty == false);
}
///
/// Resets property to its default value.
///
[EditorBrowsable(EditorBrowsableState.Never)]
private void ResetBorderHighlightColor()
{
_BorderHighlightColor = Color.Empty;
}
#endregion
#region Font
///
/// Gets or sets the style Font.
///
[DefaultValue(null)]
[Description("Indicates the RowHeader Font")]
public Font Font
{
get { return (_Font); }
set
{
if (_Font != value)
{
_Font = value;
OnPropertyChangedEx("Font", VisualChangeType.Layout);
}
}
}
#endregion
#region IsEmpty
///
/// IsEmpty
///
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public override bool IsEmpty
{
get
{
return ((_Background == null || _Background.IsEmpty) &&
_BorderHighlightColor == Color.Empty &&
_Font == null && TextColor == Color.Empty && base.IsEmpty);
}
}
#endregion
#region TextAlignment
///
/// Gets or sets the alignment of the header text
///
[DefaultValue(Alignment.NotSet), Category("Appearance")]
[Description("Indicates the alignment of the header text.")]
public Alignment TextAlignment
{
get { return (_TextAlignment); }
set
{
if (_TextAlignment != value)
{
_TextAlignment = value;
OnPropertyChangedEx("TextAlignment", VisualChangeType.Render);
}
}
}
#endregion
#region TextColor
///
/// Gets or sets the Text color
///
[Description("Indicates the Text color")]
public Color TextColor
{
get { return (_TextColor); }
set
{
if (_TextColor != value)
{
_TextColor = value;
OnPropertyChangedEx("TextColor", VisualChangeType.Render);
}
}
}
///
/// Gets whether property should be serialized.
///
[EditorBrowsable(EditorBrowsableState.Never)]
private bool ShouldSerializeTextColor()
{
return (_TextColor.IsEmpty == false);
}
///
/// Resets property to its default value.
///
[EditorBrowsable(EditorBrowsableState.Never)]
private void ResetTextColor()
{
_TextColor = Color.Empty;
}
#endregion
#endregion
#region GetTextFormatFlags
internal eTextFormat GetTextFormatFlags()
{
eTextFormat tf = eTextFormat.WordEllipsis |
eTextFormat.NoPadding | eTextFormat.NoPrefix;
if (AllowWrap == Tbool.True)
tf |= eTextFormat.WordBreak;
switch (TextAlignment)
{
case Alignment.TopCenter:
tf |= eTextFormat.HorizontalCenter;
break;
case Alignment.TopRight:
tf |= eTextFormat.Right;
break;
case Alignment.MiddleLeft:
tf |= eTextFormat.VerticalCenter;
break;
case Alignment.NotSet:
case Alignment.MiddleCenter:
tf |= eTextFormat.HorizontalCenter;
tf |= eTextFormat.VerticalCenter;
break;
case Alignment.MiddleRight:
tf |= eTextFormat.Right;
tf |= eTextFormat.VerticalCenter;
break;
case Alignment.BottomLeft:
tf |= eTextFormat.Bottom;
break;
case Alignment.BottomCenter:
tf |= eTextFormat.Bottom;
tf |= eTextFormat.HorizontalCenter;
break;
case Alignment.BottomRight:
tf |= eTextFormat.Bottom;
tf |= eTextFormat.Right;
break;
}
return (tf);
}
#endregion
#region ApplyStyle
///
/// Applies the style to instance of this style.
///
/// Style to apply.
public void ApplyStyle(BaseRowHeaderVisualStyle style)
{
if (style != null)
{
base.ApplyStyle(style);
if (style.Font != null)
_Font = style.Font;
if (style.TextColor.IsEmpty == false)
_TextColor = style._TextColor;
if (style.Background != null && style.Background.IsEmpty == false)
Background = style.Background.Copy();
if (style.BorderHighlightColor.IsEmpty == false)
BorderHighlightColor = style.BorderHighlightColor;
if (style.AllowWrap != Tbool.NotSet)
_AllowWrap = style.AllowWrap;
if (style.TextAlignment != Alignment.NotSet)
_TextAlignment = style.TextAlignment;
}
}
#endregion
#region Copy
///
/// Returns the copy of the style.
///
/// Copy of the style.
public new BaseRowHeaderVisualStyle Copy()
{
BaseRowHeaderVisualStyle style = new BaseRowHeaderVisualStyle();
CopyTo(style);
return (style);
}
#endregion
#region CopyTo
///
/// Returns the copy of the style.
///
/// Copy of the style.
public void CopyTo(BaseRowHeaderVisualStyle copy)
{
base.CopyTo(copy);
if (_Font != null)
copy.Font = (Font)_Font.Clone();
if (_TextColor.IsEmpty == false)
copy.TextColor = _TextColor;
copy.BorderHighlightColor = BorderHighlightColor;
if (_Background != null)
copy.Background = _Background.Copy();
copy.TextAlignment = _TextAlignment;
copy.AllowWrap = _AllowWrap;
}
#endregion
#region IDisposable
///
/// Dispose
///
public override void Dispose()
{
Background = null;
base.Dispose();
}
#endregion
}
}