Comment #7 on issue 884 by tu...(a)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.