using System.ComponentModel; using System.Drawing; using System.Drawing.Design; using System.Windows.Forms; namespace DevComponents.DotNetBar.Charts.Style { /// /// Represents the visual style of a ChartPanel /// [ToolboxItem(false), DesignTimeVisible(false)] [TypeConverter(typeof(BlankExpandableObjectConverter))] public class ChartPanelVisualStyle : BaseVisualStyle { #region Private variables private DividerLineVisualStyle _DividerLineX; private DividerLineVisualStyle _DividerLineY; private ScrollBarVisualStyles _HScrollBarVisualStyles; private ScrollBarVisualStyles _VScrollBarVisualStyles; #endregion #region Public properties #region DividerLineX /// /// Gets or sets the visual style of the horizontal DividerLine (when ChartMatrix.DividerLines is enabled). /// [Description("Indicates the visual style of the horizontal DividerLine (when ChartMatrix.DividerLines is enabled).")] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public DividerLineVisualStyle DividerLineX { get { if (_DividerLineX == null) { _DividerLineX = new DividerLineVisualStyle(); UpdateChangeHandler(null, _DividerLineX); } return (_DividerLineX); } set { if (_DividerLineX != value) { UpdateChangeHandler(_DividerLineX, value); _DividerLineX = value; OnPropertyChangedEx("DividerLineX", VisualChangeType.Layout); } } } #endregion #region DividerLineY /// /// Gets or sets the visual style of the vertical DividerLine (when ChartMatrix.DividerLines is enabled). /// [Description("Indicates the visual style of the vertical DividerLine. (when ChartMatrix.DividerLines is enabled)")] [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public DividerLineVisualStyle DividerLineY { get { if (_DividerLineY == null) { _DividerLineY = new DividerLineVisualStyle(); UpdateChangeHandler(null, _DividerLineY); } return (_DividerLineY); } set { if (_DividerLineY != value) { UpdateChangeHandler(_DividerLineY, value); _DividerLineY = value; OnPropertyChangedEx("DividerLineY", VisualChangeType.Layout); } } } #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(); UpdateChangeHandler(null, _HScrollBarVisualStyles); } return (_HScrollBarVisualStyles); } set { if (_HScrollBarVisualStyles != value) { ScrollBarVisualStyles oldValue = _HScrollBarVisualStyles; _HScrollBarVisualStyles = value; OnStyleChanged("HScrollBarVisualStyles", 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(); UpdateChangeHandler(null, _VScrollBarVisualStyles); } return (_VScrollBarVisualStyles); } set { if (_VScrollBarVisualStyles != value) { ScrollBarVisualStyles oldValue = _VScrollBarVisualStyles; _VScrollBarVisualStyles = value; OnStyleChanged("VScrollBarVisualStyles", oldValue, value); } } } #endregion #region IsEmpty /// /// Gets whether the style is logically Empty. /// [Browsable(false)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] [Description("Gets whether the style is logically Empty.")] public override bool IsEmpty { get { return ((_DividerLineX == null || _DividerLineX.IsEmpty == true) && (_DividerLineY == null || _DividerLineY.IsEmpty == true) && (_HScrollBarVisualStyles == null) && (_VScrollBarVisualStyles == null) && (base.IsEmpty == true)); } } #endregion #endregion #region ApplyStyle /// /// Applies the style to instance of this style. /// /// Style to apply. public void ApplyStyle(ChartPanelVisualStyle style) { if (style != null) { base.ApplyStyle(style); if (style.DividerLineX != null) DividerLineX.ApplyStyle(style.DividerLineX); if (style.DividerLineY != null) DividerLineY.ApplyStyle(style.DividerLineY); if (style.HScrollBarVisualStyles != null) { for (int i = 0; i < style.HScrollBarVisualStyles.Styles.Length; i++) { if (style.HScrollBarVisualStyles.Styles[i] != null) HScrollBarVisualStyles.GetStyle(i).ApplyStyle(style.HScrollBarVisualStyles.Styles[i]); } } if (style.VScrollBarVisualStyles != null) { for (int i = 0; i < style.VScrollBarVisualStyles.Styles.Length; i++) { if (style.VScrollBarVisualStyles.Styles[i] != null) VScrollBarVisualStyles.GetStyle(i).ApplyStyle(style.VScrollBarVisualStyles.Styles[i]); } } } } #endregion #region Copy /// /// Returns the copy of the style. /// /// Copy of the style. public new ChartPanelVisualStyle Copy() { ChartPanelVisualStyle style = new ChartPanelVisualStyle(); CopyTo(style); return (style); } #endregion #region CopyTo /// /// Returns the copy of the style. /// /// Copy of the style. public void CopyTo(ChartPanelVisualStyle style) { base.CopyTo(style); style.DividerLineX = (_DividerLineX != null) ? _DividerLineX.Copy() : null; style.DividerLineY = (_DividerLineY != null) ? _DividerLineY.Copy() : null; style.HScrollBarVisualStyles = (_HScrollBarVisualStyles != null) ? _HScrollBarVisualStyles.Copy() : null; style.VScrollBarVisualStyles = (_VScrollBarVisualStyles != null) ? _VScrollBarVisualStyles.Copy() : null; } #endregion #region GetSerialData internal override SerialElementCollection GetSerialData(string serialName) { SerialElementCollection sec = new SerialElementCollection(); if (serialName != null) { if (serialName.Equals("") == true) serialName = "ChartPanelVisualStyle"; sec.AddStartElement(serialName); } if (_DividerLineX != null && _DividerLineX.IsEmpty == false) sec.AddElement(_DividerLineX.GetSerialData("DividerLineX")); if (_DividerLineY != null && _DividerLineY.IsEmpty == false) sec.AddElement(_DividerLineY.GetSerialData("DividerLineY")); if (_HScrollBarVisualStyles != null && _HScrollBarVisualStyles.IsEmpty == false) sec.AddElement(_HScrollBarVisualStyles.GetSerialData("HScrollBarVisualStyles")); if (_VScrollBarVisualStyles != null && _VScrollBarVisualStyles.IsEmpty == false) sec.AddElement(_VScrollBarVisualStyles.GetSerialData("VScrollBarVisualStyles")); sec.AddElement(base.GetSerialData(null)); if (serialName != null) sec.AddEndElement(serialName); return (sec); } #endregion #region PutSerialData #region ProcessCollection internal override void ProcessCollection(SerialElement se) { SerialElementCollection sec = se.Sec; switch (se.Name) { case "DividerLineX": sec.PutSerialData(DividerLineX); break; case "DividerLineY": sec.PutSerialData(DividerLineY); break; case "HScrollBarVisualStyles": sec.PutSerialData(HScrollBarVisualStyles); break; case "VScrollBarVisualStyles": sec.PutSerialData(VScrollBarVisualStyles); break; default: base.ProcessCollection(se); break; } } #endregion #endregion #region IDisposable public override void Dispose() { DividerLineX = null; DividerLineY = null; HScrollBarVisualStyles = null; VScrollBarVisualStyles = null; base.Dispose(); } #endregion } }