WindowBuilder Pro Features

WindowBuilder Pro

WindowBuilder Pro for Smalltalk (WBPro) has the tools that let you multiply your productivity. You'll save time, increase consistency, achieve more reuse and simplify maintenance. You get tools like.....




Enhanced Integration with VA Smalltalk

  • WBPro windows may be embedded within VA Smalltalk windows as visual components
  • Conceptually similar to nested applications within WBPro or CompositePanes in VSE
  • WBPro is now the ideal environment for creating complex, reusable visual parts for VA Smalltalk

Specialized Editors

Each control has a specialized editor that appears when you double click on the control in the interface editor. The editors allow you to easily see and set all of the options and features associated with the control.

Other specialized editors allow you to easily specify the menus for your windows, window attributes, icons, fonts, foreground and background colors, and more. Multiple widgets of the same type can be edited simultaneously.

Attachment Editor

WindowBuilder Pro uses an attachment editor to make it easy to use VA Smalltalk's robust system for specifying what happens when a window is resized. Attachment styles make it easy to set up complex attachment specifications across multiple widgets. A dynamic thumb-nail view shows the affects of any attachment changes before they are made.

Attachment Editor

 Click to view screenshot

Callback Editor

A callback editor enables you to set up and manage callbacks and event handlers.

  • Widgets are displayed as graphical tree
  • Widgets may be displayed hierarchically, alphabetically (by name or type)
  • Widgets may be filtered by type (e.g., view just the CwPushButtons)
  • Multiple widget select (create callbacks/event handlers on multiple widgets simultaneously)
  • Multiple handlers can be defined for each event and easily re-ordered via up/down buttons
  • Multiple handler select (change receiver/selector/clientdata simultaneously)
  • Handlers may be configured for multiple widgets simultaneously!
  • Handlers may be zero (unary) or one-argument methods in addition to the standard three-argument methods. For one-argument callbacks, the default argument that is passed is the originating widget. Specifying a unary selector as the client data will cause the attribute of the originating widget specified by that selector to be passed as the argument (e.g., specifying #selectedItem as the client data for the Single Selection Callback of a listbox will cause the selected item to be passed as the argument).
Callback Editor

 Click to view screenshot

Generic Attribute Editor, Template Editor and Property Editor

These editors have been graphically enhanced in recent releases (e.g. widgets are displayed with icons and labels). Table widget is now used for all attribute/property setting.

Menus, NLS Support, Tab & Z-Order Support, and More

WBPro supports hierarchical menus on windows and widgets. A menu editor makes it easy and gives you precise control. WBPro also includes NLS support. A newer menu layout separates the Align, Position and Sizing functions.

A tab and z-order editor makes it easy to specify tab order and z-order, with widgets (e.g. icon and name), and status displayed graphically in the list.
In "Show Tab/Z-Order" mode, the tags are live and may be dragged from one widget to another.

Window enhancements in recent releases let you float any window above the main WindowBuilder Pro window. All windows also have their own icons (makes it easy to distinguish between them in the task bar).

Context-Sensitive Popup Menus

Context-sensitive popups are available in the layout area and on numerous toolbar buttons:

  • Popup widget menu reflects the type and number of selected widgets
  • Popup morph menu lists morphing types for the selected widget(s)
  • Popup undo and redo menu list undoable and redoable actions
  • Popup select all menu lists are widget types in layout (e.g., makes it easy to select all CwLabels)
  • Popup open menu lists recently accessed classes
  • Popup menu on a nested application provides an "Edit Class..." function
Context-Sensitive Popup Menus

 Click to view screenshot

Drag and Drop Support

WBPro supports drag/drop. A drag/drop editor lets you specify whether a widget should be a drag/drop source or target. It also allows you to specify callback handlers and event handlers via drag-and-drop, like the VA Smalltalk Composition Editor.
Here is a popup connect menu listing callback and events.

Additional functionality:

  • Drag connect the source to the target
  • Popup message menu on target
  • Resultant callback/event handlers can be viewed with Callback Editor
  • Drag & Drop Re-parenting option allows widgets to be re-parented simply by dragging them from one parent to another. For example, a widget may be dragged from the top level form into a nested form without the need to cut and paste it. Likewise, a table widget may be dragged into a scrolled window to make it scrollable.

Control Fonts

The Font Editor lets you easily change the font of the widgets you select.

Control Fonts

 Click to view screenshot

Control Colors

The Color Editor lets you specify the foreground and background colors of the widgets. Recent releases include a new palette of the 16 “primary” colors.

Control Colors

 Click to view screenshot

UIs in VA Smalltalk Composition Editor

Any WBPro created windows may be used as parts within the VA Smalltalk Composition Editor.

WBPro has three editors to let you define the VA connection features for a WbApplication subclass. The attribute, action, and event editors let you specify the VA attributes, actions and events for the class. You make connection between the WbApplication window and other parts in the Composition Editor. When you double click on a WBPro-created window in the Composition Editor, WindowBuilder Pro will open on the window so you can modify and maintain your window or control. WBPro gives you more precise control over your UIs because it gives you easy, complete access to the CwWidget system. There's no need to build specialized scripts to access and control the widgets.

Composition Editor

 Click to view screenshot


WbApplication is a flexible application framework for your UI. The generated Smalltalk code complies precisely with the VA Smalltalk coding recommendations. WbApplication supports visual composition to let you make nested components. WBPro supports bi-directional editing whereby changes made by hand to the generated code are reflected in the layout editor and vice versa.

Timer Support protocols in WbApplication let you easily set up (and remove) timers:

  • New #timer event
  • Use #startTimer:period: to create a timer
  • Use #stopTimer: to stop a timer

Code Generation Options

You may now optionally use generic VA Smalltalk code generation, or optionally generate EtWindow subclasses.


Help Editor

  • Specify tooltips (mini / hover help) for any widget
  • Specify platform help files and help topic IDs for any widget
  • New WbPlatformHelpExample provided
  • Mini / hover help enhanced to work with EwToolBar tools

Nested Components

WBPro enables you to create your own controls as composites of other controls. WbApplication subclasses can be complete UIs or they can be components used in other UIs.

These composites are treated as single objects by WBPro. They can be reused, and if their definitions change, the change is reflected anywhere they are used. They can be nested arbitrarily deep, can have tabbing order, and you have control of the border style.


Runtime IC Generation

A "Runtime ICs" submenu is available from the Transcript's WindowBuilder menu:

  • Generate ICs for all WindowBuilder & WidgetKit components
  • Generate ICs for either development or runtime images

Automatic Alignment and Sizing

The WBPro Interface Editor lets you align controls to the same top, bottom, left, or right edge, or center vertically or horizontally. All you do is select the item(s) and press a button. Controls may be easily distributed vertically or horizontally within an area and their widths and heights may be easily replicated to provide a uniform appearance

Specialized Editors

Use Dozens of Widgets Easily

WBPro supports all common and extended widgets including notebooks, iconic containers, tables, splitbars, toolbars, Windows Common Controls and OLE/ActiveX controls.

Widgets added in recent releases include:

  • WbObjectComboBox, which is an object-oriented version of CwComboBox.
  • WbEnhancedText, providing character and field-level validations, password style and left, center and right justification
  • Toolbar buttons, including Morph, Undo, Redo, Select All, etc.
  • Support for VA Smalltalk widgets EwProgressBar, EwToolBar and CwSash (splitbar)
  • Support for OLE/Active X includes OleClient, OleControl, and wrappered OLE/ActiveX widgets (AbtOleExtendedWidget subclasses)
  • Support for Windows Common Controls widgets, including CwStatusBar, CwToolBar, CwTabStrip, CwTreeView, CwProgressBar, and CwTrackBar
Easily use widgets

 Click to view screenshot

Dynamic, context sensitive style selection

also provides style combo-boxes with identifying labels. Right-clicking on style combo-boxes allows you to change the displayed style choices.


Support for Icons as Graphical Labels

There is a smart WbIcon subclass of CgIcon that allows you to load icons from .ICO files or from resource DLLs. Pixmap Editor is now the Graphics Editor and can be used to select Pixmaps or Icons.


WbLabeledImage Runtime Support Class

WbLabeledImage combines an image and a label into a single renderable object:

  • Supports EwRenderContext interface
  • Horizontal or vertical orientations supported
  • Create toolbars with labeled buttons - see the WbLabeledImageExample class for an example
  • Create fancy iconic lists and tables

Widget Selection and Alignment

Improvements in recent releases include:

  • Side handles are now available for selected widgets (in addition to the existing corner handles). This gives more precise control over resizing a widget in only one direction
  • New Vertical and Horizontal Packing functions make it easy to cluster groups of widget together
  • If the ALT key is held down while performing a horizontal or vertical widget alignment, only the specified sides of the widgets will be aligned while the opposite sides will not move. This will cause the widgets to grow or shrink in size (as opposed to moving and retaining their original sizes)
  • ALT-clicking to direct edit a nested application will open another copy of WBPro on that class


Morphing allows you to quickly change any control from one type to another compatible type. Easily morph a listbox to a combobox to a radiobox and back to a listbox!

Visual Subclasses

WBPro lets you visually subclass a window. Part of the window is described in the superclass and part is described in the subclass. A callout capability in the #addWidgets method lets you call the superclass to pick up the specification of the part of the UI to be described by the superclass.

Visual Subclasses

 Click to view screenshot

Works with any Arbitrary Objects

  • #printSelector attribute specifies how the obects will be displayed
  • Supports type ahead object matching in text edit mode

Floating Tool Windows

In recent releases, the following floating tool windows now remember their last size and position each time they are opened.