2017-11-27 20:40 GMT+01:00 Prof. Andrew P. Black <bl...@cs.pdx.edu>: > I'm trying to use a (subclass of a) TreePresenter that is populated with > FileReferences. I see that the current selection is, reasonably enough, a > TreeNodePresenter, so I'm assuming that to *set* a selection > programatically, I'm going to have to find the right TreeNodePresenter. > > So I've assumed a method allItemsDo: that I'm trying to write on my > subclass of TreePresenter that will iterate through all of the TreeNodes > and let me do stuff, such as looking at their #content to see if this is a > node that I'm interested in. > > But I can't! The #roots method of TreePresenter doesn't give me the root > TreeNodePresenters; it gives me the file references that they contain. How > do I iterate over the TreeNodePresenters? Or am I going about this in > entirely the wrong way? >
I find the way the TreeNodeModel (or TreeNodePresenter) is used strange too. I think it is to tightly bound to the underlaying morphic tree ui. (seems a TreeNode is only created during morphic interaction). What I have seen on some other projects (pharo launcher for example). They are creating a TreeNode when building the root of the tree itself. tree roots: (something that creates the root "raw nodes") collect:[:item | build a TreeNode with this content]. But this does not fully work, as for example tree root last selected:[true] "< really selects the item" tree root last selectAllChildren "< still does not change the selection of the nodes in the tree morph." > > Andrew > >