Product: VA Assist
Company: Smalltalk Systems
Contact Information: email: sales@smalltalksystems.com
phone: 503-612-9165
Price: $295 USD
Platforms: Windows and OS/2

A valid classification of IBM's VisualAge for Smalltalk is one of a hybrid development environment. It takes some of its inspiration from visual programming tools, yet at the same time recognizes that the true power of Smalltalk lies in object-oriented programming. Marrying these two dichotomies has resulted in criticisms of being a mediocre GUI builder from the VisualBasic and Powerbuilder ranks, while simultaneously being called an unscaleable development environment by veteran Smalltalkers. The product VA Assist from Smalltalk Systems attempts to correct the former shortcoming by enhancing the GUI capabilities of the VisualAge composition editor. In this article, I review VA Assist, which is available for both Windows and OS/2 versions under VisualAge 3.0 and 4.0.

Overview

VA Assist operates as a floating palette containing a notebook, each page of which covers a set of related composition editor tasks. In VisualAge for Smalltalk version 4.0, there is an option to replace the composition editor toolbar with a floating palette:

Each notebook page groups controls that assist in performing various tasks within the composition editor. These cover moving and aligning parts, settings properties, and working with connections. Each control has hover help and comprehensive on-line help is also available. The claim of VA Assist is to " ... dramatically improve your productivity while using the VisualAge Composition Editor". For this review I decided to test the validity of this statement by comparing some common tasks in VisualAge, with and without the use of VA Assist. This review is therefore not a description of all available features within VA Assist, something that can be obtained from the documentation available on Smalltalk Systems' web site, but rather is an answer to the question "What value might VA Assist bring to me as a VisualAge developer ?". I give both VisualAge and VA Assist marks from zero (no help) to five (helps a great deal) depending on how well each of them helps in performing the various tasks.

Task One - Setting properties

VisualAge 2


Figure 1

In Version 3.0, shown on the left, settings are scattered across multiple notebook tabs and pages. In Version 4.0, shown on the right, they are arranged in a grid of each property together with its value.


In VisualAge 3.0, a part's properties can be difficult to set (see Figure 1). The programmer has to open the settings page and search through the different notebook pages to find the relevant property. The categorization and arrangement of the properties is sometimes hard to follow and learning them is an unnecessary and distracting rite of passage for programmers.

IBM tackled this problem in VisualAge 4.0 by providing abstract properties sheets with columns of attribute name and value. The inspiration clearly comes from VisualBasic-style VBX property sheets, but while IBM moved towards this paradigm in Version 4.0, Microsoft ironically moved away from this style with the VBX to OCX transition towards one with closer ties to VisualAge 3.0 by allowing each custom control to have its own settings pages. Notwithstanding this, in VisualAge 4.0 the original problem has not been solved properly since the properties still remain hard to find and change, while cryptic implementation values such as XmALIGNCENTER have been surfaced straight to the user interface in poorly-sized controls. The abstract properties sheets also come perilously close to being an application whose user interface is a series of clever inspectors over the underlying objects rather than views that have been designed around analyzing the common use cases.

VA Assist 5

The VA Assist Settings notebook page goes a long way to correcting some of the problems in Visual Age.

When selecting a control, any two properties and their current values are shown. Which properties to show can be easily configured for a particular type of control with the notebook page popup menu. Property values have been chosen that hide implementation constants behind more meaningful values than the arcane and outdated X-Motif constants found in VisualAge property sheets. If multiple controls are selected, the value for the property is only shown if it applies to all selected controls, otherwise a blank field is shown. If a value is selected, it is applied to the property of all selected controls. Along with other features of VA Assist, such as the ability to select all parts of the same class or in the same hierarchy as the selected part, it is straightforward to align properties across groups of controls. An example might be to make a group of text boxes read only.

I found that the settings feature of VA Assist significantly reduced the frustration previously encountered when setting or querying controls and their properties' values. My only criticism would be that I would like to have seen more properties surfaced to the VA Assist toolbar as the list is not exhaustive and there is still the need from time to time to use the regular VisualAge settings pages.

Task Two - Changing part classes

VisualAge 0

Unlike variables, whose class can be changed with the menu option "Change Type", the class of a part is chosen only when it is placed onto the composition editor. There are times however when it can be desirable to change the class of a part. For example, you may want to turn a textbox into a label when building display-only views or use a control's more functional subclass. To achieve this, the programmer has to delete the existing part and add a new one in its place. All of the alignments, connections and properties of the old part need to be set again on the new part and the whole operation is not only unnecessarily tedious but open to mistakes.

VA Assist 3

VA Assist extends the popup menu of parts with the option "Morph". Selecting this menu option shows a list of candidate classes to change the part into. With the VA Assist toolbar morph button, several parts can be selected and morphed together. The toolbar "Morph" option shows a list of candidate classes to change the part into, but also allows any class to be used.

Task 3 - Changing the layout of controls

VisualAge 1


Figure 2

Doing control alignment in 3.0 ( on the left ) and 4.0 ( on the right ) involves selecting each alignment edge in turn, choosing the type of alignment, and then supplying information such as offset and relative control.


Settings the alignment of controls in VisualAge (see Figure 2) is arguably the most time consuming and unnecessarily difficult task in the whole product. The layout notebook needs to be opened for each control and the top, left, bottom and right attachments set separately. In going from 3.0 to 4.0, IBM rewrote this feature to fit in with their style of having a control's properties as a table of individually settable values, but apart from a slightly more visually-appealing use of controls they used exactly the same arcane interface.

I would go so far as to say that setting control alignments in VisualAge is such a painful task that it often forces VisualAge developers to build views that cannot be resized. Correct control alignment, however, is essential to get good reuse out of composite visual parts and it is unfortunate when this feature is not fully exploited due to shortcomings in the development environment.

VA Assist 5

The way that VA Assist handles alignment takes its inspiration from Window Builder Pro, another very powerful tool from Smalltalk Systems. The layout notebook page of VA Assist has a number of buttons that represent various attachment patterns, e.g. "Fix bottom and left edges to parent part and leave top and right as proportional" or "Fix all four edges a fixed distance from the parent part". The pictures on the buttons are intuitive as to how they will align controls and all one has to do is select a part or a group of parts together and press the desired button. The alignment has been set without having to wrestle with each part's layout settings page. It is a beautifully obvious solution once you've used it.

Task 4 - Working with connections

VisualAge 2

When I first started working with VisualAge, I thought connections were great and wrote views that were hard to read, even harder to debug, and worse still violated the object-oriented principle of having view to model separation. The inevitable backlash from this was to drop almost everything to code and have an aboutToOpenWidget event to script connection where view logic would occur. Later, I came to appreciate the power of having the dependency mechanism refreshing attribute connections and the intuitive nature of well-placed event to action connections. There are still a number of areas where composition editor connections do not scale well and are best avoided, but now I find myself looking for ways to do things visually and building parts for reuse and trying to avoid script in views. One of VisualAge's problems in this area has always been that lots of connections in the composition editor make it hard to read and ultimately more error-prone and difficult to maintain.

VA Assist 4

VA Assist has a whole notebook page dedicated to Links, which allows almost all conceivable permutations of hiding, showing and filtering connections on the composition editor. At first I didn't really appreciate this area of VA Assist, although after using it for awhile I came to like it more and more. It allows the developer to just concentrate on the area they are interested in and reduce background noise from other connections. Also, querying a composition editor is possible with the Filter feature, where any named event, action or attribute can be specified and all similar connections will be shown.

Task 5 - Moving and sizing controls

VisualAge 2

A user I was talking to recently complained that although they liked the functionality of a VisualAge application that had just been built for them, it looked as though it had come out of the 1980s. Such criticism is hard to take, but after doing nothing more sophisticated than using group boxes to delineate controls related to the same task and spending some time thinking about which fonts to use, the same screen was received much more favorably. Having gone through the exercise of redesigning the view, I realized that one reason that can be justifiably given for the initial incarnation is just how difficult moving and aligning controls can be in VisualAge.

VA Assist 4

VA Assist has a whole toolbar dedicated to moving controls around and provides a number of much-needed features. One of these is the ability to move a part in any direction pixel by pixel, or else extend or contract a part's border in any particular direction a pixel at a time. The traditional VisualAge buttons to align multiple parts horizontally or vertically are provided, except that these have been extended to cover the bounding box as well as the surface. This is useful if, for example, some buttons need to be horizontally aligned within a group box or form rather than the shell view itself. Such a feature does actually exist in VisualAge itself, but is buried so deeply within the product that after using it for three years I didn't know of its existence. It took the VA Assist manual to admit that all they did was surface the previously-buried functionality to the user interface before I started using this powerful feature. Other VA Assist toolbar buttons allow one to directly change a control's size and position by directly setting new point values, as well as reset things to their predefined default size in case things go horribly wrong.

Conclusion

VA Assist is one of those products that has achieved the dream of every tool builder, namely that once you load it and use it you can't live without it. The product has the feel of a very professional and polished application and the support provided through the usenet group is very prompt and thorough. My only regret is that the VA Assist team had to divert their efforts towards making VisualAge itself more usable by building tools for developers rather than build products which directly increase the quality of what the user sees. IBM should be in the tools market and we should be focusing our effort on building product enhancements that give the ultimate end user of what we produce something that directly helps them with their job rather than help us to get there. Notwithstanding these observations, VA Assist is a peach of a product and I strongly recommend that if you spend any amount of time working in a VisualAge composition editor you download the free trial and take it for a test drive.

Scores: (1=poor, 5=excellent)

Functionality:

Robustness:

Ease of use:

½

Documentation:

½

Support:

Home Page