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>