Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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
languagehtml/xml
<%@ 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
languagecsharp
<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
languagecsharp
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:

...