// Copyright 2005 by Omar Al Zabir. All rights are reserved.
//
// If you like this code then feel free to go ahead and use it.
// The only thing I ask is that you don't remove or alter my copyright notice.
//
// Your use of this software is entirely at your own risk. I make no claims or
// warrantees about the reliability or fitness of this code for any particular purpose.
// If you make changes or additions to this code please mark your code as being yours.
//
// website http://www.oazabir.com, email OmarAlZabir@gmail.com, msn oazabir@hotmail.com
using System;
using System.IO;
using System.Drawing;
using System.Drawing.Design;
using System.ComponentModel;
using System.Windows.Forms;
using System.Runtime.CompilerServices;
namespace RSSCommon.PropertyEditor{
/// <summary>
/// Summary description for UIFileDialogEditor.
/// </summary>
public class UIFileDialogEditor : UITypeEditor
{
public UIFileDialogEditor()
{
//
// TODO: Add constructor logic here
//
}
[RefreshProperties(RefreshProperties.All)]
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object propertyValue)
{
FileDialog dialogControl;
if (((context == null) || (provider == null)) || (context.Instance == null))
{
return base.EditValue(provider, RuntimeHelpers.GetObjectValue(propertyValue));
}
if (context.PropertyDescriptor.Attributes[typeof(SaveFileDialogAttribute)] == null)
{
dialogControl = new OpenFileDialog();
}
else
{
dialogControl = new SaveFileDialog();
}
dialogControl.Title = "Select " + context.PropertyDescriptor.DisplayName;
dialogControl.FileName = (string)propertyValue;
CommonDialogFilterAttribute attributeInstance = (CommonDialogFilterAttribute) context.PropertyDescriptor.Attributes[typeof(CommonDialogFilterAttribute)];
if (attributeInstance != null)
{
dialogControl.Filter = attributeInstance.Filter;
}
if (dialogControl.ShowDialog() == DialogResult.OK)
{
propertyValue = dialogControl.FileName;
}
dialogControl.Dispose();
return propertyValue;
}
public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
{
if ((context != null) && (context.Instance != null))
{
return UITypeEditorEditStyle.Modal;
}
return UITypeEditorEditStyle.None;
}
}
}
|