Grafoscopio/src/Grafoscopio/GrafoscopioNewTextModel.cla...

78 lines
1.7 KiB
Smalltalk

Class {
#name : #GrafoscopioNewTextModel,
#superclass : #SpPresenterWithModel,
#instVars : [
'body',
'onModifyNodeLocationDo'
],
#category : #'Grafoscopio-New-UI'
}
{ #category : #specs }
GrafoscopioNewTextModel class >> defaultSpec [
^ SpBoxLayout newVertical
add: #body;
yourself
]
{ #category : #'as yet unclassified' }
GrafoscopioNewTextModel >> body [
^ body
]
{ #category : #initialization }
GrafoscopioNewTextModel >> contextMenuFromCommandsGroup: aBlock [
^ body contextMenuFromCommandsGroup: aBlock
]
{ #category : #initialization }
GrafoscopioNewTextModel >> informModification [
onModifyNodeLocationDo
ifNotNil: [ onModifyNodeLocationDo cull: self ]
]
{ #category : #initialization }
GrafoscopioNewTextModel >> initialize [
super initialize.
]
{ #category : #initialization }
GrafoscopioNewTextModel >> initializeWidgets [
body := self newText.
body text: self model text.
body whenTextChangedDo: [ self informModification ]
]
{ #category : #initialization }
GrafoscopioNewTextModel >> inspectNRun [
body text
inspectRunAt:
(body selectionInterval
ifNil: [ body cursorPositionIndex ]
ifNotNil: [ :i | i first ])
]
{ #category : #initialization }
GrafoscopioNewTextModel >> inspectNode [
body text
inspectNodeAt:
(body selectionInterval
ifNil: [ body cursorPositionIndex ]
ifNotNil: [ :i | i first ])
]
{ #category : #'as yet unclassified' }
GrafoscopioNewTextModel >> inspectRuns [
^ self inspectNRun
]
{ #category : #initialization }
GrafoscopioNewTextModel >> modelChanged [
body text: self model text.
]
{ #category : #initialization }
GrafoscopioNewTextModel >> onModifyNodeLocationDo: aBlock [
onModifyNodeLocationDo := aBlock
]