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
 | |
| 
 | |
|  
 | |
| 
 | |
| }
 |