using System; namespace AdvancedInspector { /// /// This allows control over how a string field is displayed. /// Only useful on string field. /// [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)] public class TextFieldAttribute : Attribute, IListAttribute { private const string TITLE = "Select Path..."; private const string PATH = ""; private const string EXTENSION = ""; private string title = ""; /// /// Title of the modal dialog /// public string Title { get { return title; } set { title = value; } } private string path = "C:\\"; /// /// Default file/folder path /// public string Path { get { return path; } set { path = value; } } private string extension = ""; /// /// Force the file dialog to show only specific file type. /// public string Extension { get { return extension; } set { extension = value; } } private TextFieldType type; /// /// What type of control is this string. /// public TextFieldType Type { get { return type; } set { type = value; } } public TextFieldAttribute(TextFieldType type) : this(type, TITLE, PATH, EXTENSION) { } public TextFieldAttribute(TextFieldType type, string title) : this(type, title, PATH, EXTENSION) { } public TextFieldAttribute(TextFieldType type, string title, string path) : this(type, title, path, EXTENSION) { } public TextFieldAttribute(TextFieldType type, string title, string path, string extension) { this.type = type; this.title = title; this.path = path; this.extension = extension; } } public enum TextFieldType { Standard, Password, Area, Tag, File, Folder } }