358 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			358 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System.ComponentModel;
 | 
						|
using System.Drawing;
 | 
						|
using System.Drawing.Design;
 | 
						|
using System.Windows.Forms;
 | 
						|
 | 
						|
namespace DevComponents.DotNetBar.Charts.Style
 | 
						|
{
 | 
						|
    /// <summary>
 | 
						|
    /// Represents the visual style of a ChartPanel
 | 
						|
    /// </summary>
 | 
						|
    [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
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the visual style of the horizontal DividerLine (when ChartMatrix.DividerLines is enabled).
 | 
						|
        /// </summary>
 | 
						|
        [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
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the visual style of the vertical DividerLine (when ChartMatrix.DividerLines is enabled).
 | 
						|
        /// </summary>
 | 
						|
        [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
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the visual styles to be used for Horizontal ScrollBar elements 
 | 
						|
        /// </summary>
 | 
						|
        [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
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the visual styles to be used for Vertical ScrollBar elements 
 | 
						|
        /// </summary>
 | 
						|
        [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
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets whether the style is logically Empty.
 | 
						|
        /// </summary>
 | 
						|
        [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
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Applies the style to instance of this style.
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="style">Style to apply.</param>
 | 
						|
        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
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Returns the copy of the style.
 | 
						|
        /// </summary>
 | 
						|
        /// <returns>Copy of the style.</returns>
 | 
						|
        public new ChartPanelVisualStyle Copy()
 | 
						|
        {
 | 
						|
            ChartPanelVisualStyle style = new ChartPanelVisualStyle();
 | 
						|
 | 
						|
            CopyTo(style);
 | 
						|
 | 
						|
            return (style);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region CopyTo
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Returns the copy of the style.
 | 
						|
        /// </summary>
 | 
						|
        /// <returns>Copy of the style.</returns>
 | 
						|
        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
 | 
						|
    }
 | 
						|
}
 |