Sadly, it is not possible to use tree>>#displayBlock: directly because the tree
is initialized with:
columns := { TreeColumnModel new
displayBlock: [:node | (self wrapItem: node content) ] }
asValueHolder.
TreeModel>>#wrapItem: anItem
^ displayBlock value cull: anItem cull: self
As you can see, it is then impossible to get a reference to the node. You only
get the node content and a reference to the tree itself.
Le 2 juil. 2015 à 14:01, Peter Uhnák a écrit :
> Or you can use displayBlock: (and root: and children:) directly on the
> TreeModel.
>
> tree := self newTree.
>
> tree
> roots: { root1 root2 };
> displayBlock: [ :node | node label ];
> childrenBlock: [ :node | node children ];
> iconBlock: [ :node | node icon ].
>
> I'm not sure if direct creation of TreeColumnModel/TreeNodeModel is advised
> considering TreeModel is trying to hide it.
>
> Peter
>
> On Thu, Jul 2, 2015 at 1:33 PM, Christophe Demarey
> <[email protected]> wrote:
>
> Le 30 juin 2015 à 16:01, Christophe Demarey a écrit :
>
> > Hi,
> >
> > I have a TreeModel with different kinds of TreeNodeModel and I would like
> > to get a customizable display string depending on the node type.
> > It looks like it is not possible to dispatch on nodes in a display block
> > because it only takes the item (node content) and the tree as parameter.
> > It is strange as I expect that to be a standard feature. Do I miss
> > something?
>
> I found a workaround and it looks like a missing feature in Spec TreeModel.
> You can customize the display by settings columns on the tree like this:
>
> self newTree
> columns: { TreeColumnModel new
> displayBlock: [:node | node label ] };
>
smime.p7s
Description: S/MIME cryptographic signature
