[UI] ToolBuilder

Matthew Fulmer tapplek at gmail.com
Fri Sep 7 22:30:18 UTC 2007


On Tue, Sep 04, 2007 at 02:09:10PM -0400, Bill Schwab wrote:
> I am not so much thinking of a new IDE, only hooking into the tools
> (that I _think_ are intended) to take the existing tools over to tweak,
> etc.  I vaguely recall seeing some of it in action, but it might be very
> far short of what would be needed.  One way to find out though.

You may be thinking of PlusTools, which is a port of the Squeak
toolset to use the ToolBuilder abstraction layer. 

---- A survey of squeak UI toolkits ----

The default squeak browsers use the Pluggable*Morphs, whose sole
purpose was to get the toolset, which was and still is written
for MVC, to work in Morphic. They are not terribly useful morphs
and are not representative of Morphic at all. They are the
keepers of most of the "Unspeakable Horrors" in Morphic.
Unfortunately, due to the popularity of the toolset, these
widgets have given the average squeak developer a bad image of
Morphic.

ToolBuilder has an equally utilitarian original purpose: port
the toolset to Tweak. Thus, it currently supports exactly what
is needed to implement the Toolset. Unlike the Pluggable morphs,
it creates a new, incompatible but slightly simpler abstraction
layer, meaning that the entire toolset must be ported to use it.
PlusTools is the name of this port, and it is not in the image
by default.

OmniBrowser is another abstraction created for the toolset. It
is mostly a new model rather than a new view. That said, it does
have it's own view abstraction I know nothing about.

Monticello uses yet another custom view abstraction, or so I
have heard. I know nothing about it.

ToolBuilder is currently very primitive with regards to layout
policy and widget variety. That is understandable, as it has not
been used much since it was created. However, it does provide
the necessary abstraction to enable a UI to be run on MVC,
Morphic, Tweak, and (maybe?) Seaside. From what I have seen of
it:

I am not sure if ToolBuilder supports a hierarchal box model
layout or not. It supports a Panel widget, but I have only seen
it applied to the toolbar in the Browser. I have only seen
ToolBuilder used with window-size relative positioning (ie, put
this text pane in the rectangle (0 @ 0.5 corner: 1 @ 1), where
(0 @ 0 corner: 1 @ 1) is the drawable window area). No box model
as far as I can tell. 

Also, I don't know if ToolBuilder supports dynamic UI's; all of
squeak's tools are build-then-forget; the UI is never changed
once built. I don't know if that is a technical limitation or a
lack of imagination.


Widgets ToolBuilder always supports:
- Lists
- Text areas
- Button
- Panel
- Window

Widgets ToolBuilder optionally supports:
- Tree               (with no fallback)
- Multi-select list  (with list fallback)
- Input field        (with text area fallback)
- Action button      (with button fallback)
- Radio button       (with button fallback)
- Check box          (with button fallback)
    

So, in summary, ToolBuilder may be a fine start for a portable
GUI framework, but it needs work and PlusTools is not in wide
use yet and so still has a few rough edges. And there are quite
a few projects that aren't using it.

Jason: Could you describe MVP and what it is? I read a tutorial
once but didn't get it...

-- 
Matthew Fulmer -- http://mtfulmer.wordpress.com/
Help improve Squeak Documentation: http://wiki.squeak.org/squeak/808


More information about the UI mailing list