using System.ComponentModel;
namespace DevComponents.DotNetBar.SuperGrid.Style
{
    ///
    /// TextRowVisualStyles
    ///
    public class TextRowVisualStyles : VisualStyles
    {
        #region Hidden properties
        #region Empty
        /// 
        /// Empty
        /// 
        [Browsable(false)]
        [EditorBrowsable(EditorBrowsableState.Never)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public new TextRowVisualStyle Empty
        {
            get { return (base.Empty); }
        }
        #endregion
        #region NotSelectable
        /// 
        /// NotSelectable
        /// 
        [Browsable(false)]
        [EditorBrowsable(EditorBrowsableState.Never)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public new TextRowVisualStyle NotSelectable
        {
            get { return (base.NotSelectable); }
        }
        #endregion
        #endregion
    }
    ///
    /// TextRowVisualStyle
    ///
    public class TextRowVisualStyle : CellVisualStyle
    {
        #region Private variables
        private BaseRowHeaderVisualStyle _RowHeaderStyle;
        #endregion
        #region Public properties
        #region RowHeaderStyle
        /// 
        /// Gets or sets the RowHeader Style
        /// 
        [Category("Appearance")]
        [Description("Indicates the RowHeader Style")]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
        public BaseRowHeaderVisualStyle RowHeaderStyle
        {
            get
            {
                if (_RowHeaderStyle == null)
                {
                    _RowHeaderStyle = BaseRowHeaderVisualStyle.Empty;
                    UpdateChangeHandler(null, _RowHeaderStyle);
                }
                return (_RowHeaderStyle);
            }
            set
            {
                if (_RowHeaderStyle != value)
                {
                    UpdateChangeHandler(_RowHeaderStyle, value);
                    _RowHeaderStyle = value;
                    OnPropertyChangedEx("RowHeaderStyle", VisualChangeType.Render);
                }
            }
        }
        #endregion
        #endregion
        #region ApplyStyle
        /// 
        /// Applies the style to instance of this style.
        /// 
        /// Style to apply.
        public void ApplyStyle(TextRowVisualStyle style)
        {
            if (style != null)
            {
                base.ApplyStyle(style);
                if (style._RowHeaderStyle != null)
                    RowHeaderStyle.ApplyStyle(style._RowHeaderStyle);
            }
        }
        #endregion
        #region Copy
        /// 
        /// Returns the copy of the style.
        /// 
        /// Copy of the style.
        public new TextRowVisualStyle Copy()
        {
            TextRowVisualStyle copy = new TextRowVisualStyle();
            CopyTo(copy);
            return (copy);
        }
        #endregion
        #region CopyTo
        /// 
        /// Returns the copy of the style.
        /// 
        /// Copy of the style.
        public void CopyTo(TextRowVisualStyle copy)
        {
            base.CopyTo(copy);
            if (_RowHeaderStyle != null)
                copy.RowHeaderStyle = _RowHeaderStyle.Copy();
        }
        #endregion
        #region IDisposable
        /// 
        /// Dispose
        /// 
        public override void Dispose()
        {
            RowHeaderStyle = null;
            base.Dispose();
        }
        #endregion
    }
}