2016-08-07 18:23 GMT+02:00 Nicolai Hess <[email protected]>:

>
>
> 2016-08-07 17:53 GMT+02:00 Henrik Nergaard <[email protected]>:
>
>> ListModel has that: #selectedItemsSorted, but looking at the tree model
>> structure I guess the simplest way is to just traverse the whole structure
>> until the selected nodes are found.
>>
>> Something like this should do the trick:
>>
>>
>>
>> --------------------------------------------------
>>
>> TreeModel >> selectionSorted
>>
>>                | ordered lookingFor search |
>>
>>
>>
>>                ordered := OrderedCollection new.
>>
>>
>>
>>                lookingFor := self selectedItems asIdentitySet.
>>
>>                LookingFor ifEmpty: [ ^ #() ]
>>
>>                search := [ :nodes |
>>
>>                               nodes do: [ :node |
>>
>>                                              (lookingFor includes: node)
>> ifTrue: [
>>
>>                                                             ordered add:
>> node.
>>
>>                                                             lookingFor
>> remove: node.
>>
>>                                                             lookingFor
>> isEmpty ifTrue: [ ^ ordered asArray ]
>>
>>                                              ].
>>
>>                                              search value:  node
>> children value
>>
>>                               ]
>>
>>                ].
>>
>>
>>
>>                search value: self roots.
>>
>>
>>
>>                self error: 'should not happen'
>>
>>
>>
>> --------------------------------------
>>
>
> Thanks Peter, Henrik,
> yes I was afraid there is no other way.
>
>
I tried to fix this, but there is a test case for the ChangesBrowser that
tests the selection.
The problem is, that the test case selects an item by calling
#selectedItem: and the behavior is different for when this is called by the
view.
The test case just selects the "change", whereas when this is called by the
view, the selected item is TreeNodeModel (with #contents).
And I can not fix #pickedChanges without breaking this test.

Any Idea ?


>
>
>
>>
>>
>> Best regards,
>>
>> Henrik
>>
>>
>>
>> *From:* Pharo-dev [mailto:[email protected]] *On Behalf
>> Of *Nicolai Hess
>> *Sent:* Sunday, August 7, 2016 4:55 PM
>> *To:* Pharo Development List <[email protected]>
>> *Subject:* [Pharo-dev] Spec TreeModel get selected items in order
>>
>>
>>
>> Hi,
>>
>> Is there a way to retrive the selected nodes of a TreeModel in the same
>> order they are
>>
>> shown in the widget ?
>>
>> For example, open this tree model, and select item 5/4/3/1
>> |t|
>> Transcript clear.
>> t := TreeModel new.
>> t beCheckList ;
>>  autoMultiSelection: true.
>> t roots:((1 to:10) collect:[:c | TreeNodeModel new
>> content:c;hasContentToShow:true]).
>> t openWithSpec.
>> t inspect .
>>
>> Now, if I try to collect the selected items with
>>
>> t selectedItems collect:#contents
>>
>> they appear in the order I selected them, but I would like to get the
>> order
>> 1/2/3/4/5
>>
>> thanks
>>
>> Nicolai
>>
>
>

Reply via email to