[UI] ToolBuilder

Jason Johnson jason.johnson.081 at gmail.com
Sat Sep 8 14:09:01 UTC 2007


On 9/8/07, Matthew Fulmer <tapplek at gmail.com> wrote:
>
> 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.

This may be naive, but from reading the Self papers, my impression of
what Morphic was supposed to be about was rapidly building GUI's.  For
example, from reading that paper I would expect to be able to grab a
"bare window" morph, a big "text area" morph, a menu morph, 4 flap
morphs (one for each side), each with a tab morph inside and have a
shell that looks like the InteliJ IDE in about 5 minutes.

I'm guessing this isn't possible in the Morphic we have, or else there
wouldn't be 3 or 4 different "builder" tools across 3 or 4 projects.
We would just build views interactively the way we write model code
(except visually).

So my question is:  Why isn't it this way?  Did I just misunderstand
the point of Morphic?

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

Bill can correct me if I go wrong, but for me MVP is:

Model)

Same as MVC, just normal domain classes with the small extension that
they can send events when they change state.

View)

This is actually like the model except it's domain is user
interaction.  Unlike MVC views (afaik) MVP views know how to draw
themselves and how to deal with user interaction.  They can send
composite events, for example if you click a value in a list, hold
down select and click 5 lower, the View can generate a "multiple
values selected" event.  You can also do things like PDA style
gestures and so on.

Presenter)

This is like the descriptions in Magritte.  You basically define a
view independent presentation of a model.  For example, a simple
string in Dolphin would probably have a StringPresenter for it
(MAStringDescription in Magritte I believe).  The presenter does not
specify things like where the string should be drawn, but it does do
some of the extra wiring between the Model and the View.

A model can have zero or more presenters, a presenter can have zero or
more views.


More information about the UI mailing list