Class { #name : #GrafoscopioViewportTextVisitor, #superclass : #GrafoscopioVisitor, #instVars : [ 'viewport', 'stack', 'presenter', 'pages' ], #category : #'Grafoscopio-New-UI' } { #category : #visiting } GrafoscopioViewportTextVisitor >> createViewportFor: aDocumentNode into: aPresenter [ presenter := aPresenter. aDocumentNode acceptVisitor: self. ^ viewport ] { #category : #visiting } GrafoscopioViewportTextVisitor >> initialize [ super initialize. pages := Dictionary new ] { #category : #'as yet unclassified' } GrafoscopioViewportTextVisitor >> renamePageFor: aNode [ pages at: aNode ifPresent: [ : p | p title: aNode name ] ] { #category : #'as yet unclassified' } GrafoscopioViewportTextVisitor >> showPageFor: aNode ifProviderDoestExistInstall: aBlock [ | page | page := pages at: aNode ifAbsentPut: [ aBlock value ]. presenter viewport: page ] { #category : #'as yet unclassified' } GrafoscopioViewportTextVisitor >> visitPillarNode: aGrafoscopioPillarNode [ self showPageFor: aGrafoscopioPillarNode ifProviderDoestExistInstall: [ | text | text := presenter instantiate: GrafoscopioNewTextModel on: (GrafoscopioPillarToTextDecorator on: aGrafoscopioPillarNode). text onModifyNodeLocationDo: [ :model | model model text: model body text ]. text ] ] { #category : #visiting } GrafoscopioViewportTextVisitor >> visitTextNode: aNode [ self showPageFor: aNode ifProviderDoestExistInstall: [ | text | text := presenter instantiate: GrafoscopioNewTextModel on: aNode. text onModifyNodeLocationDo: [ :model | model model text: model body text ]. text ] ]