PackageDescription: Widgetry(Bundle)


Last published: November 11, 2008 by 'chaider'

Widgetry is the next generation VisualWorks GUI Framework.

The goals of this new Framework are really quite simple. Make a GUI Framework that maintains all of the goals of the current VisualWorks GUI, that is flexible and capable enough to see us forward for at least the next decade.
To this overall goal we add these less concrete goals too.
- The new GUI Framework must be more accessible to both novice and expert developers.
- The new GUI Framework must be more modular.
- The new GUI Framework must be more adaptable to new looks and feels.
- The new GUI Framework must have comprehensive unit tests
Finally, and most importantly:
- The new GUI Framework must be developed out in the open.

The guiding design view: Panes with Frames - Artists and Agents:

A Pane at its simplest is akin to the existing VisualComponent. A Pane may have subpanes. There is be a Pane class. The Window is also a kind of Pane, but because we don't plan to re-write the whole world, it will remain in it's own hierarchy. Also, the Screen becomes in effect the outermost Pane. Other than that, all widgets will be subclassed in one way or another from the Pane.

The Frame can be thought of as that which lays out a Pane within a Window or another Pane.

Artists are that which do the drawing of what is in a Pane. Note: No longer does the "View" handle all of the drawing. All of the displayOn: methods simply get re-routed to the Artist for the Pane. This allows for the plugging in of different Artists into the same Pane. For instance, a TextPane could have a separate Artist for drawing word-wrapped and non-word-wrapped text.

Agents are that which interact with the Artist and the Pane on behalf of the user. This sounds like a replacement of the Controller, but that's not the whole story.In the Widgetry framework, the Agents will have much less "View" related behavior. Like the Artist, the Agent is pluggable. Thus, a TextPane may have a ReadOnly Agent, which doesn't allow modifying the model.