84 lines
1.9 KiB
Smalltalk
84 lines
1.9 KiB
Smalltalk
Class {
|
|
#name : #GrafoscopioTreeNotebook,
|
|
#superclass : #SpPresenter,
|
|
#instVars : [
|
|
'#sidebar',
|
|
'#viewport',
|
|
'#model => SpObservableSlot',
|
|
'#empty',
|
|
'#perspectives'
|
|
],
|
|
#category : #'Grafoscopio-New-UI'
|
|
}
|
|
|
|
{ #category : #specs }
|
|
GrafoscopioTreeNotebook class >> defaultSpec [
|
|
^ SpBoxLayout newHorizontal
|
|
add:
|
|
(SpBoxLayout newVertical
|
|
add: #empty height: self toolbarHeight;
|
|
add: #sidebar;
|
|
yourself)
|
|
width: 51;
|
|
add: #viewport;
|
|
yourself
|
|
]
|
|
|
|
{ #category : #initialization }
|
|
GrafoscopioTreeNotebook >> createDefaultComponent [
|
|
^ GrafoscopioPerspective defaultPerspective new
|
|
]
|
|
|
|
{ #category : #initialization }
|
|
GrafoscopioTreeNotebook >> initialize [
|
|
super initialize.
|
|
perspectives := Dictionary new.
|
|
]
|
|
|
|
{ #category : #initialization }
|
|
GrafoscopioTreeNotebook >> initializePrivateAnnouncements [
|
|
super initializePrivateAnnouncements.
|
|
self property: #model whenChangedDo: [ self updateModel ]
|
|
]
|
|
|
|
{ #category : #initialization }
|
|
GrafoscopioTreeNotebook >> initializeWidgets [
|
|
super initializeWidgets.
|
|
sidebar := self sidebar.
|
|
viewport := self createDefaultComponent.
|
|
empty := self newLabel.
|
|
]
|
|
|
|
{ #category : #initialization }
|
|
GrafoscopioTreeNotebook >> installPerspective: aPerspective [
|
|
viewport ifNotNil: [ viewport aboutToBeUninstalledFrom: self ].
|
|
viewport := (perspectives at: aPerspective ifAbsentPut: [ self instantiate: aPerspective ]) .
|
|
self updateModel.
|
|
]
|
|
|
|
{ #category : #'as yet unclassified' }
|
|
GrafoscopioTreeNotebook >> open: aGrafoscopioProject [
|
|
model := aGrafoscopioProject.
|
|
self openWithSpec.
|
|
self updateModel
|
|
]
|
|
|
|
{ #category : #initialization }
|
|
GrafoscopioTreeNotebook >> sidebar [
|
|
| bar |
|
|
bar := self instantiate: SpSidebar.
|
|
GrafoscopioPerspective perspectives
|
|
do:
|
|
[ :p | bar addAction: [ self installPerspective: p ] icon: p icon ].
|
|
^ bar
|
|
]
|
|
|
|
{ #category : #initialization }
|
|
GrafoscopioTreeNotebook >> updateModel [
|
|
viewport updateModel: model.
|
|
|
|
self needRebuild: false.
|
|
self buildWithSpec
|
|
|
|
]
|