#if FRAMEWORK20
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Drawing;
namespace DevComponents.DotNetBar
{
    [System.ComponentModel.ToolboxItem(false), System.ComponentModel.DesignTimeVisible(false), TypeConverter(typeof(System.ComponentModel.ExpandableObjectConverter))]
    public class AdvPropertyGridAppearance : Component, INotifyPropertyChanged
    {
        #region Internal Implementation
        protected override void Dispose(bool disposing)
        {
            if (BarUtilities.DisposeItemImages && !this.DesignMode)
            {
                BarUtilities.DisposeImage(ref _PropertyValueErrorImage);
            }
            base.Dispose(disposing);
        }
        private Color _ErrorHighlightColor = ColorScheme.GetColor(0xD99694);
        /// 
        /// Gets or sets the color of the node highlight when error has occurred while setting property value. 
        /// 
        [Category("Colors"), Description("Indicates color of the node highlight when error has occurred while setting property value.")]
        public Color ErrorHighlightColor
        {
            get { return _ErrorHighlightColor; }
            set
            {
                _ErrorHighlightColor = value;
                OnPropertyChanged(new PropertyChangedEventArgs("ErrorHighlightColor"));
            }
        }
        /// 
        /// Gets whether property should be serialized.
        /// 
        [EditorBrowsable(EditorBrowsableState.Never)]
        public bool ShouldSerializeErrorHighlightColor()
        {
            return !_ErrorHighlightColor.Equals(ColorScheme.GetColor(0xD99694));
        }
        /// 
        /// Resets property to its default value.
        /// 
        [EditorBrowsable(EditorBrowsableState.Never)]
        public void ResetErrorHighlightColor()
        {
            this.ErrorHighlightColor = ColorScheme.GetColor(0xD99694);
        }
        private Color _SuccessHighlightColor = ColorScheme.GetColor(0x9BBB59);
        /// 
        /// Gets or sets the color of the node highlight when property update was successful.
        /// 
        [Category("Colors"), Description("Indicates color of node highlight when property update was successful.")]
        public Color SuccessHighlightColor
        {
            get { return _SuccessHighlightColor; }
            set
            {
                _SuccessHighlightColor = value;
                OnPropertyChanged(new PropertyChangedEventArgs("SuccessHighlightColor"));
            }
        }
        /// 
        /// Gets whether property should be serialized.
        /// 
        [EditorBrowsable(EditorBrowsableState.Never)]
        public bool ShouldSerializeSuccessHighlightColor()
        {
            return !_SuccessHighlightColor.Equals(ColorScheme.GetColor(0x9BBB59));
        }
        /// 
        /// Resets property to its default value.
        /// 
        [EditorBrowsable(EditorBrowsableState.Never)]
        public void ResetSuccessHighlightColor()
        {
            this.SuccessHighlightColor = ColorScheme.GetColor(0x9BBB59);
        }
        private ElementStyle _DefaultPropertyStyle = null;
        /// 
        /// Gets or sets default style for property node.
        /// 
        /// 
        /// Default value is null.
        /// 
        [DefaultValue(null), /*Editor("DevComponents.AdvTree.Design.ElementStyleTypeEditor, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral,  PublicKeyToken=90f470f34c89ccaf", typeof(System.Drawing.Design.UITypeEditor)),*/ Description("Gets or sets default style for property node.")]
        public ElementStyle DefaultPropertyStyle
        {
            get { return _DefaultPropertyStyle; }
            set
            {
                if (_DefaultPropertyStyle != value)
                {
                    if (_DefaultPropertyStyle != null)
                        _DefaultPropertyStyle.StyleChanged -= new EventHandler(this.DefaultPropertyStyleChanged);
                    if (value != null)
                        value.StyleChanged += new EventHandler(DefaultPropertyStyleChanged);
                    _DefaultPropertyStyle = value;
                    OnPropertyChanged(new PropertyChangedEventArgs("DefaultPropertyStyle"));
                }
            }
        }
        private void DefaultPropertyStyleChanged(object sender, EventArgs e)
        {
            
        }
        private ElementStyle _ReadOnlyPropertyStyle = null;
        /// 
        /// Gets or sets style for property node when in read-only state.
        /// 
        /// 
        /// Default value is null.
        /// 
        [DefaultValue(null), /*Editor("DevComponents.AdvTree.Design.ElementStyleTypeEditor, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral,  PublicKeyToken=90f470f34c89ccaf", typeof(System.Drawing.Design.UITypeEditor)),*/ Description("Gets or sets style for property node when in read-only state.")]
        public ElementStyle ReadOnlyPropertyStyle
        {
            get { return _ReadOnlyPropertyStyle; }
            set
            {
                if (_ReadOnlyPropertyStyle != value)
                {
                    if (_ReadOnlyPropertyStyle != null)
                        _ReadOnlyPropertyStyle.StyleChanged -= this.ReadOnlyPropertyStyleChanged;
                    if (value != null)
                        value.StyleChanged += ReadOnlyPropertyStyleChanged;
                    _ReadOnlyPropertyStyle = value;
                    OnPropertyChanged(new PropertyChangedEventArgs("ReadOnlyPropertyStyle"));
                }
            }
        }
        private void ReadOnlyPropertyStyleChanged(object sender, EventArgs e)
        {
        }
        private ElementStyle _ValueChangedPropertyStyle = null;
        /// 
        /// Gets or sets style for property node when in read-only state.
        /// 
        /// 
        /// Default value is null.
        /// 
        [DefaultValue(null), /*Editor("DevComponents.AdvTree.Design.ElementStyleTypeEditor, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral,  PublicKeyToken=90f470f34c89ccaf", typeof(System.Drawing.Design.UITypeEditor)),*/ Description("Gets or sets style for property node when in read-only state.")]
        public ElementStyle ValueChangedPropertyStyle
        {
            get { return _ValueChangedPropertyStyle; }
            set
            {
                if (_ValueChangedPropertyStyle != value)
                {
                    if (_ValueChangedPropertyStyle != null)
                        _ValueChangedPropertyStyle.StyleChanged -= this.ValueChangedPropertyStyleChanged;
                    if (value != null)
                        value.StyleChanged += ValueChangedPropertyStyleChanged;
                    _ValueChangedPropertyStyle = value;
                    OnPropertyChanged(new PropertyChangedEventArgs("ValueChangedPropertyStyle"));
                }
            }
        }
        private void ValueChangedPropertyStyleChanged(object sender, EventArgs e)
        {
        }
        private ElementStyle _DefaultEditCellStyle = null;
        /// 
        /// Gets or sets style for property node edit cell when displaying unchanged property value.
        /// 
        /// 
        /// Default value is null.
        /// 
        [DefaultValue(null), /*Editor("DevComponents.AdvTree.Design.ElementStyleTypeEditor, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral,  PublicKeyToken=90f470f34c89ccaf", typeof(System.Drawing.Design.UITypeEditor)),*/ Description("Indicates style for property node edit cell when displaying unchanged property value.")]
        public ElementStyle DefaultEditCellStyle
        {
            get { return _DefaultEditCellStyle; }
            set
            {
                if (_DefaultEditCellStyle != value)
                {
                    if (_DefaultEditCellStyle != null)
                        _DefaultEditCellStyle.StyleChanged -= this.DefaultEditCellStyleChanged;
                    if (value != null)
                        value.StyleChanged += ValueChangedPropertyStyleChanged;
                    _DefaultEditCellStyle = value;
                    OnPropertyChanged(new PropertyChangedEventArgs("DefaultEditCellStyle"));
                }
            }
        }
        private void DefaultEditCellStyleChanged(object sender, EventArgs e)
        {
        }
        private ElementStyle _CategoryStyle = null;
        /// 
        /// Gets or sets style for property node when in read-only state.
        /// 
        /// 
        /// Default value is null.
        /// 
        [DefaultValue(null), /*Editor("DevComponents.AdvTree.Design.ElementStyleTypeEditor, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral,  PublicKeyToken=90f470f34c89ccaf", typeof(System.Drawing.Design.UITypeEditor)),*/ Description("Gets or sets style for property node when in read-only state.")]
        public ElementStyle CategoryStyle
        {
            get { return _CategoryStyle; }
            set
            {
                if (_CategoryStyle != value)
                {
                    if (_CategoryStyle != null)
                        _CategoryStyle.StyleChanged -= this.CategoryStyleChanged;
                    if (value != null)
                        value.StyleChanged += CategoryStyleChanged;
                    _CategoryStyle = value;
                    OnPropertyChanged(new PropertyChangedEventArgs("CategoryStyle"));
                }
            }
        }
        private void CategoryStyleChanged(object sender, EventArgs e)
        {
        }
        private Image _PropertyValueErrorImage = null;
        /// 
        /// Gets or sets the image that is displayed in property name cell when property value has failed the validation.
        /// 
        [DefaultValue(null), Category("Appearance"), Description("Indicates image that is displayed in property name cell when property value has failed the validation.")]
        public Image PropertyValueErrorImage
        {
            get { return _PropertyValueErrorImage; }
            set
            {
                if (_PropertyValueErrorImage == value) return;
                _PropertyValueErrorImage = value;
                OnPropertyChanged(new PropertyChangedEventArgs("PropertyValueErrorImage"));
            }
        }
        #endregion
        #region INotifyPropertyChanged Members
        private void OnPropertyChanged(PropertyChangedEventArgs e)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null)
                handler(this, e);
        }
        public event PropertyChangedEventHandler PropertyChanged;
        #endregion
    }
}
#endif