697 lines
20 KiB
C#

using System;
using System.ComponentModel;
namespace DevComponents.DotNetBar.SuperGrid.Style
{
/// <summary>
/// Defines set of default visual styles that are defined on the container control.
/// </summary>
[TypeConverter(typeof(VisualStylesConverter))]
public class DefaultVisualStyles : INotifyPropertyChanged, IDisposable
{
#region Private variables
private CellVisualStyles _CellStyles;
private CellVisualStyles _MergedCellStyles;
private CellVisualStyles _AlternateRowCellStyles;
private CellVisualStyles _AlternateColumnCellStyles;
private ColumnHeaderVisualStyles _ColumnHeaderStyles;
private ColumnHeaderRowVisualStyles _ColumnHeaderRowStyles;
private RowVisualStyles _RowStyles;
private GroupHeaderVisualStyles _GroupHeaderStyles;
private TextRowVisualStyles _CaptionStyles;
private TextRowVisualStyles _TitleStyles;
private TextRowVisualStyles _HeaderStyles;
private TextRowVisualStyles _FooterStyles;
private GroupByVisualStyles _GroupByStyles;
private GridPanelVisualStyle _GridPanelStyle;
private FilterRowVisualStyles _FilterRowStyles;
private FilterColumnHeaderVisualStyles _FilterColumnHeaderStyles;
#endregion
#region Public properties
#region AlternateColumnCellStyles
/// <summary>
/// Gets or sets the visual styles to be used on
/// alternating columns (UseAlternateColumnStyle must be enabled)
/// </summary>
[Category("Style")]
[Description("Indicates the visual styles to be used on alternating columns (UseAlternateColumnStyle must be enabled)")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public CellVisualStyles AlternateColumnCellStyles
{
get
{
if (_AlternateColumnCellStyles == null)
{
_AlternateColumnCellStyles = new CellVisualStyles();
StyleChangeHandler(null, _AlternateColumnCellStyles);
}
return (_AlternateColumnCellStyles);
}
set
{
if (_AlternateColumnCellStyles != value)
{
CellVisualStyles oldValue = _AlternateColumnCellStyles;
_AlternateColumnCellStyles = value;
OnStyleChanged("AlternateColumnCellStyles", oldValue, value);
}
}
}
#endregion
#region AlternateRowCellStyles
/// <summary>
/// Gets or sets the visual styles to be used on
/// alternating rows (UseAlternateRowStyle must be enabled)
/// </summary>
[Category("Style")]
[Description("Indicates Gets or sets the visual styles to be used on alternating rows (UseAlternateRowStyle must be enabled)")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public CellVisualStyles AlternateRowCellStyles
{
get
{
if (_AlternateRowCellStyles == null)
{
_AlternateRowCellStyles = new CellVisualStyles();
StyleChangeHandler(null, _AlternateRowCellStyles);
}
return (_AlternateRowCellStyles);
}
set
{
if (_AlternateRowCellStyles != value)
{
CellVisualStyles oldValue = _AlternateRowCellStyles;
_AlternateRowCellStyles = value;
OnStyleChanged("AltRowVisualStyles", oldValue, value);
}
}
}
#endregion
#region CaptionStyles
/// <summary>
/// Gets or sets the visual styles to be used for the grid Caption
/// </summary>
[Category("Style")]
[Description("Indicates visual styles to be used for the grid Caption")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public TextRowVisualStyles CaptionStyles
{
get
{
if (_CaptionStyles == null)
{
_CaptionStyles = new TextRowVisualStyles();
StyleChangeHandler(null, _CaptionStyles);
}
return (_CaptionStyles);
}
set
{
if (_CaptionStyles != value)
{
TextRowVisualStyles oldValue = _CaptionStyles;
_CaptionStyles = value;
OnStyleChanged("CaptionStyles", oldValue, value);
}
}
}
#endregion
#region CellStyles
/// <summary>
/// Gets or sets visual styles to be used for the grid Cells
/// </summary>
[Category("Style")]
[Description("Indicates visual styles to be used for the grid Cells")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public CellVisualStyles CellStyles
{
get
{
if (_CellStyles == null)
{
_CellStyles = new CellVisualStyles();
StyleChangeHandler(null, _CellStyles);
}
return (_CellStyles);
}
set
{
if (_CellStyles != value)
{
CellVisualStyles oldValue = _CellStyles;
_CellStyles = value;
OnStyleChanged("CellStyles", oldValue, value);
}
}
}
#endregion
#region ColumnHeaderStyles
/// <summary>
/// Gets or sets visual styles to be used for the grid ColumnHeader
/// </summary>
[Category("Style")]
[Description("Indicates visual styles to be used for the grid ColumnHeader")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public ColumnHeaderVisualStyles ColumnHeaderStyles
{
get
{
if (_ColumnHeaderStyles == null)
{
_ColumnHeaderStyles = new ColumnHeaderVisualStyles();
StyleChangeHandler(null, _ColumnHeaderStyles);
}
return (_ColumnHeaderStyles);
}
set
{
if (_ColumnHeaderStyles != value)
{
ColumnHeaderVisualStyles oldValue = _ColumnHeaderStyles;
_ColumnHeaderStyles = value;
OnStyleChanged("ColumnHeaderStyles", oldValue, value);
}
}
}
#endregion
#region ColumnHeaderRowStyles
/// <summary>
/// Gets or sets visual styles
/// to be used for the grid ColumnHeader Row
/// </summary>
[Category("Style")]
[Description("Indicates visual styles to be used for the grid ColumnHeader Row")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public ColumnHeaderRowVisualStyles ColumnHeaderRowStyles
{
get
{
if (_ColumnHeaderRowStyles == null)
{
_ColumnHeaderRowStyles = new ColumnHeaderRowVisualStyles();
StyleChangeHandler(null, _ColumnHeaderRowStyles);
}
return (_ColumnHeaderRowStyles);
}
set
{
if (_ColumnHeaderRowStyles != value)
{
ColumnHeaderRowVisualStyles oldValue = _ColumnHeaderRowStyles;
_ColumnHeaderRowStyles = value;
OnStyleChanged("ColumnHeaderRowStyles", oldValue, value);
}
}
}
#endregion
#region FilterRowStyles
/// <summary>
/// Gets or sets visual styles to
/// be used for the grid Filter column headers
/// </summary>
[Category("Style")]
[Description("Indicates visual styles to be used for the grid Filter column headers.")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public FilterColumnHeaderVisualStyles FilterColumnHeaderStyles
{
get
{
if (_FilterColumnHeaderStyles == null)
{
_FilterColumnHeaderStyles = new FilterColumnHeaderVisualStyles();
StyleChangeHandler(null, _FilterColumnHeaderStyles);
}
return (_FilterColumnHeaderStyles);
}
set
{
if (_FilterColumnHeaderStyles != value)
{
FilterColumnHeaderVisualStyles oldValue = _FilterColumnHeaderStyles;
_FilterColumnHeaderStyles = value;
OnStyleChanged("FilterColumnHeaderStyles", oldValue, value);
}
}
}
#endregion
#region FilterRowStyles
/// <summary>
/// Gets or sets visual styles to be used for the grid Filter Row
/// </summary>
[Category("Style")]
[Description("Indicates visual styles to be used for the grid Filter Row")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public FilterRowVisualStyles FilterRowStyles
{
get
{
if (_FilterRowStyles == null)
{
_FilterRowStyles = new FilterRowVisualStyles();
StyleChangeHandler(null, _FilterRowStyles);
}
return (_FilterRowStyles);
}
set
{
if (_FilterRowStyles != value)
{
FilterRowVisualStyles oldValue = _FilterRowStyles;
_FilterRowStyles = value;
OnStyleChanged("FilterRowStyles", oldValue, value);
}
}
}
#endregion
#region FooterStyles
/// <summary>
/// Gets or sets the visual styles to be used for the grid Footer
/// </summary>
[Category("Style")]
[Description("Indicates visual styles to be used for the grid Footer")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public TextRowVisualStyles FooterStyles
{
get
{
if (_FooterStyles == null)
{
_FooterStyles = new TextRowVisualStyles();
StyleChangeHandler(null, _FooterStyles);
}
return (_FooterStyles);
}
set
{
if (_FooterStyles != value)
{
TextRowVisualStyles oldValue = _FooterStyles;
_FooterStyles = value;
OnStyleChanged("FooterStyles", oldValue, value);
}
}
}
#endregion
#region GridPanelStyle
/// <summary>
/// Gets or sets the visual styles to be used for the main grid panel
/// </summary>
[Category("Style")]
[Description("Indicates visual styles to be used for the main grid panel")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public GridPanelVisualStyle GridPanelStyle
{
get
{
if (_GridPanelStyle == null)
{
_GridPanelStyle = new GridPanelVisualStyle();
StyleChangeHandler(null, _GridPanelStyle);
}
return (_GridPanelStyle);
}
set
{
if (_GridPanelStyle != value)
{
GridPanelVisualStyle oldValue = _GridPanelStyle;
_GridPanelStyle = value;
OnStyleChanged("GridPanelStyle", oldValue, value);
}
}
}
#endregion
#region GroupByStyles
/// <summary>
/// Gets or sets the visual styles to be used for the grid GroupBy Row
/// </summary>
[Category("Style")]
[Description("Indicates visual styles to be used for the grid GroupBy Row")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public GroupByVisualStyles GroupByStyles
{
get
{
if (_GroupByStyles == null)
{
_GroupByStyles = new GroupByVisualStyles();
StyleChangeHandler(null, _GroupByStyles);
}
return (_GroupByStyles);
}
set
{
if (_GroupByStyles != value)
{
GroupByVisualStyles oldValue = _GroupByStyles;
_GroupByStyles = value;
OnStyleChanged("GroupByStyles", oldValue, value);
}
}
}
#endregion
#region GroupHeaderStyles
/// <summary>
/// Gets or sets the visual styles to be used for the Group Header
/// </summary>
[Category("Style")]
[Description("Indicates visual styles to be used for the Group Header")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public GroupHeaderVisualStyles GroupHeaderStyles
{
get
{
if (_GroupHeaderStyles == null)
{
_GroupHeaderStyles = new GroupHeaderVisualStyles();
StyleChangeHandler(null, _GroupHeaderStyles);
}
return (_GroupHeaderStyles);
}
set
{
if (_GroupHeaderStyles != value)
{
GroupHeaderVisualStyles oldValue = _GroupHeaderStyles;
_GroupHeaderStyles = value;
OnStyleChanged("GroupHeaderStyles", oldValue, value);
}
}
}
#endregion
#region HeaderStyles
/// <summary>
/// Gets or sets the visual styles to be used for the grid Header
/// </summary>
[Category("Style")]
[Description("Indicates visual styles to be used for the grid Header")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public TextRowVisualStyles HeaderStyles
{
get
{
if (_HeaderStyles == null)
{
_HeaderStyles = new TextRowVisualStyles();
StyleChangeHandler(null, _HeaderStyles);
}
return (_HeaderStyles);
}
set
{
if (_HeaderStyles != value)
{
TextRowVisualStyles oldValue = _HeaderStyles;
_HeaderStyles = value;
OnStyleChanged("HeaderStyles", oldValue, value);
}
}
}
#endregion
#region MergedCellStyles
/// <summary>
/// Gets or sets visual styles to be used for merged grid Cells
/// </summary>
[Category("Style")]
[Description("Indicates visual styles to be used for merged grid Cells")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public CellVisualStyles MergedCellStyles
{
get
{
if (_MergedCellStyles == null)
{
_MergedCellStyles = new CellVisualStyles();
StyleChangeHandler(null, _MergedCellStyles);
}
return (_MergedCellStyles);
}
set
{
if (_MergedCellStyles != value)
{
CellVisualStyles oldValue = _MergedCellStyles;
_MergedCellStyles = value;
OnStyleChanged("MergedCellStyles", oldValue, value);
}
}
}
#endregion
#region RowStyles
/// <summary>
/// Gets or sets the visual styles to be used for the grid rows
/// </summary>
[Category("Style")]
[Description("Indicates visual styles to be used for the grid rows")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public RowVisualStyles RowStyles
{
get
{
if (_RowStyles == null)
{
_RowStyles = new RowVisualStyles();
StyleChangeHandler(null, _RowStyles);
}
return (_RowStyles);
}
set
{
if (_RowStyles != value)
{
RowVisualStyles oldValue = _RowStyles;
_RowStyles = value;
OnStyleChanged("RowStyles", oldValue, value);
}
}
}
#endregion
#region TitleStyles
/// <summary>
/// Gets or sets the visual styles to be used for the grid Title
/// </summary>
[Category("Style")]
[Description("Indicates visual styles to be used for the grid Title")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public TextRowVisualStyles TitleStyles
{
get
{
if (_TitleStyles == null)
{
_TitleStyles = new TextRowVisualStyles();
StyleChangeHandler(null, _TitleStyles);
}
return (_TitleStyles);
}
set
{
if (_TitleStyles != value)
{
TextRowVisualStyles oldValue = _TitleStyles;
_TitleStyles = value;
OnStyleChanged("TitleStyles", oldValue, value);
}
}
}
#endregion
#endregion
#region OnStyleChanged
private void OnStyleChanged(string property,
INotifyPropertyChanged oldValue, INotifyPropertyChanged newValue)
{
StyleChangeHandler(oldValue, newValue);
OnPropertyChanged(new VisualPropertyChangedEventArgs(property));
}
#endregion
#region StyleChangeHandler
private void StyleChangeHandler(
INotifyPropertyChanged oldValue, INotifyPropertyChanged newValue)
{
if (oldValue != null)
oldValue.PropertyChanged -= StyleChanged;
if (newValue != null)
newValue.PropertyChanged += StyleChanged;
}
#endregion
#region StyleChanged
/// <summary>
/// Occurs when one of element visual styles has property changes.
/// Default implementation invalidates visual appearance of element.
/// </summary>
/// <param name="sender">VisualStyle that changed.</param>
/// <param name="e">Event arguments.</param>
protected virtual void StyleChanged(object sender, PropertyChangedEventArgs e)
{
OnPropertyChanged(e);
}
#endregion
#region INotifyPropertyChanged Members
/// <summary>
/// Occurs when property value has changed.
/// </summary>
public event PropertyChangedEventHandler PropertyChanged;
/// <summary>
/// Raises the PropertyChanged event.
/// </summary>
/// <param name="e">Event arguments</param>
protected virtual void OnPropertyChanged(PropertyChangedEventArgs e)
{
PropertyChangedEventHandler eh = PropertyChanged;
if (eh != null)
eh(this, e);
}
#endregion
#region IDisposable
/// <summary>
/// Dispose
/// </summary>
public void Dispose()
{
AlternateColumnCellStyles = null;
AlternateRowCellStyles = null;
}
#endregion
}
}