269 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			269 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
#if FRAMEWORK20
 | 
						|
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Text;
 | 
						|
using System.ComponentModel;
 | 
						|
using System.Windows.Forms;
 | 
						|
using DevComponents.Editors;
 | 
						|
using DevComponents.Editors.DateTimeAdv;
 | 
						|
using System.Runtime.Serialization;
 | 
						|
 | 
						|
namespace DevComponents.DotNetBar.Validator
 | 
						|
{
 | 
						|
    /// <summary>
 | 
						|
    /// Represents base validator used by SuperValidator component.
 | 
						|
    /// </summary>
 | 
						|
    [ToolboxItem(false), DesignTimeVisible(false)]
 | 
						|
    public abstract class ValidatorBase : Component
 | 
						|
    {
 | 
						|
        #region Events
 | 
						|
        /// <summary>
 | 
						|
        /// Occurs when validator retrieves the value for the control. It allows you to return value for the controls validator does not recognize.
 | 
						|
        /// </summary>
 | 
						|
        public event ValidatorGetValueEventHandler GetValue;
 | 
						|
        #endregion
 | 
						|
        #region Implementation
 | 
						|
        private string _ErrorMessage = "";
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the error message that is displayed by error provider when validation fails.
 | 
						|
        /// </summary>
 | 
						|
        [DefaultValue(""), Category("Appearance"), Description("Indicates error message that is displayed when validation fails."), Localizable(true)]
 | 
						|
        public virtual string ErrorMessage
 | 
						|
        {
 | 
						|
            get { return _ErrorMessage; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                _ErrorMessage = value;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        private bool _LastValidationResult = true;
 | 
						|
        /// <summary>
 | 
						|
        /// Gets the last validation result returned from Validate call. True if validation was successful or false if validation failed.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false)]
 | 
						|
        public bool LastValidationResult
 | 
						|
        {
 | 
						|
            get { return _LastValidationResult; }
 | 
						|
            internal set
 | 
						|
            {
 | 
						|
            	_LastValidationResult = value;
 | 
						|
            }
 | 
						|
        }
 | 
						|
        
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Validates the input control.
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="input">Input control to validate.</param>
 | 
						|
        /// <returns>true if validation is successful otherwise false</returns>
 | 
						|
        public abstract bool Validate(Control input);
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets the input control value.
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="input">Control to return value for.</param>
 | 
						|
        /// <returns>Controls value</returns>
 | 
						|
        protected virtual object GetControlValue(Control input)
 | 
						|
        {
 | 
						|
            return GetControlValue(input, _ValuePropertyName);
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets the input control value.
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="input">Control to return value for.</param>
 | 
						|
        /// <returns>Controls value</returns>
 | 
						|
        protected virtual object GetControlValue(Control input, string valuePropertyName)
 | 
						|
        {
 | 
						|
            ValidatorGetValueEventArgs args = new ValidatorGetValueEventArgs(input, this);
 | 
						|
            OnGetValue(args);
 | 
						|
            if (args.ValueSet) return args.Value;
 | 
						|
 | 
						|
            if (_SuperValidator != null)
 | 
						|
            {
 | 
						|
                _SuperValidator.InvokeGetValue(args);
 | 
						|
                if (args.ValueSet) return args.Value;
 | 
						|
            }
 | 
						|
 | 
						|
            if (!string.IsNullOrEmpty(valuePropertyName))
 | 
						|
            {
 | 
						|
                return TypeDescriptor.GetProperties(input)[valuePropertyName].GetValue(input);
 | 
						|
            }
 | 
						|
 | 
						|
            if (input is ComboBox)
 | 
						|
            {
 | 
						|
                ComboBox box = (ComboBox)input;
 | 
						|
                return box.SelectedIndex;
 | 
						|
            }
 | 
						|
            else if (input is DevComponents.DotNetBar.Controls.ComboTree)
 | 
						|
            {
 | 
						|
                DevComponents.DotNetBar.Controls.ComboTree cbt = (DevComponents.DotNetBar.Controls.ComboTree)input;
 | 
						|
                return cbt.SelectedIndex;
 | 
						|
            }
 | 
						|
 | 
						|
            if (input is DoubleInput)
 | 
						|
                return ((DoubleInput)input).ValueObject;
 | 
						|
            else if(input is IntegerInput)
 | 
						|
                return ((IntegerInput)input).ValueObject;
 | 
						|
            else if (input is DateTimeInput)
 | 
						|
                return ((DateTimeInput)input).ValueObject;
 | 
						|
 | 
						|
            object value = input.Text;
 | 
						|
            string text = input.Text;
 | 
						|
            long l = 0;
 | 
						|
            int i = 0;
 | 
						|
            double d = 0;
 | 
						|
            if (long.TryParse(text, out l))
 | 
						|
                value = l;
 | 
						|
            else if (int.TryParse(text, out i))
 | 
						|
                value = i;
 | 
						|
            else if (double.TryParse(text, out d))
 | 
						|
                value = d;
 | 
						|
 | 
						|
            return value;
 | 
						|
        }
 | 
						|
 | 
						|
        private SuperValidator _SuperValidator = null;
 | 
						|
        /// <summary>
 | 
						|
        /// Returns SuperValidator control validator is assigned to.
 | 
						|
        /// </summary>
 | 
						|
        [Browsable(false)]
 | 
						|
        public SuperValidator SuperValidator
 | 
						|
        {
 | 
						|
            get { return _SuperValidator; }
 | 
						|
            internal set { _SuperValidator = value; }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Raises the GetValue event.
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="e">Event arguments.</param>
 | 
						|
        protected virtual void OnGetValue(ValidatorGetValueEventArgs e)
 | 
						|
        {
 | 
						|
            ValidatorGetValueEventHandler handler = GetValue;
 | 
						|
            if (handler != null) handler(this, e);
 | 
						|
        }
 | 
						|
 | 
						|
        private bool _DisplayError = true;
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets whether error is displayed using the error provider on SuperValidator when validation fails. Default value is true.
 | 
						|
        /// </summary>
 | 
						|
        [DefaultValue(true), Category("Behavior"), Description("Indicates whether error is displayed using the error provider on SuperValidator when validation fails.")]
 | 
						|
        public bool DisplayError
 | 
						|
        {
 | 
						|
            get { return _DisplayError; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                _DisplayError = value;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        private bool _Enabled = true;
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets whether validator is enabled. Default value is true.
 | 
						|
        /// </summary>
 | 
						|
        [DefaultValue(true), Category("Behavior"), Description("Indicates whether validator is enabled.")]
 | 
						|
        public bool Enabled
 | 
						|
        {
 | 
						|
            get { return _Enabled; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                _Enabled = value;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        private string _OptionalValidationGroup = "";
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the group name validation belongs to. When control belongs to optional validation group the validation is considered successful when any of the controls in the group validates.
 | 
						|
        /// </summary>
 | 
						|
        [DefaultValue(""), Category("Behavior"), Description("Specifies group name validation belongs to. When control belongs to optional validation group the validation is considered successful when any of the controls in the group validates.")]
 | 
						|
        public string OptionalValidationGroup
 | 
						|
        {
 | 
						|
            get { return _OptionalValidationGroup; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                if (value == null) value = "";
 | 
						|
                _OptionalValidationGroup = value;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        private eHighlightColor _HighlightColor = eHighlightColor.None;
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the highlight color for control when validation fails if Highlighter component is used on SuperValidator. Default Value is None.
 | 
						|
        /// </summary>
 | 
						|
        [DefaultValue(eHighlightColor.None), Category("Appearance"), Description("Indicates highlight color for control when validation fails if Highlighter component is used on SuperValidator.")]
 | 
						|
        public eHighlightColor HighlightColor
 | 
						|
        {
 | 
						|
            get { return _HighlightColor; }
 | 
						|
            set { _HighlightColor = value; }
 | 
						|
        }
 | 
						|
 | 
						|
        private string _ValuePropertyName = "";
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the value property name for the control to validate.
 | 
						|
        /// </summary>
 | 
						|
        [DefaultValue(""), Category("Behavior"), Description("Indicates value property name for the control to validate.")]
 | 
						|
        public string ValuePropertyName
 | 
						|
        {
 | 
						|
            get { return _ValuePropertyName; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                _ValuePropertyName = value;
 | 
						|
            }
 | 
						|
        }
 | 
						|
        
 | 
						|
        #endregion
 | 
						|
    }
 | 
						|
 | 
						|
    #region ValidatorGetValue
 | 
						|
    public class ValidatorGetValueEventArgs : EventArgs
 | 
						|
    {
 | 
						|
        /// <summary>
 | 
						|
        /// Initializes a new instance of the ValidatorGetValueEventArgs class.
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="control"></param>
 | 
						|
        /// <param name="validator"></param>
 | 
						|
        public ValidatorGetValueEventArgs(Control control, ValidatorBase validator)
 | 
						|
        {
 | 
						|
            Control = control;
 | 
						|
            Validator = validator;
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets Control to retrieve value for.
 | 
						|
        /// </summary>
 | 
						|
        public readonly Control Control;
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets validator that is requesting value.
 | 
						|
        /// </summary>
 | 
						|
        public readonly ValidatorBase Validator;
 | 
						|
 | 
						|
        private object _Value;
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets the value that will be used by validator.
 | 
						|
        /// </summary>
 | 
						|
        public object Value
 | 
						|
        {
 | 
						|
            get { return _Value; }
 | 
						|
            set
 | 
						|
            {
 | 
						|
                _Value = value;
 | 
						|
                ValueSet = true;
 | 
						|
            }
 | 
						|
        }
 | 
						|
        internal bool ValueSet = false;
 | 
						|
        /// <summary>
 | 
						|
        /// Resets the Value set and indicates that validator will internally retrieve value for the control.
 | 
						|
        /// </summary>
 | 
						|
        public void ResetValue()
 | 
						|
        {
 | 
						|
            _Value = null;
 | 
						|
            ValueSet = false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    public delegate void ValidatorGetValueEventHandler(object sender, ValidatorGetValueEventArgs ea);
 | 
						|
    #endregion
 | 
						|
}
 | 
						|
#endif |