Note: Wherever "Tool" appears below, it represents the name of the tool you are building. For example, if you are building a tool for doing curve fitting, you might call your tool Fit. Replace "Tool" everywhere below by "Fit". 1) Create a new bundle using ProjectBuilder. Make sure you create a bundle and not an application or palette. The bundle must have the same name as the tool being built. 2) Use ToolBuilder to automatically create the Tool.(mh), ToolInspector.(mh) classes and TooAndInspectorProtocol.h. Save these files in the new tool bundle directory. 3) Using ProjectBuilder, add the files created by ToolBuilder to the project. If you requested an inspector when ToolBuilder was run, move ToolInspector.nib into English.lproj and then use ProjectBuilder to add the nib file to the project. 4) Add a 36x36 pixel tiff file to the project. This icon will represent the tool in the application. The file must have the name Tool.tiff. The icon must have a transparent background in order to let the button's highlighting show through. 5) Launch InterfaceBuilder by clicking on ToolInspector.nib in ProjectBuilder. An empty panel will appear. This panel will represent your tool's inspector. 6) Add to the panel whatever objects (text fields, sliders, etc.) needed by the inspector. 7) In the classes window, subclass object. The subclass should be Tool. Parse Tool. Make the file's owner be a Tool object. 8) In the classes window, subclass object. The subclass should be ToolInspector. Parse and instantiate a ToolInspector. 9) Make the following hook-ups. Connect the Tool's inspector outlet to the ToolInspector object. Connect the ToolInspector's object outlet to the Tool. Connect the ToolInspector's window outlet to the panel. 10) Add any custom instance variables needed by ToolInspector to ToolInspector.h, and then parse ToolInspector. Make the necessary connections from the ToolInspector to objects in the inspector's window. 11) If necessary, implement the ok: and revert: methods in ToolInspector. Hook up any controls in the inspectors window so that they send the ok: message to the ToolInspector. 12) Save the nib file. 13) Add any needed instance variables to Tool.h. Add any needed initialization to the init method in Tool.m. (You should initialize variables that will be displayed in Tool's inspector.) Implement any methods (in Tool.m) that will be called from within ToolInspector's ok: and revert: methods. Add the prototypes to Tool.h. These will be methods to set or retrieve the values of instance variables altered or displayed in the inspector. Implement the evaluate: method in Tool.m. 14) From the Project submenu in ProjectBuilder, click on "Add Help Directory". Double-click the Help directory under "Other Resources" and edit the contents as follows. a) Delete Index.rtfd. b) Create a new rtfd file (not rtf!) named Tool.rtfd and put in it a description of the tool and any special instructions the user might need to use the tool. Store the file in the Help folder in the English.lproj subdirectory. c) Delete the contents of TableOfContents.rtf and replace them by the name of your tool (for example, "FitTool") followed by a carriage return. Now put the insertion point at the beginning of the line with the name of the tool. From Edit's menu, choose Format, Help, and then Insert Link. In the panel that appears, press the Set button. In the OpenPanel, choose the file you created in step b). Now press the OK button. You'll want to do this next part only after you're through building and testing the tool, so that you don't have to redo it repeatedly every time you recompile. Open Tool.wbTool as a folder, look inside English.lproj, and delete the file Help.store. Put of copy of the Help folder from the project directory's English.lproj in the wbTool's English.lproj. (Be careful to copy it--not move it!) You can delete the TableOfContents.rtf file from this copy. This procdure won't be necessary in a future version of Workbench, when NeXT's NXHelpPanel works correctly for dynamically loaded objects. 15) Build. 16) Rename the resulting bundle so that it has the extension .wbTool (Do NOT replace the word "Tool" in this extension by the name of your specific tool.)