Hi,

I wanted to point you to the new Spec book ( 
http://files.pharo.org/books-pdfs/spec/2017-01-23-SpecBooklet.pdf ), but 
apprently it's not there.

Many Spec widgets have examples accompanying them, so always check class side 
(not for all though). For TreeModel you can see couple there - good for playing 
around; e.g.

exampleWithNoSpecifiedNodes
        "self exampleWithNoSpecifiedNodes"
        TreeModel new
                roots: (1 to: 5);
                childrenBlock: [ :item | 1+item to: 5+item ];
                openWithSpec

You specify the initial data (root nodes) via the `roots:` message.
The `childrenBlock:` then specifies how one would retrieve data given a 
particular node; note that this  applies to _any node_, not just the root ones; 
so you can have potentially infinitely deep trees.

A more complex example could be this (this is awful code for demonstration only 
;):

TreeModel new
        roots: {#parent. #childless. 20. #root -> #(a b c)};
        childrenBlock: [ :item |
                item isSymbol ifTrue: [
                        item = #parent
                                ifTrue: [ #(child1 child2) ]
                                ifFalse: [ #() ]
                ] ifFalse: [
                        item isNumber
                                ifTrue: [ {item + 2. item ** 2} ]
                                ifFalse: [ "association" item value ]
                ]
        ];
        openWithSpec


Peter

On Sat, Apr 01, 2017 at 06:49:41AM -0700, chrismihaylyk wrote:
> Hi!
> 
> Could anyone explain me how works childrenBlock: method from TreeModel?
> step-by-step.
> What data it operates? How makes a result?
> 
> Thanks a lot? Khrystyna.
> 
> 
> 
> 
> 
> --
> View this message in context: 
> http://forum.world.st/How-childrenBlock-in-TreeModel-works-tp4940884.html
> Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
> 

Reply via email to