spec TreeNodeModel displayString

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

spec TreeNodeModel displayString

demarey
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?

Thanks,
Christophe

smime.p7s (5K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: spec TreeNodeModel displayString

demarey

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 (5K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: spec TreeNodeModel displayString

Peter Uhnak
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 <[hidden email]> 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 ] };

Reply | Threaded
Open this post in threaded view
|

Re: spec TreeNodeModel displayString

demarey
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 <[hidden email]> 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 (5K) Download Attachment