[up] [next]

Introduction

The New SystemBrowser provides all functionality of the previous (and still available) SystemBrowser. If you are new to the ST/X tools, please read the
  • support multi-select in all lists
    to apply menu functions on a set of items.

  • more powerful search functions

  • view classes by category (as done in the old browser), by nameSpace, by project or by inheritance.

  • completely re-writtten, using the GUI painter.
    this allows for easier extension (for example to add additional menu items)

  • integrates functionality from the Refactoring Browser.
    (code rewriting, checking and undo history)

  • adds additional convenient code generation functionality.
    (accessors, change & update, visitor pattern)

  • improved dialogs with entry completion
    also, most dialogs provide very reasonable defaults, for dwim (do what I mean) behavior.
    Try changing a methods category and look at the dialogs default ;-)

  • lots of informative feedback
    this includes immediate highlight of variable-accessing methods, instant syntax coloring, quick information about the selected class/method in an info area etc.


    With the new SystemBrowser, we have concentrated on making the tool as useful as possible; a lot of work has been put in offering intelligent and useful default values whenever user information is required - for example, when asking for a searchstring, the current selection, previous searches etc. all are considered as initial answers in the dialog. Also, when moving methods to other classes or packages, the previous choices are typically remembered and offered first.

    As the NewSystemBrowser is still being enhanced, and new features are added, the following pictures may be incorrect and/or the menu description be incomplete.

    When started, the new System Browser displays 6 major subviews and two toggle/filter panes; these are:

    [newSystemBrowser hardcopy]

    1. class category list
    2. class list
    3. variable list
    4. class/instance toggle
    5. method category (aka protocol-) list
    6. method (aka selector-) list
    7. namespace filter
    8. code view

    (the actual appearance of the Browser depends on the viewStyle setting; the picture above was taken with the "motif-style" in effect)

    This default appearance is similar to the old browsers appearance; however, the popUpMenus as available in the various list views are duplicated in the browsers main menu panel.

    By default, classes are grouped by their class category (as was the case with the old browser). In this mode, all classes from all namespaces and all projects are shown together, grouped only by their class category.
    This aspect can be changed via the view-menu:
    [view menu hardcopy]
    Viewmenu

    You can change the grouping, by selecting one of the other items in the view-menu; the most useful grouping is the Project view:
    [view menu hardcopy]
    This enables you to organize your own projects into different packages.

    For examples on typical uses of the browser, see the last section(s) of this document.

    Class vs. Instance

    The browser allows working on both a class and its metaclass (i.e. the classes class). Smalltalk beginners should keep in mind, that classes are objects like anything else in the system - thus the behavior of classes is described by another class (the so called metaclass).
    The set of messages understood by instances of a class is called instance protocol, while the set of messages understood by the class is called the class protocol.
    Just like instances inherit protocol from the superclass(es), class protocol is inherited from the metaclasses superclass(es).

    To switch, there are two toggle buttons named "class" and "instance".
    Selecting "instance" (which is the default) makes your changes affect the class, and therefore affects the set of messages which are understood by instances;
    selecting "class" lets you change the metaclass, and therefore affects the set of messages which are understood by the class (typically instance creation and initialization messages).

    If you are not too familiar with this concept, try the "hierarchy" function of the class-lists popupMenu - especially take a careful look at this hierarchy when looking at the class protocol.

    Icons

    By default, the NewSystemBrowser uses icons and other emphasis to highlight special attributes of classes and methods;
    this can be disabled by clearing the appropriate flags in the browsers View menu.

    ClassType indicators are:

    MethodType indicators are:

    Colors are used to mark other attributes:

    Double clicking

    Double clicking on a class category

    A double click on a class category will add a new buffer for browsing classes in that category.

    Double clicking on a nameSpace

    A double click on a nameSpace will add a new buffer for browsing classes in that nameSpace.
    Initially, the namespace list is hidden - it can be made visible, by toggling the 'nameSpace' item in the 'View' menu.

    Double clicking on a project

    A double click on a project will add a new buffer for browsing classes in that project.
    Initially, the project list is hidden - it can be made visible, by toggling the 'project' item in the 'View' menu.

    Double clicking on a class

    Double clicking on a variable

    Double clicking on a variable (in the variable-list) will show all methods which refer to that variable (see also: variable search functions).

    Double clicking on a method

    For selectors, which are marked as windowSpec, menuSpec or imageSpec methods, a corresponding editor application is opened on double-click.
    That means, that a GUI-Painter is opened when you double-click a windowSpec-method, an imageEditor is opened when you double-click an imageSpec-method and so on.

    Double clicking on a method with a break- or trace-point will remove the break- or trace-point.

    Double clicking on any other method will look if the method redefines an inherited method or is redefined by an inherited method, and will add an inheritance browser page if so.


    Doc $Revision: 1.18 $ $Date: 2003/04/09 11:18:06 $