September 93 - ObjectMaster
ObjectMaster is an object-oriented development tool available on the Macintosh. It provides a total environment, including the ability to display a class tree of your application. Its a source code editor that knows about object-oriented classes, methods, and member fields.
In version 1.0 ObjectMaster introduced one of the only integrated object-oriented development tools. With version 2.0 it has further enhanced the environment for its existing users, and hopes to gain some new ones.
General Features of ObjectMaster
ObjectMaster is a "generic" object-oriented code development tool. It is a real life demonstration of Apple's concept for having applications do a few things very well and rely on others for specific tasks. ObjectMaster (OM) accomplished this using the standard suite of AppleEvents plus a few other custom ones.
OM does not have a built in compiler, resource editor or debugger; it lets the user choose these tools. It then uses AppleEvents to execute the appropriate tool for the corresponding task.
OM is not only for users of object-oriented languages. It is also accommodating to users of non-object-oriented Programming languages. This is because OM has an editing environment with custom formatting and macro facilities in the File window, and the capability of managing your procedures with its Browser window.
Object-oriented programmers will be happy to know that OM will assist you in subclassing Super Classes and even allows you to choose the methods to override. It also allows you to mark the classes so that OM can distinguish the difference between custom classes and components or other class libraries.
Aside from the standard editor capabilities, it also colorizes the keywords in your source, like the comments, compiler options and keywords from programming languages. You can customize this easily via a dialog, and these settings are programming language specific. There are sets for Pascal, C/C++ and Modula-2. It also accommodates source code from other platforms by allowing the users to define their own keywords to ignore or to have values of either TRUE or FALSE.
One thing the 4th Dimension users will feel familiar with are the menu bars in the OM windows similar to those in 4th Dimension. In version 2.0 the user can choose whether these menu bars are shown in the respective windows, along with the application menu bar in Geneva 9 point or 12 point, or combine all the menus in one application menu bar. If the latter is chosen the content of the application menu bar becomes context sensitive with the current active window. Unfortunately, ObjectMaster does not care how wide your screen is, so if your screen is too narrow the menu bar will run off the right hand side of the screen.
OM also has the capability to generate a Make file for your source code.
The Browser Window
This is where OM displays the classes, member fields and member methods. It organizes these properties within three lists shown as three of the Browser's four panes. The class list can display its content in a hierarchical or alphabetical order. When the user selects one of the items in this list, it will automatically update the method and member field lists to show the class's methods and member fields respectively. When the user selects an item from the method list OM will display its implementation in the edit pane of the Browser window. OM will also identify any overridden methods by underlining their names in the method list. Each of the lists can display its contents in alphabetical order; the methods in the Method list and the member fields in the Member Field list may also be displayed in the order in which they were defined; and the Class list will also display in hierarchical order.
The File Window
This window is similar to other editor windows such as those available in MPW and Symantec. The difference is that it has a list of macros organized in a menu. These macros can be expanded anywhere the caret is located within the Edit area. OM comes with a few programming language specific macros, and the macros can be customized by the user. Unfortunately, customizing these macros is not that easy since the user has to do it with ResEdit.
The Worksheet Window
This is similar to the MPW worksheet. The user can execute AppleEvents, MPW scripts, and commands. ObjectMaster accomplishs this by using AppleEvents. Therefore, it requires accompanying AppleEvent aware tools, like MPW 3.3, ToolServer, and Think Project Manager 6.0
The Project Window
This is where the files for the OM project are listed when the user chooses "Add Source Files." The files can be listed in many different orders, including by pathname, by Filename, by size, by programming language, by project state, by suffix, by color, or by date. This window is MPW Projector aware, meaning that OM will not allow the user to modify a file if it has not been checked out modifiable. For each item in this window the user may choose to display different information, like the language, project state, name, modification date, file size, unit name and pathname.
The Tree Window
This window displays the class tree for your object-oriented application. This is a great way of seeing how things are organized in your application. When the user double clicks on one of the nodes in the tree, OM will open a Browser window displaying the class's methods and fields.
Help from 411
ObjectMaster supports the same 411 help files shipped with MPW. It even lets you generate basic 411 syntax as a base for your own custom 411 Help files. You can get 411 help for any procedure or method simply by double clicking on the item you want help with. The 411 help text will be displayed in a help window, where you can copy anything from it to your own source.
Now for the New Stuff
There are over a 100 new enhancements, each of which makes the new version even more valuable. Great improvements were also made to OM's manual. It is more accurate and easier to understand. I will now point out some of the new enhancements which are significant in providing an improvement to the total experience for the user.
Enhancements made to OM's Project window begin with support for recursive projector databases both with Source-Server and MPW. OM has full support for SourceServer. After the "Use Projector" option is selected in the Project menu, OM uses and launches if necessary, SourceServer for all projector tasks. Since OM has always supported the ToolServer, everything you want to do with MPW is available to the OM user. Plus, THINK users can now enjoy the features of Projector as well, without having to use MPW. There are also new supports for the Projector. These features are all accessible from the Projector menu:
- "New Project Database…" creates a new projector database and makes it the database for the current OM project.
- "Orphan" makes the selected file an orphan from the current Projector database. This feature is implemented by OM directly, and does not require SourceServer or MPW.
- "Update From Project Database" checks out read-only files from the Projector database which are newer than the user's local version. The checked out files are selected in the Project window after the operation.
- "Check In My Changes" checks in all the files the user has checked out. The files are then read-only, and are selected in the project window after the operation.
- "Update Database With My Changes" is the same as "Check In My Changes" but keeps the files modifiable.
- "Project Information" dumps project information into the OM worksheet. If some files are selected, only information about these files is displayed, otherwise the full project information is dumped. Unfortunately, due to limitations in PPC only 32k of data can be sent back from SourceServer, so some information may be truncated. This is a bug in Apple's AppleEvent manager and not in OM.
- "Cancel Checkout…" behaves the same way as the MPW Cancel Checkout command.
Some of the other improvements in this window include the menu command "In project folder only" which now means in the project folder and all its included folders (as compared to the project folder and not the included ones in version 1.0). You can now rename files in the Project window.
The user can now use the new menu item "Ignore MPW Settings" in the File menu of the Project window, to choose on a per project basis whether he wants to use the MPW settings such as font, size, and tab size, or use a project setting. This allows multiple programmers working on the same set of sources to have their own preferences setup the way they want it. This also enables the user to visualize source code he inherited from somebody else consistently. The user can also add break lines in the Project window, when sorting by color or folder for instance. When items in the Project window are sorted in project order, the files in the Project window can be re-ordered by dragging them in the Project list.
Enhancement of this window starts with the ability for the user to select more than one class in the Class pane of the Browser window and then change their attributes like their color or the User Class status, or sort the classes by color. There is also an option to use the color of the source file from the Finder as the color for the class.
The three list panes were in horizontal orientation in version 1.0. This sometimes does not provide a tall enough Text pane to see the required source. Smalltalk users are more used to the vertical orientation, but users of narrow monitors will find this orientation inconvenient. OM 2.0 lets you to choose.
The Browser window now maintains a list of the last ten methods opened in the window. There is a cartouche at the bottom of the Browser window. The popup will show the different methods available; selecting one will replace the existing method by the one you choose.
The "Save As Template Window" for Browser window now save the browser options (Hierarchical/Alpha, Inherited Methods/Fields, Show File types…) as the default to be used when opening a new browser.
Double clicking on a class or a field in a Browser window opens the class definition in the edit view of the Browser. This can be edited and saved back. Due to these changes the items "Close Method", "Save Method" and "Revert Method" now change on the fly according to what is edited in the text view.
In the Method and Member field pane in the Browser window, the user can now sort by access rights. If this option is selected OM will put public member first then protected members and last private members.
Now users can do searches in the window that displays the 411 help text, and hypertext is available through Command Click on any word you want further help with. The definition of the word you want help with will be displayed in the upper part of the Help window, where the bottom half will still display the textual explanation.
The new menu command "Skip Warning" is a handy way to omit all compilation warnings without setting this flag in the compile statements. When this flag is toggled, while an Error window is opened, the user needs to close it and perform a "Build Error List" to see the change reflected. The new menu command "Set SYM File" lets the user associate different SYM files with the same project. The "Set Build Script" menu item lets the user choose which script to use for compilation; the default is CompileProject, so that several versions of the application can be built from the same project and still use the Build command.
Enhanced C++ features
There is now support for distinguishing multiple inheritance classes. A "°" at the end of the class name shows that it is inherited from several classes. The class will be attached to the first of the base class in the Class pane when the hierarchical display option is chosen in the Browser window and in the Class Tree. Option-clicking on the class in the class tree will show the list of its parents. Support for C++ 3.0 template is also added. The template classes appear as regular classes with their name annotated with a † at the end in the Browser window and the Class Trees to show they are not real classes. The same thing is done for template functions.
Enhancement In General
The following are items of improvement throughout the product that do not fit in any particular category:
- The make file generated is now sorted from fewer dependents to more dependents, and all the files on which a specific file depend are compiled before the file itself is compiled.
- When a file has been changed in version 1.0 OM normally brings up an alert to explain the problem, but now it will just perform the required reparsing automatically.
- The find in Dictionary dialog in now modeless, which allows it to be kept around for lookups. There's also a new multifile search command where after the search criteria are set in the Find dialog, it will search for the file after the last file you search, in the project order.
- Now the names of the script and tools executed in MPW or ToolServer will be displayed in the Worksheet's cartouche similar to MPW's worksheet, so that the user can tell what is happening behind the scene in MPW or ToolServer. There is a difference from MPW's worksheet, where if you click in the cartouche it will toggle between two displays: the current tool or script running and the percentage completed.
- Option-Double click has been extended to open files by their name or unit name. Option double click on x.h in an #include "x.h" will open the file x.h if it is in the project. Option double click on UMacApp in a uses clause in pascal will open the file UMacApp.p. Another way for doing the same thing is from the new "Open Selection" menu item in the File menu.
- Parsing of files is now much quicker. During parsing there is also a status display which keeps a current count of all the problems encountered. This parsing process now also makes use of MutiFinder memory under System 7, so that the likelihood of running out of memory is reduced.
- Now when OM encounters a file error, this information is stored on disk. When the program is reopened it will be shown as such.
- There is now much better background multitasking during project opening and multi file search.
- There is a new Status window accessible from the Windows menu that shows the number of classes, methods, fields, structures, segments, resources and files in memory, and the amount of free memory.
- If implementations for methods in a class are missing after the class has been modified in the Browser window, OM can create these implementations automatically if desired, or on command for a class which has missing method implementations. Pure virtual member functions will be recognized correctly, so that default implementations are not created for them. These functions show up in outline style in the Browser window. Classes with pure virtual members are also displayed in outline style.
- The Find window now supports regular expressions; unfortunately, after Regular expression help is selected for this movable modal window, it may be too tall on some monitors.
- OM now supports type-ahead keyboard handling in lists, which greatly reduces scrolling and allows for getting to the desired item faster, especially on slower CPUs.
- The OM Button folder now accepts aliases and special consideration is made for applications so that OM launches them automatically.
- Each file now can be flagged as a user file as opposed to a library file, and you can indicate whether or not it should appear in the makefile.
- When a file cannot be found during opening of the OM project, a Replacement dialog is displayed for the user to locate the missing file. Now there is a new button which will enable you to skip all missing files.
- All the dialogs used for defining macros are now modeless.
- Automatic markers are created for classes definitions as well as method implementations now.
- The user can create StartScript and EndScript files in the project folder of the OM project. If they exist, OM will execute their contents upon opening and closing of the project. This allows for pre and post project customization.
- The user can now set the Text format for more than one file at a time by setting a Text format in the Project window. Text format is applied to any selected file; hence file Text format can be set without opening the files.
- The style of the text within the #if #endif block can now be set independently from the rest of the code. This style is the same as the style assigned for code that are skipped.
- OM's new menu item "Append to Clipboard" in the Edit menu, lets the user copy stuff and concatenates them with the contents of the existing clipboard, so that the user can copy multiple items from different places and pastes them in one location.
- OM now is aware of link errors and will open the CompileProject.err each time there are link errors.
- The Option click for highlighting the enclosing syntax block also takes into account the pre-processor directives like #if #else and #endif sequences.
- A Pop-up menu in the 411 window allows the user to go back to previous 411 entries.
- AppleScript is supported in the new version. The Command-Enter key combination in the Worksheet is used to execute AppleScript scripts. OM itself has support for the following classes implemented: cApplication, cWindow, cDocument.
- Two new menu items, "Execute In Shell" and "Execute In AppleScript" in the File menu of the Files window, allow for the execution of AppleScript and MPW Shell commands from any text window. The output is always directed to the Worksheet window.
- OM now supports Think Reference 2.0. When an entry has not been found in 411 or no 411 files were added to the project, OM will talk to THINK Reference 2.0 to get the information.
- A new Startup folder in the OM folder is used for automatic startup of AppleScript so that AppleScript handlers can be placed in this folder.
- The cursor now changes appropriately depending on the external tool being used; SourceServer, ToolServer, and Think Reference. This is to provide the user with more information on what is going on.
- Add File for a THINK C project is now implemented. It requires THINK Project Manager 6.0. When adding files from a THINK project, OM will let you choose if you want all files or just the files in the project folder.
- Command click in close box hides a window. Option+Command-click in close box closes all windows of the same kind as the one you clicked in. Option click in close box closes all windows except the project window.
- Command click in the title of a text file (as in the finder) brings a popup showing the folders hierarchy to which the file belongs. The long file names are truncated with "Volume:…:File" as in MPW.
- The worksheet buttons feature of OM has been extended so that under system 7 anything can be made a button. If it is a text file with an OM, MPW, ToolServer signature it will be executed in MPW/ToolServer, otherwise an open document AE is sent to the finder (so that you can make buttons for documents).
- In the documentation window, option-enter will force OM to go to Think reference even if the entry is in the 411 files for the project.
ACI has packed a lot into this latest upgrade for one of the best and most customizable development environment. It replaces MPW's editor with a more superior one, but still provides the user with the needed access to MPW's powerful tools. It also gives the MPW user the choice of using a faster compiler like the one from Symantec. All in all ObjectMaster version 2.0 is well worth the $169.00 upgrade cost for existing users.