using System; using System.ComponentModel; namespace DevComponents.DotNetBar.Charts.Style { /// /// Defines set of default visual styles that are defined on the container control. /// [TypeConverter(typeof(VisualStylesConverter))] public class DefaultVisualStyles : IProcessSerialElement, INotifyPropertyChanged, IDisposable { #region Private variables // Multi state style definitions private ContainerVisualStyles _ContainerVisualStyles; private ChartLegendVisualStyles _ChartLegendVisualStyles; private ChartLegendItemVisualStyles _ChartLegendItemVisualStyles; private ChartSliceVisualStyles _SliceVisualStyles; private ChartSliceVisualStyles _OtherSliceVisualStyles; private ScrollBarVisualStyles _HScrollBarVisualStyles; private ScrollBarVisualStyles _VScrollBarVisualStyles; // Single state style definitions private ChartAxisVisualStyle _ChartXAxisVisualStyle; private ChartAxisVisualStyle _ChartYAxisVisualStyle; private ChartPanelVisualStyle _ChartPanelVisualStyle; private ChartSeriesVisualStyle _ChartSeriesVisualStyle; private ChartTickmarkVisualStyle _ChartTickmarkVisualStyle; private ChartTitleVisualStyle _ChartTitleVisualStyle; private ChartXyVisualStyle _ChartXyVisualStyle; private DataLabelVisualStyle _DataLabelVisualStyle; private CrosshairValueVisualStyle _CrosshairLabelVisualStyle; private CrosshairVisualStyle _CrosshairVisualStyle; private DividerLineVisualStyle _DividerLineVisualStyle; private PieGridLineVisualStyle _GridLineVisualStyle; private PieChartVisualStyle _PieChartVisualStyle; private ReferenceLineVisualStyle _ReferenceLineVisualStyle; private RegressionLineVisualStyle _RegressionLineVisualStyle; private TrendLineVisualStyle _TrendLineVisualStyle; private TickmarkLabelVisualStyle _TickmarkLabelVisualStyle; #endregion #region Public properties #region ChartLegendItemVisualStyles /// /// Gets or sets the visual styles to be used for ChartLegendItem elements /// [Category("Style")] [Description("Indicates visual styles to be used for ChartLegendI tem elements")] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public ChartLegendItemVisualStyles ChartLegendItemVisualStyles { get { if (_ChartLegendItemVisualStyles == null) { _ChartLegendItemVisualStyles = new ChartLegendItemVisualStyles(); StyleChangeHandler(null, _ChartLegendItemVisualStyles); } return (_ChartLegendItemVisualStyles); } set { if (value != _ChartLegendItemVisualStyles) { ChartLegendItemVisualStyles oldValue = _ChartLegendItemVisualStyles; _ChartLegendItemVisualStyles = value; OnStyleChanged("ChartLegendVisualStyles", oldValue, value); } } } #endregion #region ChartLegendVisualStyles /// /// Gets or sets the visual styles to be used for ChartLegend elements /// [Category("Style")] [Description("Indicates visual styles to be used for ChartLegend elements")] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public ChartLegendVisualStyles ChartLegendVisualStyles { get { if (_ChartLegendVisualStyles == null) { _ChartLegendVisualStyles = new ChartLegendVisualStyles(); StyleChangeHandler(null, _ChartLegendVisualStyles); } return (_ChartLegendVisualStyles); } set { if (value != _ChartLegendVisualStyles) { ChartLegendVisualStyles oldValue = _ChartLegendVisualStyles; _ChartLegendVisualStyles = value; OnStyleChanged("ChartLegendVisualStyles", oldValue, value); } } } #endregion #region ChartPanelVisualStyle /// /// Gets or sets the visual style to be used for ChartPanel elements /// [Category("Style")] [Description("Indicates visual style to be used for ChartPanel elements")] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public ChartPanelVisualStyle ChartPanelVisualStyle { get { if (_ChartPanelVisualStyle == null) { _ChartPanelVisualStyle = new ChartPanelVisualStyle(); StyleChangeHandler(null, _ChartPanelVisualStyle); } return (_ChartPanelVisualStyle); } set { if (_ChartPanelVisualStyle != value) { ChartPanelVisualStyle oldValue = _ChartPanelVisualStyle; _ChartPanelVisualStyle = value; OnStyleChanged("ChartPanelVisualStyle", oldValue, value); } } } #endregion #region ChartSeriesVisualStyle /// /// Gets or sets the visual style to be used for ChartSeries elements /// [Category("Style")] [Description("Indicates visual style to be used for ChartSeries elements")] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public ChartSeriesVisualStyle ChartSeriesVisualStyle { get { if (_ChartSeriesVisualStyle == null) { _ChartSeriesVisualStyle = new ChartSeriesVisualStyle(); StyleChangeHandler(null, _ChartSeriesVisualStyle); } return (_ChartSeriesVisualStyle); } set { if (value != _ChartSeriesVisualStyle) { ChartSeriesVisualStyle oldValue = _ChartSeriesVisualStyle; _ChartSeriesVisualStyle = value; OnStyleChanged("ChartSeriesVisualStyle", oldValue, value); } } } #endregion #region ChartTickmarkVisualStyle /// /// Gets or sets the visual style to be used for chart Tickmark elements /// [Category("Style")] [Description("Indicates visual style to be used for chart Tickmark elements ")] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public ChartTickmarkVisualStyle ChartTickmarkVisualStyle { get { if (_ChartTickmarkVisualStyle == null) { _ChartTickmarkVisualStyle = new ChartTickmarkVisualStyle(); StyleChangeHandler(null, _ChartTickmarkVisualStyle); } return (_ChartTickmarkVisualStyle); } set { if (_ChartTickmarkVisualStyle != value) { ChartTickmarkVisualStyle oldValue = _ChartTickmarkVisualStyle; _ChartTickmarkVisualStyle = value; OnStyleChanged("ChartTickmarkVisualStyle", oldValue, value); } } } #endregion #region ChartTitleVisualStyle /// /// Gets or sets the visual style to be used for ChartTitle elements /// [Category("Style")] [Description("Indicates visual style to be used for ChartTitle elements")] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public ChartTitleVisualStyle ChartTitleVisualStyle { get { if (_ChartTitleVisualStyle == null) { _ChartTitleVisualStyle = new ChartTitleVisualStyle(); StyleChangeHandler(null, _ChartTitleVisualStyle); } return (_ChartTitleVisualStyle); } set { if (_ChartTitleVisualStyle != value) { ChartTitleVisualStyle oldValue = _ChartTitleVisualStyle; _ChartTitleVisualStyle = value; OnStyleChanged("ChartTitleVisualStyle", oldValue, value); } } } #endregion #region ChartXAxisVisualStyle /// /// Gets or sets the visual style to be used for X Axis elements /// [Category("Style")] [Description("Indicates visual style to be used for X Axis elements ")] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public ChartAxisVisualStyle ChartXAxisVisualStyle { get { if (_ChartXAxisVisualStyle == null) { _ChartXAxisVisualStyle = new ChartAxisVisualStyle(); StyleChangeHandler(null, _ChartXAxisVisualStyle); } return (_ChartXAxisVisualStyle); } set { if (_ChartXAxisVisualStyle != value) { ChartAxisVisualStyle oldValue = _ChartXAxisVisualStyle; _ChartXAxisVisualStyle = value; OnStyleChanged("ChartXAxisVisualStyle", oldValue, value); } } } #endregion #region ChartXyVisualStyle /// /// Gets or sets the visual style to be used for XyChart elements /// [Category("Style")] [Description("Indicates visual style to be used for XyChart elements")] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public ChartXyVisualStyle ChartXyVisualStyle { get { if (_ChartXyVisualStyle == null) { _ChartXyVisualStyle = new ChartXyVisualStyle(); StyleChangeHandler(null, _ChartXyVisualStyle); } return (_ChartXyVisualStyle); } set { if (_ChartXyVisualStyle != value) { ChartXyVisualStyle oldValue = _ChartXyVisualStyle; _ChartXyVisualStyle = value; OnStyleChanged("ChartXyVisualStyle", oldValue, value); } } } #endregion #region ChartYAxisVisualStyle /// /// Gets or sets the visual style to be used for Y Axis elements /// [Category("Style")] [Description("Indicates visual style to be used for Y Axis elements ")] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public ChartAxisVisualStyle ChartYAxisVisualStyle { get { if (_ChartYAxisVisualStyle == null) { _ChartYAxisVisualStyle = new ChartAxisVisualStyle(); StyleChangeHandler(null, _ChartYAxisVisualStyle); } return (_ChartYAxisVisualStyle); } set { if (_ChartYAxisVisualStyle != value) { ChartAxisVisualStyle oldValue = _ChartYAxisVisualStyle; _ChartYAxisVisualStyle = value; OnStyleChanged("ChartYAxisVisualStyle", oldValue, value); } } } #endregion #region ContainerVisualStyles /// /// Gets or sets the visual stylse to be used for Chart Container elements /// [Category("Style")] [Description("Indicates visual styles to be used for XyChart elements")] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public ContainerVisualStyles ContainerVisualStyles { get { if (_ContainerVisualStyles == null) { _ContainerVisualStyles = new ContainerVisualStyles(); StyleChangeHandler(null, _ContainerVisualStyles); } return (_ContainerVisualStyles); } set { if (_ContainerVisualStyles != value) { ContainerVisualStyles oldValue = _ContainerVisualStyles; _ContainerVisualStyles = value; OnStyleChanged("ContainerVisualStyles", oldValue, value); } } } #endregion #region CrosshairLabelVisualStyle /// /// Gets or sets the visual style to be used for Crosshair label elements /// [Category("Style")] [Description("Indicates visual style to be used for Crosshair label elements")] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public CrosshairValueVisualStyle CrosshairLabelVisualStyle { get { if (_CrosshairLabelVisualStyle == null) { _CrosshairLabelVisualStyle = new CrosshairValueVisualStyle(); StyleChangeHandler(null, _CrosshairLabelVisualStyle); } return (_CrosshairLabelVisualStyle); } set { if (_CrosshairLabelVisualStyle != value) { CrosshairValueVisualStyle oldValue = _CrosshairLabelVisualStyle; _CrosshairLabelVisualStyle = value; OnStyleChanged("CrosshairLabelVisualStyle", oldValue, value); } } } #endregion #region CrosshairVisualStyle /// /// Gets or sets the visual style to be used for Crosshair elements /// [Category("Style")] [Description("Indicates visual style to be used for Crosshair elements")] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public CrosshairVisualStyle CrosshairVisualStyle { get { if (_CrosshairVisualStyle == null) { _CrosshairVisualStyle = new CrosshairVisualStyle(); StyleChangeHandler(null, _CrosshairVisualStyle); } return (_CrosshairVisualStyle); } set { if (_CrosshairVisualStyle != value) { CrosshairVisualStyle oldValue = _CrosshairVisualStyle; _CrosshairVisualStyle = value; OnStyleChanged("CrosshairVisualStyle", oldValue, value); } } } #endregion #region DataLabelVisualStyle /// /// Gets or sets the visual style to be used for DataLabel elements /// [Category("Style")] [Description("Indicates visual style to be used for DataLabel elements")] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public DataLabelVisualStyle DataLabelVisualStyle { get { if (_DataLabelVisualStyle == null) { _DataLabelVisualStyle = new DataLabelVisualStyle(); StyleChangeHandler(null, _DataLabelVisualStyle); } return (_DataLabelVisualStyle); } set { if (value != _DataLabelVisualStyle) { DataLabelVisualStyle oldValue = _DataLabelVisualStyle; _DataLabelVisualStyle = value; OnStyleChanged("DataLabelVisualStyle", oldValue, value); } } } #endregion #region DividerLineVisualStyle /// /// Gets or sets the visual style to be used for DividerLine elements /// [Category("Style")] [Description("Indicates visual style to be used for DividerLine elements ")] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public DividerLineVisualStyle DividerLineVisualStyle { get { if (_DividerLineVisualStyle == null) { _DividerLineVisualStyle = new DividerLineVisualStyle(); StyleChangeHandler(null, _DividerLineVisualStyle); } return (_DividerLineVisualStyle); } set { if (_DividerLineVisualStyle != value) { DividerLineVisualStyle oldValue = _DividerLineVisualStyle; _DividerLineVisualStyle = value; OnStyleChanged("DividerLineVisualStyle", oldValue, value); } } } #endregion #region GridLineVisualStyle /// /// Gets or sets the visual style to be used for GridLine elements /// [Category("Style")] [Description("Indicates visual style to be used for GridLine elements ")] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public PieGridLineVisualStyle GridLineVisualStyle { get { if (_GridLineVisualStyle == null) { _GridLineVisualStyle = new PieGridLineVisualStyle(); StyleChangeHandler(null, _GridLineVisualStyle); } return (_GridLineVisualStyle); } set { if (_GridLineVisualStyle != value) { PieGridLineVisualStyle oldValue = _GridLineVisualStyle; _GridLineVisualStyle = value; OnStyleChanged("GridLinesVisualStyle", oldValue, value); } } } #endregion #region HScrollBarVisualStyles /// /// Gets or sets the visual styles to be used for Horizontal ScrollBar elements /// [Category("Style")] [Description("Indicates visual styles to be used for Horizontal ScrollBar elements ")] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public ScrollBarVisualStyles HScrollBarVisualStyles { get { if (_HScrollBarVisualStyles == null) { _HScrollBarVisualStyles = new ScrollBarVisualStyles(); StyleChangeHandler(null, _HScrollBarVisualStyles); } return (_HScrollBarVisualStyles); } set { if (_HScrollBarVisualStyles != value) { ScrollBarVisualStyles oldValue = _HScrollBarVisualStyles; _HScrollBarVisualStyles = value; OnStyleChanged("HScrollBarVisualStyles", oldValue, value); } } } #endregion #region OtherSliceVisualStyles /// /// Gets or sets the default visual style for the series 'Other' slice. /// [Category("Style")] [Description("Indicates the default visual style for the series 'Other' slice.")] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public ChartSliceVisualStyles OtherSliceVisualStyles { get { if (_OtherSliceVisualStyles == null) { _OtherSliceVisualStyles = new ChartSliceVisualStyles(); StyleChangeHandler(null, _OtherSliceVisualStyles); } return (_OtherSliceVisualStyles); } set { if (_OtherSliceVisualStyles != value) { ChartSliceVisualStyles oldValue = _OtherSliceVisualStyles; _OtherSliceVisualStyles = value; OnStyleChanged("OtherSliceVisualStyles", oldValue, value); if (oldValue != null) oldValue.Dispose(); } } } #endregion #region PieChartVisualStyles /// /// Gets or sets the visual style to be used for PieChart elements /// [Category("Style")] [Description("Indicates visual style to be used for PieChart elements")] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public PieChartVisualStyle PieChartVisualStyle { get { if (_PieChartVisualStyle == null) { _PieChartVisualStyle = new PieChartVisualStyle(); StyleChangeHandler(null, _PieChartVisualStyle); } return (_PieChartVisualStyle); } set { if (_PieChartVisualStyle != value) { PieChartVisualStyle oldValue = _PieChartVisualStyle; _PieChartVisualStyle = value; OnStyleChanged("PieChartVisualStyle", oldValue, value); } } } #endregion #region ReferenceLineVisualStyle /// /// Gets or sets the visual style to be used for ReferenceLine elements /// [Category("Style")] [Description("Indicates visual style to be used for ReferenceLine elements ")] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public ReferenceLineVisualStyle ReferenceLineVisualStyle { get { if (_ReferenceLineVisualStyle == null) { _ReferenceLineVisualStyle = new ReferenceLineVisualStyle(); StyleChangeHandler(null, _ReferenceLineVisualStyle); } return (_ReferenceLineVisualStyle); } set { if (_ReferenceLineVisualStyle != value) { ReferenceLineVisualStyle oldValue = _ReferenceLineVisualStyle; _ReferenceLineVisualStyle = value; OnStyleChanged("ReferenceLineVisualStyle", oldValue, value); } } } #endregion #region RegressionLineVisualStyle /// /// Gets or sets the visual style to be used for RegressionIndicator elements /// [Category("Style")] [Description("Indicates visual style to be used for RegressionIndicator elements ")] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public RegressionLineVisualStyle RegressionLineVisualStyle { get { if (_RegressionLineVisualStyle == null) { _RegressionLineVisualStyle = new RegressionLineVisualStyle(); StyleChangeHandler(null, _RegressionLineVisualStyle); } return (_RegressionLineVisualStyle); } set { if (_RegressionLineVisualStyle != value) { RegressionLineVisualStyle oldValue = _RegressionLineVisualStyle; _RegressionLineVisualStyle = value; OnStyleChanged("RegressionLineVisualStyle", oldValue, value); } } } #endregion #region SliceVisualStyles /// /// Gets or sets the visual style to be used for Pie Slice elements /// [Category("Style")] [Description("Indicates visual style to be used for Pie Slice elements")] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public ChartSliceVisualStyles SliceVisualStyles { get { if (_SliceVisualStyles == null) { _SliceVisualStyles = new ChartSliceVisualStyles(); StyleChangeHandler(null, _SliceVisualStyles); } return (_SliceVisualStyles); } set { if (value != _SliceVisualStyles) { ChartSliceVisualStyles oldValue = _SliceVisualStyles; _SliceVisualStyles = value; OnStyleChanged("SliceVisualStyles", oldValue, value); } } } #endregion #region TickmarkLabelVisualStyle /// /// Gets or sets the visual styles to be used for Axis Lable /// [Category("Style")] [Description("Indicates visual styles to be used for Axis Lable ")] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public TickmarkLabelVisualStyle TickmarkLabelVisualStyle { get { if (_TickmarkLabelVisualStyle == null) { _TickmarkLabelVisualStyle = new TickmarkLabelVisualStyle(); StyleChangeHandler(null, _TickmarkLabelVisualStyle); } return (_TickmarkLabelVisualStyle); } set { if (_TickmarkLabelVisualStyle != value) { TickmarkLabelVisualStyle oldValue = _TickmarkLabelVisualStyle; _TickmarkLabelVisualStyle = value; OnStyleChanged("TickmarkLabelVisualStyles", oldValue, value); } } } #endregion #region TrendLineVisualStyle /// /// Gets or sets the visual style to be used for TrendLine elements /// [Category("Style")] [Description("Indicates visual style to be used for TrendLine elements ")] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public TrendLineVisualStyle TrendLineVisualStyle { get { if (_TrendLineVisualStyle == null) { _TrendLineVisualStyle = new TrendLineVisualStyle(); StyleChangeHandler(null, _TrendLineVisualStyle); } return (_TrendLineVisualStyle); } set { if (_TrendLineVisualStyle != value) { TrendLineVisualStyle oldValue = _TrendLineVisualStyle; _TrendLineVisualStyle = value; OnStyleChanged("TrendLineVisualStyle", oldValue, value); } } } #endregion #region VScrollBarVisualStyles /// /// Gets or sets the visual styles to be used for Vertical ScrollBar elements /// [Category("Style")] [Description("Indicates visual styles to be used for Vertical ScrollBar elements ")] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public ScrollBarVisualStyles VScrollBarVisualStyles { get { if (_VScrollBarVisualStyles == null) { _VScrollBarVisualStyles = new ScrollBarVisualStyles(); StyleChangeHandler(null, _VScrollBarVisualStyles); } return (_VScrollBarVisualStyles); } set { if (_VScrollBarVisualStyles != value) { ScrollBarVisualStyles oldValue = _VScrollBarVisualStyles; _VScrollBarVisualStyles = value; OnStyleChanged("VScrollBarVisualStyles", oldValue, value); } } } #endregion #region IsEmpty /// /// Gets whether the style collection is logically Empty. /// [Browsable(false)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] [Description("Gets whether the style collection is logically Empty.")] public bool IsEmpty { get { if (_ChartLegendItemVisualStyles != null && _ChartLegendItemVisualStyles.IsEmpty == false) return (false); if (_ChartLegendVisualStyles != null && _ChartLegendVisualStyles.IsEmpty == false) return (false); if (_ChartPanelVisualStyle != null && _ChartPanelVisualStyle.IsEmpty == false) return (false); if (_HScrollBarVisualStyles != null && _HScrollBarVisualStyles.IsEmpty == false) return (false); if (_VScrollBarVisualStyles != null && _VScrollBarVisualStyles.IsEmpty == false) return (false); if (_ChartSeriesVisualStyle != null && _ChartSeriesVisualStyle.IsEmpty == false) return (false); if (_ChartTickmarkVisualStyle != null && _ChartTickmarkVisualStyle.IsEmpty == false) return (false); if (_ChartTitleVisualStyle != null && _ChartTitleVisualStyle.IsEmpty == false) return (false); if (_ChartXAxisVisualStyle != null && _ChartXAxisVisualStyle.IsEmpty == false) return (false); if (_ChartXyVisualStyle != null && _ChartXyVisualStyle.IsEmpty == false) return (false); if (_ChartYAxisVisualStyle != null && _ChartYAxisVisualStyle.IsEmpty == false) return (false); if (_ContainerVisualStyles != null && _ContainerVisualStyles.IsEmpty == false) return (false); if (_CrosshairLabelVisualStyle != null && _CrosshairLabelVisualStyle.IsEmpty == false) return (false); if (_CrosshairVisualStyle != null && _CrosshairVisualStyle.IsEmpty == false) return (false); if (_DataLabelVisualStyle != null && _DataLabelVisualStyle.IsEmpty == false) return (false); if (_DividerLineVisualStyle != null && _DividerLineVisualStyle.IsEmpty == false) return (false); if (_GridLineVisualStyle != null && _GridLineVisualStyle.IsEmpty == false) return (false); if (_ReferenceLineVisualStyle != null && _ReferenceLineVisualStyle.IsEmpty == false) return (false); if (_TickmarkLabelVisualStyle != null && _TickmarkLabelVisualStyle.IsEmpty == false) return (false); if (_TrendLineVisualStyle != null && _TrendLineVisualStyle.IsEmpty == false) return (false); return (true); } } #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 /// /// Occurs when one of element visual styles has property changes. /// Default implementation invalidates visual appearance of element. /// /// VisualStyle that changed. /// Event arguments. protected virtual void StyleChanged(object sender, PropertyChangedEventArgs e) { OnPropertyChanged(e); } #endregion #region Copy/CopyTo public DefaultVisualStyles Copy() { DefaultVisualStyles copy = new DefaultVisualStyles(); CopyTo(copy); return (copy); } public void CopyTo(DefaultVisualStyles c) { for (int i = 0; i < ChartLegendItemVisualStyles.Styles.Length; i++) { if (ChartLegendItemVisualStyles.Styles[i] != null) c.ChartLegendItemVisualStyles.Styles[i] = ChartLegendItemVisualStyles.Styles[i].Copy(); } for (int i = 0; i < ChartLegendVisualStyles.Styles.Length; i++) { if (ChartLegendVisualStyles.Styles[i] != null) c.ChartLegendVisualStyles.Styles[i] = ChartLegendVisualStyles.Styles[i].Copy(); } ChartPanelVisualStyle.CopyTo(c.ChartPanelVisualStyle); ChartSeriesVisualStyle.CopyTo(c.ChartSeriesVisualStyle); ChartTickmarkVisualStyle.CopyTo(c.ChartTickmarkVisualStyle); ChartTitleVisualStyle.CopyTo(c.ChartTitleVisualStyle); ChartXAxisVisualStyle.CopyTo(c.ChartXAxisVisualStyle); ChartXyVisualStyle.CopyTo(c.ChartXyVisualStyle); ChartYAxisVisualStyle.CopyTo(c.ChartYAxisVisualStyle); for (int i = 0; i < ContainerVisualStyles.Styles.Length; i++) { if (ContainerVisualStyles.Styles[i] != null) c.ContainerVisualStyles.Styles[i] = ContainerVisualStyles.Styles[i].Copy(); } CrosshairLabelVisualStyle.CopyTo(c.CrosshairLabelVisualStyle); CrosshairVisualStyle.CopyTo(c.CrosshairVisualStyle); DataLabelVisualStyle.CopyTo(c.DataLabelVisualStyle); DividerLineVisualStyle.CopyTo(c.DividerLineVisualStyle); GridLineVisualStyle.CopyTo(c.GridLineVisualStyle); for (int i = 0; i < HScrollBarVisualStyles.Styles.Length; i++) { if (HScrollBarVisualStyles.Styles[i] != null) c.HScrollBarVisualStyles.Styles[i] = HScrollBarVisualStyles.Styles[i].Copy(); } for (int i = 0; i < OtherSliceVisualStyles.Styles.Length; i++) { if (OtherSliceVisualStyles.Styles[i] != null) c.OtherSliceVisualStyles.Styles[i] = OtherSliceVisualStyles.Styles[i].Copy(); } PieChartVisualStyle.CopyTo(c.PieChartVisualStyle); ReferenceLineVisualStyle.CopyTo(c.ReferenceLineVisualStyle); RegressionLineVisualStyle.CopyTo(c.RegressionLineVisualStyle); for (int i = 0; i < SliceVisualStyles.Styles.Length; i++) { if (SliceVisualStyles.Styles[i] != null) c.SliceVisualStyles.Styles[i] = SliceVisualStyles.Styles[i].Copy(); } TickmarkLabelVisualStyle.CopyTo(c.TickmarkLabelVisualStyle); TrendLineVisualStyle.CopyTo(c.TrendLineVisualStyle); for (int i = 0; i < VScrollBarVisualStyles.Styles.Length; i++) { if (VScrollBarVisualStyles.Styles[i] != null) c.VScrollBarVisualStyles.Styles[i] = VScrollBarVisualStyles.Styles[i].Copy(); } } #endregion #region GetSerialData internal SerialElementCollection GetSerialData() { return (GetSerialData(true)); } internal SerialElementCollection GetSerialData(bool root) { SerialElementCollection sec = new SerialElementCollection(); if (root == true) sec.AddStartElement("DefaultVisualStyles"); if (_ChartLegendItemVisualStyles != null && _ChartLegendItemVisualStyles.IsEmpty == false) sec.AddElement(_ChartLegendItemVisualStyles.GetSerialData("ChartLegendItemVisualStyles")); if (_ChartLegendVisualStyles != null && _ChartLegendVisualStyles.IsEmpty == false) sec.AddElement(_ChartLegendVisualStyles.GetSerialData("ChartLegendVisualStyles")); sec.AddElement(_ChartPanelVisualStyle); sec.AddElement(_ChartSeriesVisualStyle); sec.AddElement(_ChartTickmarkVisualStyle); sec.AddElement(_ChartTitleVisualStyle); sec.AddElement(_ChartXAxisVisualStyle); sec.AddElement(_ChartXyVisualStyle); sec.AddElement(_ChartYAxisVisualStyle); if (_ContainerVisualStyles != null && _ContainerVisualStyles.IsEmpty == false) sec.AddElement(_ContainerVisualStyles.GetSerialData("ContainerVisualStyles")); sec.AddElement(_CrosshairLabelVisualStyle); sec.AddElement(_CrosshairVisualStyle); sec.AddElement(_DataLabelVisualStyle); sec.AddElement(_DividerLineVisualStyle); sec.AddElement(_GridLineVisualStyle); if (_HScrollBarVisualStyles != null && _HScrollBarVisualStyles.IsEmpty == false) sec.AddElement(_HScrollBarVisualStyles.GetSerialData("HScrollBarVisualStyles")); if (_OtherSliceVisualStyles != null && _OtherSliceVisualStyles.IsEmpty == false) sec.AddElement(_OtherSliceVisualStyles.GetSerialData("OtherSliceVisualStyles")); sec.AddElement(_PieChartVisualStyle); sec.AddElement(_ReferenceLineVisualStyle); sec.AddElement(_RegressionLineVisualStyle); if (_SliceVisualStyles != null && _SliceVisualStyles.IsEmpty == false) sec.AddElement(_SliceVisualStyles.GetSerialData("SliceVisualStyles")); sec.AddElement(_TickmarkLabelVisualStyle); sec.AddElement(_TrendLineVisualStyle); if (_VScrollBarVisualStyles != null && _VScrollBarVisualStyles.IsEmpty == false) sec.AddElement(_VScrollBarVisualStyles.GetSerialData("VScrollBarVisualStyles")); if (root == true) sec.AddEndElement("DefaultVisualStyles"); return (sec); } #endregion #region PutSerialData #region ProcessValue void IProcessSerialElement.ProcessValue(SerialElement se) { throw new Exception("Unknown Serial Value (" + se.Name + ")"); } #endregion #region ProcessCollection void IProcessSerialElement.ProcessCollection(SerialElement se) { switch (se.Name) { case "ChartLegendItemVisualStyles": se.Sec.PutSerialData(ChartLegendItemVisualStyles); break; case "ChartLegendVisualStyles": se.Sec.PutSerialData(ChartLegendVisualStyles); break; case "ChartPanelVisualStyle": se.Sec.PutSerialData(ChartPanelVisualStyle); break; case "ChartSeriesVisualStyle": se.Sec.PutSerialData(ChartSeriesVisualStyle); break; case "ChartTickmarkVisualStyle": se.Sec.PutSerialData(ChartTickmarkVisualStyle); break; case "ChartTitleVisualStyle": se.Sec.PutSerialData(ChartTitleVisualStyle); break; case "ChartXAxisVisualStyle": se.Sec.PutSerialData(ChartXAxisVisualStyle); break; case "ChartXyVisualStyle": se.Sec.PutSerialData(ChartXyVisualStyle); break; case "ChartYAxisVisualStyle": se.Sec.PutSerialData(ChartYAxisVisualStyle); break; case "ContainerVisualStyles": se.Sec.PutSerialData(ContainerVisualStyles); break; case "CrosshairLabelVisualStyle": se.Sec.PutSerialData(CrosshairLabelVisualStyle); break; case "CrosshairVisualStyle": se.Sec.PutSerialData(CrosshairVisualStyle); break; case "DataLabelVisualStyle": se.Sec.PutSerialData(DataLabelVisualStyle); break; case "DividerLineVisualStyle": se.Sec.PutSerialData(DividerLineVisualStyle); break; case "GridLineVisualStyle": se.Sec.PutSerialData(GridLineVisualStyle); break; case "HScrollBarVisualStyles": se.Sec.PutSerialData(HScrollBarVisualStyles); break; case "OtherSliceVisualStyles": se.Sec.PutSerialData(OtherSliceVisualStyles); break; case "PieChartVisualStyle": se.Sec.PutSerialData(PieChartVisualStyle); break; case "ReferenceLineVisualStyle": se.Sec.PutSerialData(ReferenceLineVisualStyle); break; case "RegressionLineVisualStyle": se.Sec.PutSerialData(RegressionLineVisualStyle); break; case "SliceVisualStyles": se.Sec.PutSerialData(SliceVisualStyles); break; case "TickmarkLableVisualStyle": se.Sec.PutSerialData(TickmarkLabelVisualStyle); break; case "TrendLineVisualStyle": se.Sec.PutSerialData(TrendLineVisualStyle); break; case "VScrollBarVisualStyles": se.Sec.PutSerialData(VScrollBarVisualStyles); break; default: throw new Exception("Unknown Serial Collection (" + se.Name + ")"); } } #endregion #endregion #region INotifyPropertyChanged Members /// /// Occurs when property value has changed. /// public event PropertyChangedEventHandler PropertyChanged; /// /// Raises the PropertyChanged event. /// /// Event arguments protected virtual void OnPropertyChanged(PropertyChangedEventArgs e) { PropertyChangedEventHandler eh = PropertyChanged; if (eh != null) eh(this, e); } #endregion #region IDisposable /// /// Dispose /// public void Dispose() { ChartPanelVisualStyle = null; ChartTitleVisualStyle = null; ChartXAxisVisualStyle = null; ChartYAxisVisualStyle = null; } #endregion } }