On 17.06.2010, at 08:37, Jeff G wrote:

> Hi Everyone,
> 
> So I am working on porting over a small simulation I wrote for fun in java to 
> squeak, and I am actually stuck at a point before I can get any real work 
> done.  The basics of the user interface I would like to offer consist of a 
> SystemWindow containing a custom morph that will handle all of the drawing 
> and updating of the simulation, and some buttons for altering the parameters 
> of the simulation.  The morph would take up the largest portion of the 
> screen, say 3/4.

Well, one difference between Squeak and Java is that while we (i.e. our 
Smalltalk ancestor) indeed invented windows, we feel they are rarely needed for 
something else than tools :)

Normally you just build your morphs directly, *not* putting them into a window 
frame. That's how you should start, and worry about windows later, if at all. 
It actually makes it easier to debug your morphs, a window would just get into 
the way. You have discovered halos and how to interact directly with morphs, 
right?

> I have been wrestling with SystemWindow and Toolbuilder for the last little 
> while and I feel like I must be overlooking something easy to get started 
> with.  If I create a system window and add a placeholder morph to it, with a 
> frame of (0...@0 corner: 0...@1) the window becomes blue as it takes on the 
> color of the morph I added and the morph itself becomes white.  I would like 
> the morph to retain its color when I add it to the window, and not have the 
> window alter its own color either.

Well, as you correctly inferred, system windows are made for tools, and they 
try to maintain a color scheme. SystemWindows nowadays set the color of added 
morphs to white. But when you alter the color after adding it, it stays.

> Second, if I were to add to morphs side by side, one with a frame of (0...@0 
> corner: 0...@1) and the other with (0...@0 corner: 1...@1), then I will have 
> a splitter in between the morphs and any attempt to drag this splitter 
> results in a debugger popping up.

A SystemWindow needs a model. If you don't provide one, you get that error. 

> I have been attempting to learn Toolbuilder, but it seems very focused on 
> just that, tools, and I didn't see an appropriate spec for adding just a 
> custom subclass of morph.  I may have overlooked something easy here to do 
> so, and so my spec would consist of a pluggableWindow, with its children 
> being a pluggablePanelSpec with pluggableButtons as its children, and some 
> other spec representing the custom morph as the second child of the 
> windowSpec.

Ignore tool builder for anything but tools. It's meant as a facade to allow 
building text-centric tools in different UI frameworks, not just Morphic.

> Any help or pointers towards creating a basic system window with a morph, or 
> a couple of morphs in it, respecting colors and layouts, and being resized 
> with the splitters would be greatly appreciated.

        model := Model new.
        w := SystemWindow new.
        w model: model.

        red := Morph new.
        w addMorph: red frame: (0...@0 corner: 0...@1).
        red color: Color red.

        blue := Morph new.
        w addMorph: blue frame: (0...@0 corner: 1...@1).
        blue color: Color blue.

        w openInWorld.

- Bert -

_______________________________________________
Beginners mailing list
Beginners@lists.squeakfoundation.org
http://lists.squeakfoundation.org/mailman/listinfo/beginners

Reply via email to