2016-08-07 20:06 GMT+02:00 Henrik Nergaard <[email protected]>:

> The test #testPickedChangesAfterSelect selects an item which is not in the
> browser, so I would consider that a bug.
>
>
>
> Adding the item to the browser before selecting it should be correct and
> make the test work.
>
>
>
> ChangesBrowserTest >> testPickedChangesAfterSelect
>
>                | item |
>
>                Item := RBAddClassChange.
>
>                Item definition: ‘test’ controller: nil.
>
>                Browser changes: {item}.
>
>                Self assert: …..
>
>                ….
>
>
>
> Best regards,
>
> Henrik
>

did you try it ?

This is how I changed #pickedChanges

pickedChanges
    | selectedChanges |
    selectedChanges := changesTree selectedItems
        collect: [ :item | item content ].
    ^ selectedChanges
        ifNotEmpty: [ changes select: [ :change | selectedChanges includes:
change ] ]

The test does not work, even if I add the item to the changes browser.



>
>
> *From:* Pharo-dev [mailto:[email protected]] *On Behalf
> Of *Nicolai Hess
> *Sent:* Sunday, August 7, 2016 7:46 PM
> *To:* Pharo Development List <[email protected]>
> *Subject:* Re: [Pharo-dev] Spec TreeModel get selected items in order
>
>
>
>
>
>
>
> 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