Benjamin wrote:
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.pdfSo 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, benThere 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 btw, random (likely improbable) idea - could Path from FileSystem could be reused, or part of it made more generic ? cheers -ben Ben [1] https://pharo.fogbugz.com/default.asp?11849 [2] https://pharo.fogbugz.com/default.asp?11850<Spec-TreeModel-simple-example.png> |
- Re: [Pharo-users] Simple Spec Examples btc
- Re: [Pharo-users] Simple Spec Examples btc
- Re: [Pharo-users] Simple Spec Examples Camillo Bruni
- Re: [Pharo-users] Simple Spec Exam... Johan Fabry
- Re: [Pharo-users] Simple Spec Exam... Stéphane Ducasse
- Re: [Pharo-users] Simple Spec Exam... btc
- Re: [Pharo-users] Simple Spec Exam... Sean P. DeNigris
- Re: [Pharo-users] Simple Spec ... Benjamin
- Re: [Pharo-users] Simple Spec ... Sean P. DeNigris
- Re: [Pharo-users] Simple Spec ... Camillo Bruni
- Re: [Pharo-users] Simple Spec Examples btc
- Re: [Pharo-users] Spec Lists - setting the selection Benjamin