### <== Previous | Contents | Next ==>

## The Programming Environment (cont.)

The Strongtalk programming environment (mostly written by Steffen Grarup; Gilad Bracha added the typechecking stuff) is quite different than the ones in traditional Smalltalk systems. It uses an outliner design, where constructs are represented in an indented, bullet-list tree format, which is familiar to users of Windows Explorer, and other similar programs. This format has several advantages, including the fact that it allows you to see the whole interface for a class at once, and open multiple methods at the same time in the same browser.

To understand the Strongtalk system, it will be helpful to have a relatively small, self-contained application to examine, that uses many of the major features of the system. So let's use use the Strongtalk HTML browser itself for this purpose. This browser, which is the same one that you should be viewing this tour in, is very primitive, and doesn't have the right architecture for a full-blown HTML browser. It can't even support http at the moment, so it is only good for viewing pages on the local disk (its only excuse is that it was written in a few weeks when Lars Bak bet me I couldn't write one in less than two weeks. I lost the bet). However, it is a real application; it is written in Strongtalk; it is typesafe; it is written in a normal Smalltalk style; and it uses most of the basic libraries as well as the UI libraries. So it is not a bad application to look at if you want to see how the Strongtalk system 'feels' in use.

### Hierarchy Browsers

Below is a Hierarchy Browser on the HTML browser classes. Note the description "Filter: %HTML with subclasses". What this means is that we are filtering the chosen hierarchy (I chose the whole Object hierarchy here) for classes whose comment contains the string '%HTML', and their subclasses. You can also see their superclasses, in a less bold font. You can open or close individual levels of the hierarchy by pressing on the or buttons, respectively. If you right-click on any item, you can see its context menu. To see any subhierarchy in its entirety, choose "Expand All Levels" from its menu. To open the hierarchy all the way down in one step, press the button on the toolbar.

> Class Hierarchy Browser on HTML classes (spawn)

Because the hierarchy browser above is imbedded inside another application, the menu for the browser as a whole is the context menu for the top-level entity, Object. Normally browsers have a window to themselves, in which case their top-level menu appears as the usual pull-down menu. Try pressing spawn above to launch a copy of the browser in its own window.

In the browser you opened in its own window, try looking at the 'Filtering' menu, to see how filtering works. If you turn off filtering, the whole Object hierarchy appears. You can filter on any comment substring, or on subclasses of a particular class, and you can use AND to look for multiple comment strings. You can also include all subclasses of the current filter.

At the top of the filtering menu you will find pre-constructed filters that let you look at commonly browsed library subsets, such as "User classes", which shows all the classes that users normally reference during coding. Try filtering on "Blue Book classes", and then doing "expand all". This will let you see at a glance where all the familiar classes from the Blue Book reside in the library. Note that filtering hides all subclasses that don't match the filter; if you want to see all the subclasses of the Blue Book classes, choose "with subclasses" from the Filter menu, and then "expand all" () again. Also note that file-out, typecheck, etc. all operate on the set of filtered classes, which is very convenient for saving or typechecking an application by itself. This is easy to set up for new applications, simply by adopting the convention of having some known tag string in your class comment.

Now let's open a class browser on the main class for the HTML Browser, which is HTMLView. To do this, just press on the class name in the hierarchy browser, and then continue to the next page of the tour.

### Programming Environment, cont. ==>