107 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Text;
 | 
						|
using System.Drawing.Design;
 | 
						|
using System.ComponentModel;
 | 
						|
using System.Windows.Forms.Design;
 | 
						|
using DevComponents.DotNetBar.Controls;
 | 
						|
using DevComponents.DotNetBar.Rendering;
 | 
						|
using System.Globalization;
 | 
						|
 | 
						|
namespace DevComponents.DotNetBar.Design
 | 
						|
{
 | 
						|
    public class ColumnNamesEditor : UITypeEditor
 | 
						|
    {
 | 
						|
        #region Constructor
 | 
						|
        private TextBoxX _TextBox = null;
 | 
						|
        /// <summary>
 | 
						|
        /// Initializes a new instance of the ColumnNamesEditor class.
 | 
						|
        /// </summary>
 | 
						|
        public ColumnNamesEditor()
 | 
						|
        {
 | 
						|
            _TextBox = new TextBoxX();
 | 
						|
            _TextBox.Multiline = true;
 | 
						|
            _TextBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
 | 
						|
            _TextBox.WatermarkBehavior = eWatermarkBehavior.HideNonEmpty;
 | 
						|
            _TextBox.WatermarkText = "Use Enter key to separate custom column names";
 | 
						|
            _TextBox.Border.Class = ElementStyleClassKeys.TextBoxBorderKey;
 | 
						|
            _TextBox.AcceptsReturn = true;
 | 
						|
        }
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Implementation
 | 
						|
        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
 | 
						|
        {
 | 
						|
            if (context != null
 | 
						|
                && context.Instance != null
 | 
						|
                && provider != null)
 | 
						|
            {
 | 
						|
                IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
 | 
						|
                if (edSvc != null)
 | 
						|
                {
 | 
						|
                    PropertyDescriptor descriptor = TypeDescriptor.GetProperties(context.Instance)["DataSource"];
 | 
						|
                    if (descriptor == null)
 | 
						|
                    {
 | 
						|
                        return value;
 | 
						|
                    }
 | 
						|
 | 
						|
                    _TextBox.Text = (string)value;
 | 
						|
                    _TextBox.MinimumSize = new System.Drawing.Size(24, 120);
 | 
						|
                    edSvc.DropDownControl(_TextBox);
 | 
						|
 | 
						|
                    return _TextBox.Text;
 | 
						|
                }
 | 
						|
            }
 | 
						|
            return value;
 | 
						|
        }
 | 
						|
 | 
						|
        public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
 | 
						|
        {
 | 
						|
            return UITypeEditorEditStyle.DropDown;
 | 
						|
        }
 | 
						|
        #endregion
 | 
						|
    }
 | 
						|
 | 
						|
    #region ColumnNamesConverter
 | 
						|
    public class ColumnNamesConverter : TypeConverter
 | 
						|
    {
 | 
						|
        // Methods
 | 
						|
        public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
 | 
						|
        {
 | 
						|
            return ((sourceType == typeof(string)) || base.CanConvertFrom(context, sourceType));
 | 
						|
        }
 | 
						|
        const string tempCommaReplacement = "```";
 | 
						|
        public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
 | 
						|
        {
 | 
						|
            if (value != null && value is string)
 | 
						|
            {
 | 
						|
                string s = ((string)value).Replace(",,", tempCommaReplacement);
 | 
						|
                s = s.Replace(",", "\r\n");
 | 
						|
                s = s.Replace(tempCommaReplacement, ",");
 | 
						|
                return s;
 | 
						|
            }
 | 
						|
            return value;
 | 
						|
        }
 | 
						|
 | 
						|
        public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
 | 
						|
        {
 | 
						|
            if ((destinationType != typeof(string)) || !(value is string))
 | 
						|
            {
 | 
						|
                return base.ConvertTo(context, culture, value, destinationType);
 | 
						|
            }
 | 
						|
            if (value != null)
 | 
						|
            {
 | 
						|
                string s = ((string)value).Replace(",", tempCommaReplacement);
 | 
						|
                s = s.Replace("\r\n", ",");
 | 
						|
                s = s.Replace(tempCommaReplacement, ",");
 | 
						|
                return s;
 | 
						|
            }
 | 
						|
            return "";
 | 
						|
        }
 | 
						|
    }
 | 
						|
    #endregion
 | 
						|
 | 
						|
 
 | 
						|
 | 
						|
}
 |