#if FRAMEWORK20
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing.Design;
using System.ComponentModel;
using System.Windows.Forms.Design;
using System.ComponentModel.Design;
using System.Windows.Forms;
using DevComponents.DotNetBar.Validator;
namespace DevComponents.DotNetBar.Design
{
public class ValidatorEditor : UITypeEditor
{
#region Implementation
private IWindowsFormsEditorService _EditorService = null;
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
{
if (context != null
&& context.Instance != null
&& provider != null)
{
ValidatorBase es = value as ValidatorBase;
_EditorService = provider.GetService(typeof(IWindowsFormsEditorService)) as IWindowsFormsEditorService;
if (_EditorService != null)
{
ListBox list = new ListBox();
list.Items.Add("(none)");
list.Items.Add("Required Field Validator");
list.Items.Add("Regular Expression Validator");
list.Items.Add("Compare Fields Validator");
list.Items.Add("Range Validator");
list.Items.Add("Custom Code Validator");
list.SelectedIndexChanged += new EventHandler(ValidatorListSelectedIndexChanged);
_EditorService.DropDownControl(list);
int listSelectedIndex = list.SelectedIndex;
if (listSelectedIndex > 0)
{
listSelectedIndex--;
Type validatorType = null;
if (listSelectedIndex == 1)
validatorType = typeof(RegularExpressionValidator);
else if (listSelectedIndex == 2)
validatorType = typeof(CompareValidator);
else if (listSelectedIndex == 3)
validatorType = typeof(RangeValidator);
else if (listSelectedIndex == 4)
validatorType = typeof(CustomValidator);
else
validatorType = typeof(RequiredFieldValidator);
IDesignerHost dh = provider.GetService(typeof(IDesignerHost)) as IDesignerHost;
if (dh != null)
{
ValidatorBase val = dh.CreateComponent(validatorType) as ValidatorBase;
val.HighlightColor = eHighlightColor.Red;
val.ErrorMessage = "Your error message here.";
return val;
}
}
else
return null;
}
return es;
}
return null;
}
private void ValidatorListSelectedIndexChanged(object sender, EventArgs e)
{
if (_EditorService != null)
_EditorService.CloseDropDown();
}
///
/// Gets the editor style used by the EditValue method.
///
/// An ITypeDescriptorContext that can be used to gain additional context information.
/// A UITypeEditorEditStyle value that indicates the style of editor used by EditValue. If the UITypeEditor does not support this method, then GetEditStyle will return None.
///
public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
{
if (context != null && context.Instance != null)
{
return UITypeEditorEditStyle.DropDown;
}
return base.GetEditStyle(context);
}
#endregion
}
}
#endif