Grafoscopio/repository/Grafoscopio/GrafoscopioDocumentEditionP...

77 lines
1.9 KiB
Smalltalk

Class {
#name : #GrafoscopioDocumentEditionPerspective,
#superclass : #GrafoscopioPerspective,
#instVars : [
'tree',
'document'
],
#category : 'Grafoscopio-New-UI'
}
{ #category : #accessing }
GrafoscopioDocumentEditionPerspective class >> defaultSpec [
^ SpBoxLayout newVertical
add: #toolbar height: self toolbarHeight;
add:
(SpBoxLayout newHorizontal
add: #tree width: 100;
add: #viewport;
yourself) yourself
]
{ #category : #accessing }
GrafoscopioDocumentEditionPerspective class >> icon [
^ self iconNamed: #merge
]
{ #category : #'as yet unclassified' }
GrafoscopioDocumentEditionPerspective >> addNewNodeOfClass: aClass [
(tree selectedItem ifNil: [ document ])
addChild: [ self instantiateNode: aClass ]
ofClass: aClass.
self needRebuild: false.
self buildWithSpec
]
{ #category : #initialization }
GrafoscopioDocumentEditionPerspective >> createDefaultViewportVisitor [
^ GrafoscopioViewportVisitor new
]
{ #category : #initialization }
GrafoscopioDocumentEditionPerspective >> createViewport [
^ self createDefaultViewportVisitor createViewportFor: document into: self
]
{ #category : #initialization }
GrafoscopioDocumentEditionPerspective >> initializeWidgets [
super initializeWidgets.
tree := self newTreeTable.
tree
addColumn: (SpStringTableColumn evaluated: #name);
children: [ :node |
node isLeaf
ifTrue: [ {} ]
ifFalse: [ node children ] ]
]
{ #category : #'as yet unclassified' }
GrafoscopioDocumentEditionPerspective >> instantiateNode: aClass [
aClass class = GrafoscopioUnitNode species
ifTrue: [ | name |
name := UIManager default
request: 'Unit name'
initialAnswer: 'New unit'.
^ aClass new
name: name;
yourself ].
^ aClass new
" self error: 'Unexpected class'"
]
{ #category : #initialization }
GrafoscopioDocumentEditionPerspective >> updateModel: aModel [
document := aModel document.
tree roots: aModel document children.
]