Comment #7 on issue 884 by tu...@tudorgirba.com: The Roassal presentation should react to custom ports http://code.google.com/p/moose-technology/issues/detail?id=884
Great.
Here is a slightly extended version in which we deal with bidirectional updates between the list and roassal: | browser | browser := GLMTabulator new . browser with: [:tabulator | tabulator column: #index; column: #visualization. tabulator transmit to: #index; andShow: [:a | a list ]. tabulator transmit to: #visualization; andShowIfNone:[ :a | a roassal painting: [:view :collection :roassal | view shape label. view interaction on: ROMouseLeftClick do: [:ann | (roassal pane port: #selection) value: ann element model ]. view nodes: collection. view gridLayout. roassal on: GLMContextChanged do: [:ann | ann property = #selection ifTrue: [ ann oldValue ifNotNil: [ ROUnhighlightElement on: (ann presentation view raw elementFromModel: ann oldValue)]. ROHighlightElement on: (ann presentation view raw elementFromModel: ann value) color: Color red ]]]]. tabulator transmit from: #index; to: #visualization port: #selection. tabulator transmit from: #visualization port: #selection; to: #index port: #selection. ].
I think it's pretty cool that we can easily accommodate such a scenario without worrying about possible infinite loops.