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:
<%@ 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:
<script runat="template">
Wiki Markup
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
{
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:
IMAGE GOES HERE
Clicking the builder button will open the specified file dialog box:
IMAGE GOES HERE
You can customize the appearance of the file dialog box by applying the FileDialogAttribute to the property. For example, consider this property definition:
private string \ _openFileName = @"c:\temp\test.txt";
\ Wiki Markup
[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
{
get {return _openFileName;}
set {_openFileName= value;}
}
The resulting file dialog box looks like this:
You can specify these properties in the FileDialogAttribute:
...
Note | |
---|---|
To select a folder name instead of a file name, use the FolderNameEditor class from the .NET Framework instead: |