656 lines
17 KiB
C#
656 lines
17 KiB
C#
using System;
|
|
using System.ComponentModel;
|
|
using System.Drawing;
|
|
|
|
namespace DevComponents.DotNetBar.SuperGrid.Style
|
|
{
|
|
/// <summary>
|
|
/// Represents the visual style of a Row.
|
|
/// </summary>
|
|
[ToolboxItem(false), DesignTimeVisible(false)]
|
|
[TypeConverter(typeof(BlankExpandableObjectConverter))]
|
|
public class BaseTreeButtonVisualStyle : BaseVisualStyle
|
|
{
|
|
#region Static data
|
|
|
|
///<summary>
|
|
/// Empty
|
|
///</summary>
|
|
public static BaseTreeButtonVisualStyle Empty
|
|
{
|
|
get { return (new BaseTreeButtonVisualStyle()); }
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Private variables
|
|
|
|
private Color _BorderColor = Color.Empty;
|
|
private Color _HotBorderColor = Color.Empty;
|
|
private Color _LineColor = Color.Empty;
|
|
private Color _HotLineColor = Color.Empty;
|
|
|
|
private Background _Background;
|
|
private Background _HotBackground;
|
|
|
|
#endregion
|
|
|
|
#region Public properties
|
|
|
|
#region Background
|
|
|
|
/// <summary>
|
|
/// Gets or sets the TreeButton background.
|
|
/// </summary>
|
|
[Description("Indicates the TreeButton 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);
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets whether property should be serialized.
|
|
/// </summary>
|
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
|
private bool ShouldSerializeBackground()
|
|
{
|
|
return (_Background != null && _Background.IsEmpty == false);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Resets property to its default value.
|
|
/// </summary>
|
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
|
private void ResetBackground()
|
|
{
|
|
_Background = null;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region HotBackground
|
|
|
|
/// <summary>
|
|
/// Gets or sets the Hot background.
|
|
/// </summary>
|
|
[Description("Indicates the Hot background")]
|
|
public Background HotBackground
|
|
{
|
|
get
|
|
{
|
|
if (_HotBackground == null)
|
|
{
|
|
_HotBackground = Background.Empty;
|
|
|
|
UpdateChangeHandler(null, _HotBackground);
|
|
}
|
|
|
|
return (_HotBackground);
|
|
}
|
|
|
|
set
|
|
{
|
|
if (_HotBackground != value)
|
|
{
|
|
UpdateChangeHandler(_HotBackground, value);
|
|
|
|
_HotBackground = value;
|
|
|
|
OnPropertyChangedEx("HotBackground", VisualChangeType.Render);
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets whether property should be serialized.
|
|
/// </summary>
|
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
|
private bool ShouldSerializeHotBackground()
|
|
{
|
|
return (_HotBackground != null && _HotBackground.IsEmpty == false);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Resets property to its default value.
|
|
/// </summary>
|
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
|
private void ResetHotBackground()
|
|
{
|
|
HotBackground = null;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region BorderColor
|
|
|
|
/// <summary>
|
|
/// Gets or sets the border Color
|
|
/// </summary>
|
|
[Category("Appearance")]
|
|
[Description("Indicates the border Color.")]
|
|
public Color BorderColor
|
|
{
|
|
get { return (_BorderColor); }
|
|
|
|
set
|
|
{
|
|
if (_BorderColor != value)
|
|
{
|
|
_BorderColor = value;
|
|
|
|
OnPropertyChangedEx("BorderColor", VisualChangeType.Render);
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets whether property should be serialized.
|
|
/// </summary>
|
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
|
private bool ShouldSerializeBorderColor()
|
|
{
|
|
return (_BorderColor.IsEmpty == false);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Resets property to its default value.
|
|
/// </summary>
|
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
|
private void ResetBorderColor()
|
|
{
|
|
BorderColor = Color.Empty;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region HotBorderColor
|
|
|
|
/// <summary>
|
|
/// Gets or sets the Hot border Color
|
|
/// </summary>
|
|
[Category("Appearance")]
|
|
[Description("Indicates the Hot border Color.")]
|
|
public Color HotBorderColor
|
|
{
|
|
get { return (_HotBorderColor); }
|
|
|
|
set
|
|
{
|
|
if (_HotBorderColor != value)
|
|
{
|
|
_HotBorderColor = value;
|
|
|
|
OnPropertyChangedEx("HotBorderColor", VisualChangeType.Render);
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets whether property should be serialized.
|
|
/// </summary>
|
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
|
private bool ShouldSerializeHotBorderColor()
|
|
{
|
|
return (_HotBorderColor.IsEmpty == false);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Resets property to its default value.
|
|
/// </summary>
|
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
|
private void ResetHotBorderColor()
|
|
{
|
|
HotBorderColor = Color.Empty;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region LineColor
|
|
|
|
/// <summary>
|
|
/// Gets or sets the button interior line Color
|
|
/// </summary>
|
|
[Category("Appearance")]
|
|
[Description("Indicates the button interior line Color.")]
|
|
public Color LineColor
|
|
{
|
|
get { return (_LineColor); }
|
|
|
|
set
|
|
{
|
|
if (_LineColor != value)
|
|
{
|
|
_LineColor = value;
|
|
|
|
OnPropertyChangedEx("LineColor", VisualChangeType.Render);
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets whether property should be serialized.
|
|
/// </summary>
|
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
|
private bool ShouldSerializeLineColor()
|
|
{
|
|
return (_LineColor.IsEmpty == false);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Resets property to its default value.
|
|
/// </summary>
|
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
|
private void ResetLineColor()
|
|
{
|
|
LineColor = Color.Empty;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region HotLineColor
|
|
|
|
/// <summary>
|
|
/// Gets or sets the Hot button interior line Color
|
|
/// </summary>
|
|
[Category("Appearance")]
|
|
[Description("Indicates the Hot button interior line Color.")]
|
|
public Color HotLineColor
|
|
{
|
|
get { return (_HotLineColor); }
|
|
|
|
set
|
|
{
|
|
if (_HotLineColor != value)
|
|
{
|
|
_HotLineColor = value;
|
|
|
|
OnPropertyChangedEx("HotLineColor", VisualChangeType.Render);
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets whether property should be serialized.
|
|
/// </summary>
|
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
|
private bool ShouldSerializeHotLineColor()
|
|
{
|
|
return (_HotLineColor.IsEmpty == false);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Resets property to its default value.
|
|
/// </summary>
|
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
|
private void ResetHotLineColor()
|
|
{
|
|
HotLineColor = Color.Empty;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region IsEmpty
|
|
|
|
///<summary>
|
|
/// IsEmpty
|
|
///</summary>
|
|
[Browsable(false)]
|
|
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
|
public override bool IsEmpty
|
|
{
|
|
get
|
|
{
|
|
return
|
|
((_Background == null || _Background.IsEmpty) &&
|
|
(_HotBackground == null || _HotBackground.IsEmpty) &&
|
|
(_BorderColor == Color.Empty && _HotBorderColor == Color.Empty && base.IsEmpty));
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
#region ApplyStyle
|
|
|
|
/// <summary>
|
|
/// Applies the style to instance of this style.
|
|
/// </summary>
|
|
/// <param name="style">Style to apply.</param>
|
|
public void ApplyStyle(BaseTreeButtonVisualStyle style)
|
|
{
|
|
if (style != null)
|
|
{
|
|
base.ApplyStyle(style);
|
|
|
|
if (style.BorderColor.IsEmpty == false)
|
|
BorderColor = style.BorderColor;
|
|
|
|
if (style.HotBorderColor.IsEmpty == false)
|
|
HotBorderColor = style.HotBorderColor;
|
|
|
|
if (style.Background != null && style.Background.IsEmpty == false)
|
|
Background = style.Background.Copy();
|
|
|
|
if (style.HotBackground != null && style.HotBackground.IsEmpty == false)
|
|
HotBackground = style.HotBackground.Copy();
|
|
|
|
if (style.LineColor.IsEmpty == false)
|
|
LineColor = style.LineColor;
|
|
|
|
if (style.HotLineColor.IsEmpty == false)
|
|
HotLineColor = style.HotLineColor;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Copy
|
|
|
|
/// <summary>
|
|
/// Returns the copy of the style.
|
|
/// </summary>
|
|
/// <returns>Copy of the style.</returns>
|
|
public new BaseTreeButtonVisualStyle Copy()
|
|
{
|
|
BaseTreeButtonVisualStyle style = new BaseTreeButtonVisualStyle();
|
|
|
|
CopyTo(style);
|
|
|
|
return (style);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CopyTo
|
|
|
|
/// <summary>
|
|
/// Returns the copy of the style.
|
|
/// </summary>
|
|
/// <returns>Copy of the style.</returns>
|
|
public void CopyTo(BaseTreeButtonVisualStyle copy)
|
|
{
|
|
base.CopyTo(copy);
|
|
|
|
copy.BorderColor = _BorderColor;
|
|
copy.HotBorderColor = _HotBorderColor;
|
|
copy.LineColor = _LineColor;
|
|
copy.HotLineColor = _HotLineColor;
|
|
|
|
if (Background != null)
|
|
copy.Background = _Background.Copy();
|
|
|
|
if (HotBackground != null)
|
|
copy.HotBackground = _HotBackground.Copy();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region IDisposable
|
|
|
|
/// <summary>
|
|
/// Dispose
|
|
/// </summary>
|
|
public override void Dispose()
|
|
{
|
|
Background = null;
|
|
HotBackground = null;
|
|
|
|
base.Dispose();
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
|
|
/// <summary>
|
|
/// Represents the visual style of a Row.
|
|
/// </summary>
|
|
[ToolboxItem(false), DesignTimeVisible(false)]
|
|
[TypeConverter(typeof(BlankExpandableObjectConverter))]
|
|
public class TreeButtonVisualStyle : BaseVisualStyle
|
|
{
|
|
#region Static data
|
|
|
|
///<summary>
|
|
/// Empty
|
|
///</summary>
|
|
public static TreeButtonVisualStyle Empty
|
|
{
|
|
get { return (new TreeButtonVisualStyle()); }
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Private variables
|
|
|
|
private BaseTreeButtonVisualStyle _ExpandButton;
|
|
private BaseTreeButtonVisualStyle _CollapseButton;
|
|
|
|
#endregion
|
|
|
|
#region Public properties
|
|
|
|
#region CollapseButton
|
|
|
|
/// <summary>
|
|
/// Gets or sets the CollapseButton.
|
|
/// </summary>
|
|
[Description("Indicates the CollapseButton")]
|
|
public BaseTreeButtonVisualStyle CollapseButton
|
|
{
|
|
get
|
|
{
|
|
if (_CollapseButton == null)
|
|
{
|
|
_CollapseButton = BaseTreeButtonVisualStyle.Empty;
|
|
|
|
UpdateChangeHandler(null, _CollapseButton);
|
|
}
|
|
|
|
return (_CollapseButton);
|
|
}
|
|
|
|
set
|
|
{
|
|
if (_CollapseButton != value)
|
|
{
|
|
UpdateChangeHandler(_CollapseButton, value);
|
|
|
|
_CollapseButton = value;
|
|
|
|
OnPropertyChangedEx("CollapseButton", VisualChangeType.Render);
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets whether property should be serialized.
|
|
/// </summary>
|
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
|
private bool ShouldSerializeCollapseButton()
|
|
{
|
|
return (_CollapseButton != null && _CollapseButton.IsEmpty == false);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Resets property to its default value.
|
|
/// </summary>
|
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
|
private void ResetCollapseButton()
|
|
{
|
|
CollapseButton = null;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ExpandButton
|
|
|
|
/// <summary>
|
|
/// Gets or sets the ExpandButton.
|
|
/// </summary>
|
|
[Description("Indicates the ExpandButton")]
|
|
public BaseTreeButtonVisualStyle ExpandButton
|
|
{
|
|
get
|
|
{
|
|
if (_ExpandButton == null)
|
|
{
|
|
_ExpandButton = BaseTreeButtonVisualStyle.Empty;
|
|
|
|
UpdateChangeHandler(null, _ExpandButton);
|
|
}
|
|
|
|
return (_ExpandButton);
|
|
}
|
|
|
|
set
|
|
{
|
|
if (_ExpandButton != value)
|
|
{
|
|
UpdateChangeHandler(_ExpandButton, value);
|
|
|
|
_ExpandButton = value;
|
|
|
|
OnPropertyChangedEx("ExpandButton", VisualChangeType.Render);
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets whether property should be serialized.
|
|
/// </summary>
|
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
|
private bool ShouldSerializeExpandButton()
|
|
{
|
|
return (_ExpandButton != null && _ExpandButton.IsEmpty == false);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Resets property to its default value.
|
|
/// </summary>
|
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
|
private void ResetExpandButton()
|
|
{
|
|
ExpandButton = null;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region IsEmpty
|
|
|
|
///<summary>
|
|
/// IsEmpty
|
|
///</summary>
|
|
[Browsable(false)]
|
|
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
|
public override bool IsEmpty
|
|
{
|
|
get
|
|
{
|
|
return
|
|
((_CollapseButton == null || _CollapseButton.IsEmpty) &&
|
|
(_ExpandButton == null || _ExpandButton.IsEmpty) && base.IsEmpty);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
#region ApplyStyle
|
|
|
|
/// <summary>
|
|
/// Applies the style to instance of this style.
|
|
/// </summary>
|
|
/// <param name="style">Style to apply.</param>
|
|
public void ApplyStyle(TreeButtonVisualStyle style)
|
|
{
|
|
if (style != null)
|
|
{
|
|
base.ApplyStyle(style);
|
|
|
|
if (style._CollapseButton != null)
|
|
CollapseButton.ApplyStyle(style._CollapseButton);
|
|
|
|
if (style._ExpandButton != null)
|
|
ExpandButton.ApplyStyle(style._ExpandButton);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Copy
|
|
|
|
/// <summary>
|
|
/// Returns the copy of the style.
|
|
/// </summary>
|
|
/// <returns>Copy of the style.</returns>
|
|
public new TreeButtonVisualStyle Copy()
|
|
{
|
|
TreeButtonVisualStyle style = new TreeButtonVisualStyle();
|
|
|
|
CopyTo(style);
|
|
|
|
return (style);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region CopyTo
|
|
|
|
/// <summary>
|
|
/// Returns the copy of the style.
|
|
/// </summary>
|
|
/// <returns>Copy of the style.</returns>
|
|
public void CopyTo(TreeButtonVisualStyle copy)
|
|
{
|
|
base.CopyTo(copy);
|
|
|
|
if (_CollapseButton != null)
|
|
copy.CollapseButton = _CollapseButton.Copy();
|
|
|
|
if (_ExpandButton != null)
|
|
copy.ExpandButton = _ExpandButton.Copy();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region IDisposable
|
|
|
|
/// <summary>
|
|
/// Dispose
|
|
/// </summary>
|
|
public override void Dispose()
|
|
{
|
|
CollapseButton = null;
|
|
ExpandButton = null;
|
|
|
|
base.Dispose();
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|