'From Pharo1.3 of 16 June 2011 [Latest update: #13315] on 14 April 2012 at 10:21:48
am'!
!MOAnnouncer methodsFor: 'convenient interaction' stamp: 'BenComan 4/14/2012
10:14'!
registerForEvent: eventClass forNode: aBlockOrSymbol updateNode: updateBlock updateLayout:
aBoolean
| domainNode btcRenderer1 btcRenderer2test btcRenderer3test btcRenderer2 btcRenderer1test
|
self
on: eventClass do: [:ann |
"Execute the following in Mondrian>Easel...
view shape rectangle size: 20.
view interaction
registerForEvent: MOMouseDown
forNode: #yourself
updateNode: [ :v | view forNode: v do: [ view nodes: (1 to: 2) ] ]
updateLayout: true.
view nodes: (1 to: 4).
...for case1 when 'self halt' in the debug code below is commented,
the 'inspect' shows Array(a MOViewRenderer a MOViewRenderer a MOViewRenderer
true true true)
...for case2 when 'self halt' in the debug code below is uncommented,
the 'inspect' shows an Array(a MOViewRenderer a MOViewRenderer nil true true
false)
"
"----8<---- debug code begin "
btcRenderer1 := ann viewRenderer.
btcRenderer1test := ( btcRenderer1 == self viewRenderer ).
self halt. "when this line is uncommented for case2, just click
<Proceed> at pre-debugger"
btcRenderer2 := ann viewRenderer.
btcRenderer2test := ( btcRenderer1 == self viewRenderer ).
btcRenderer3test := ( btcRenderer1 == btcRenderer2 ).
{ self viewRenderer. btcRenderer1. btcRenderer2. btcRenderer1test. btcRenderer2test.
btcRenderer3test. } inspect.
"----8<---- debug code end"
"ann element = the MONode"
ann element
removeAllEdges;
removeAllNodes.
domainNode := (aBlockOrSymbol moValue: ann element model).
ann element
resetMetricCachesResursively;
resetElementsToLookupUpToTheRoot.
ann viewRenderer forNodes: {domainNode} do: updateBlock.
aBoolean
ifTrue:
[ ann viewRenderer root allNodes do: #resetCache.
ann viewRenderer root resetElementsToDisplayCacheRecursively.
ann element resetCacheInEdges.
ann viewRenderer updateWindow.
ann viewRenderer root applyLayout]
ifFalse: [ ann viewRenderer updateWindow ]
].
! !
'From Pharo1.3 of 16 June 2011 [Latest update: #13315] on 14 April 2012 at 10:22:08
am'!
!MOAnnouncer methodsFor: 'accessing' stamp: 'BenComan 4/14/2012 10:22'!
viewRenderer: anObject
"self halt." "to monitor debug case 2, only uncomment this after the
mondrian view has been generated but before clicking on a node - not that this halt is not
encountered before the one in
MOAnnouncer>>registerForEvent:forNode:updateNode:updateLayout:"
viewRenderer := anObject! !