using System; using System.ComponentModel; using System.Drawing.Design; using System.Windows.Forms.Design; namespace DevComponents.Charts.Design { public class RangeValueEditor : UITypeEditor { #region Private variables private const double MinValue = 0; private const double MaxValue = 1; #endregion #region Public properties public virtual double Minimum { get { return (MinValue); } } public virtual double Maximum { get { return (MaxValue); } } #endregion #region GetEditStyle public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) { return (UITypeEditorEditStyle.DropDown); } #endregion #region GetPaintValueSupported public override bool GetPaintValueSupported(ITypeDescriptorContext context) { return (false); } #endregion #region EditValue public override object EditValue( ITypeDescriptorContext context, IServiceProvider provider, object value) { if (provider != null) { IWindowsFormsEditorService editorService = provider.GetService(typeof(IWindowsFormsEditorService)) as IWindowsFormsEditorService; if (editorService != null) { double dvalue = Convert.ToDouble(value); RangeValueDropDown rv = new RangeValueDropDown(dvalue, Minimum, Maximum, editorService, context); rv.EscapePressed = false; editorService.DropDownControl(rv); if (rv.EscapePressed == true) { context.PropertyDescriptor.SetValue(context.Instance, value); } else { Type type = value.GetType(); value = Convert.ChangeType(rv.Value, type); return (value); } } } return (base.EditValue(context, provider, value)); } #endregion } #region AngleRangeValueEditor public class AngleRangeValueEditor : RangeValueEditor { public override double Maximum { get { return (360); } } } #endregion #region AngleOffsetRangeValueEditor public class AngleOffsetRangeValueEditor : RangeValueEditor { public override double Maximum { get { return (360); } } public override double Minimum { get { return (-360); } } } #endregion #region AngleMarginRangeValueEditor public class AngleMarginRangeValueEditor : RangeValueEditor { public override double Maximum { get { return (10); } } } #endregion #region MarginRangeValueEditor public class MarginRangeValueEditor : RangeValueEditor { public override double Maximum { get { return (50); } } } #endregion #region RadiusRangeValueEditor public class RadiusRangeValueEditor : RangeValueEditor { public override double Maximum { get { return (1); } } } #endregion #region WidthRangeValueEditor public class WidthRangeValueEditor : RangeValueEditor { public override double Maximum { get { return (.3); } } } #endregion #region OffsetRangeValueEditor public class OffsetRangeValueEditor : RangeValueEditor { public override double Maximum { get { return (.3); } } public override double Minimum { get { return (-.3); } } } #endregion #region OffsetRangeValueEditor public class OffsetPosRangeValueEditor : RangeValueEditor { public override double Maximum { get { return (.9); } } public override double Minimum { get { return (0); } } } #endregion #region WidthMaxRangeValueEditor public class WidthMaxRangeValueEditor : RangeValueEditor { public override double Maximum { get { return (1); } } } #endregion #region HalfRadiusRangeValueEditor public class HalfRadiusRangeValueEditor : RangeValueEditor { public override double Maximum { get { return (.5); } } } #endregion }