'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! !