using System; using System.Drawing.Design; using System.ComponentModel; using System.Windows.Forms; using System.Windows.Forms.Design; namespace Npgsql.Design { /// /// An UITypeEditor that simply initializes a /// ConnectionStringEditorForm if possible /// internal class ConnectionStringEditor : UITypeEditor { /// /// Edits the Value of the given Object using the EditSyle given by GetEditStyle. /// /// An ITypeDescriptorContext, through wich you can get additional context information. /// An IServiceProvider, through which this editor may order services. /// The Object to edit /// The new value of the Object 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) { ConnectionStringEditorForm eform; if(value != null && value.ToString() != String.Empty){ eform = new ConnectionStringEditorForm(value.ToString()); } else{ eform = new ConnectionStringEditorForm(); } if(edSvc.ShowDialog(eform) == DialogResult.OK){ return eform.ConnectionString; } else{ return value; } } else{ return value; } } return value; } /// /// Requests the EditSyle to be used by EditValue /// /// An ITypeDescriptorContext, through wich you can get additional context information. /// An UITypeEditorEditStyle-Value, indicating the EditStyle used by EditValue. If UITypeEditor doesn't support this method, GetEditStyle returns the value None. public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) { if (context != null && context.Instance != null) { return UITypeEditorEditStyle.Modal; } return base.GetEditStyle (context); } } }