Ben

On Oct 11, 2013, at 9:24 AM, b...@openinworld.com wrote:

> b...@openinworld.com wrote:
>> 
>> I found it hard to find documentation on Spec beyond [1],[2],[3], some of 
>> which seem to have changed some syntax since they were written. I've been 
>> piecing things together to work out how to set the selected item with the 
>> simplest example I could. Even though it turns out pretty simple, I thought 
>> I'd share in case it was useful for others that haven't dipped their toes 
>> into Spec yet.
>> 
>> ComposableModel subclass: #TestSpec
>> instanceVariableNames: 'list text'
>> classVariableNames: ''
>> poolDictionaries: ''
>> category: 'BTCPlay'
>> 
>> TestSpec >> initializeWidgets
>> self instantiateModels: #( #list #ListModel ).
>> 
>> TestSpec >> getList
>> ^list
>> 
>> TestSpec class >> mySpecLayout
>> <spec:#default>
>> ^ SpecLayout composed
>> add:#getList ;
>> yourself.
>> 
>> Then from Workspace
>> x := (TestSpec new openWithSpec ; yourself).
>> x getList items: { 1 . 2 . 3 . 4}.
>> x getList setSelectedItem: 2.
>> 
>> cheers -ben
>> 
>> [1] hal.inria.fr/hal-00759030/PDF/Spec-IWST12-Final.pdf‎
>> [2] 
>> https://ci.inria.fr/pharo-contribution/job/PharoForTheEnterprise/lastSuccessfulBuild/artifact/Spec/Spec.pier.pdf
>>  
>> [3] http://hal.inria.fr/docs/00/70/80/67/PDF/SpecTechReport.pdf
>> 
>> 
>> 
> So here is the same thing with TreeModel.
> 
> ComposableModel subclass: #TestSpec2
>   instanceVariableNames: 'tree'
>   classVariableNames: ''
>   poolDictionaries: ''
>   category: 'BTCPlay'
> 
> TestSpec2 >> initializeWidgets
>   self instantiateModels: #( #tree #TreeModel ).      tree
>       childrenBlock: [  :treeItem | self haltOnce. (treeItem isKindOf: 
> Association) ifTrue: [ treeItem value ] ifFalse: [ {} ] ].
> 
> TestSpec2 >> getTree
>   ^tree
> 
> TestSpec2 class >> mySpecLayout
>   <spec:#default>
>   ^ SpecLayout composed
>       add:#getTree ;
>       yourself.
> 
> Then from Workspace (referring to attached pic)
> x := (TestSpec2 new openWithSpec ; yourself).
> x getTree roots: {  10 -> {  11. 12 } . 20 -> { 21 . 22 }  } .
> x getTree selectedItem.  "<Print It> --> 21 "
> x getTree selectedItem: ????
> 
> Now how do I select a particular tree item at each level ?
> eg. Select 10 and Select 12 ?
> 
> cheers, ben

There was something missing here at the two levels :)
You can see case 11849[1] fixing the morphic issue
and case 11850 [2] fixing the Spec problem :)

Then your example make me think that using association 
to describe the path may lead to an ambiguous situation

Ben

[1] https://pharo.fogbugz.com/default.asp?11849
[2] https://pharo.fogbugz.com/default.asp?11850

> 
> 
> 
> <Spec-TreeModel-simple-example.png>

Reply via email to