using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ComponentModel; using System.Globalization; namespace Microsoft.Research.DynamicDataDisplay.Common { public sealed class DataRectConverter : TypeConverter { public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { return (sourceType == typeof(string)) || base.CanConvertFrom(context, sourceType); } public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) { return (destinationType == typeof(string)) || base.CanConvertTo(context, destinationType); } public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { if (value == null) { throw base.GetConvertFromException(value); } string source = value as string; if (source != null) { return DataRect.Parse(source); } return base.ConvertFrom(context, culture, value); } public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) { if (destinationType != null && value is DataRect) { DataRect rect = (DataRect)value; if (destinationType == typeof(string)) { return rect.ConvertToString(null, culture); } } return base.ConvertTo(context, culture, value, destinationType); } } }