The code in this project demonstrates these concepts:

Workspace Resource Programming
  Examples of using the Workspace API are implemented using resource actions that are contributed to the Navigator view and a new project wizard. By studying the code in this example you can learn how to:
  - Use the Workspace API
  - Create new resources
  - Manage resource events
Managing Resources with Natures and Builders
  The plug-in contributes the definition and implementation for a nature and a builder. By studying the code in this example you can learn how to:
  - Implement natures, builders, and use a visitor to process the resource changes passed to a builder
  - Create a new project with a custom nature
  - Add and remove natures for a project
  - Add and remove builders for a project
Resource Tagging Using Markers
  A resource change listener is used to create markers that track changes to files. By studying the code in this example you can learn how to:
  - Create new marker extensions that reuse Eclipse marker support
  - Add and remove markers from resources

### Project Structure

The plug-in defines actions, natures, builders, a new project wizard, and a marker. These definitions can be reviewed in the `plugin.xml` file:
Three packages are used to organize the code included in this project. Each package corresponds to one of the focus areas as discussed in the Workspace programming and extension lecture.

The IResourceIDs class defines common strings and global control fields used in many of the other classes:
A global trace setting exists in IResourceIDs, if TRACE_ENABLED is set to true, trace messages are written regardless of the local traceEnabled value.

The action contributions provided in each package all inherit from the abstract class ActionResourceAction. This provides support for common information dialogs and a common traceEnabled field. These classes inherit this function:

© Copyright International Business Machines Corporation, 2003.
All rights reserved.