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 ]