[lively-kernel] Self-style object outliners

Adam Spitz adam.spitz at gmail.com
Thu Mar 18 19:39:20 CET 2010


>>Can you give me an example of the kind of flexibility you mean? (It's
>>been a while since I played with Squeak.)
>
> Yes.  To a fair extent in Self, if you pulled, eg, a listPane out of a browser, I think it was not that difficult to use it for something else.  We need to review at how widgets are composed in order to maximize this flexibility.  I think Fabrik is the best way to do this for a significant class of apps, but iit is made for it.  It may be possible to go fairly far with even the simpler morphs.  Another example is tearing menu items off to make buttons, and dropping buttons in menus to make new items.  That kind of thing.

Ah. :) Yeah, that'd be cool. Let's do that. :)

I've been having some fun implementing a few more of Self's ideas in
my Lively Outliners thing ( http://adamspitz.com/Lively-Outliners/ ):

  - Some animation stuff. I've got my outliner morphs zooming in and
out of the world (rather than suddenly appearing or disappearing),
using a few cartoon-style animation techniques
(http://selflanguage.org/documentation/published/animation.html) like
motion blur, slow-in/slow-out, anticipating a motion with a quick
contrary motion, etc. (I played with some sound effects too, using
HTML5's audio facilities, but the sounds got irritating pretty
quickly. :)

  - "Poses" for seeing relationships between objects. If you ask an
object how it fits into the inheritance tree, rather than opening up a
separate tool like an Inheritance Hierarchy Browser, the objects
themselves zoom into position to make a tree shape. (There's also an
Undo to make them zoom back to their previous positions.) Fits with
the whole "making the objects feel real" philosophy - an object
shouldn't be in two places at once, so they've gotta zoom around a
lot. :)

  - Along the same lines, I've been experimenting with implementing
other features using poses rather than tools. For example, as an
alternative to having a TestRunner window with a list of the test
cases, I've got TestCaseMorphs (one representing each test case). You
ask to see all the tests, the TestCaseMorphs zoom onto the screen, and
you can either hit the Run button on an individual test or you can
drag a SelectionMorph around them and say "run all of these tests."
(And I've got something similar for filing out modules - you ask to
see all the changed modules, the ModuleMorphs zoom onto the screen,
and you can select them all with a SelectionMorph and say "file out.")


Adam


More information about the lively-kernel mailing list