The FileNameEditor class lets you provide your users with a standard open file dialog box or save file dialog box from the CodeSmith property grid. To use this class, you must include a reference to the CodeSmith.CustomProperties assembly in your template. You'll make the code simpler if you import the namespace as well:
Code Block | ||
---|---|---|
| ||
<%@ Assembly Name="CodeSmith.CustomProperties" %> |
...
<%@ Import Namespace="CodeSmith.CustomProperties" %> |
After you include the appropriate assembly reference, you can define a property in a script block that uses the FileNameEditor:
Code Block | ||
---|---|---|
| ||
<script runat="template"> |
...
private string _userFileName = @"c:\temp\test.txt"; |
...
[Editor(typeof(FileNameEditor), typeof(System.Drawing.Design.UITypeEditor)), |
...
Category("Custom"), Description("User selected file.")] |
...
public string UserFileName |
...
{ get {return _userFileName;} |
...
set {_userFileName= value;} |
...
} |
...
</script> |
When the user executes the template, the specified property will display a builder button on the property sheet:
...
You can customize the appearance of the file dialog box by applying the FileDialogAttribute to the property. For example, consider this property definition:
Code Block | ||
---|---|---|
| ||
private string _openFileName = @"c:\temp\test.txt"; |
...
[Editor(typeof(FileNameEditor), typeof(System.Drawing.Design.UITypeEditor)), |
...
FileDialogAttribute(FileDialogType.Open, Title="Select Input File"), |
...
Category("Custom"), Description("User selected file.")] |
...
public string OpenFileName |
...
{ get {return _openFileName;} |
...
set {_openFileName= value;} |
...
} |
The resulting file dialog box looks like this:
...