Skip to content

Commit

Permalink
Update diagrams when tab switched
Browse files Browse the repository at this point in the history
  • Loading branch information
JanBliznicenko committed Jul 7, 2024
1 parent bc08bfd commit b77557e
Show file tree
Hide file tree
Showing 9 changed files with 69 additions and 23 deletions.
9 changes: 8 additions & 1 deletion repository/OpenPonk-Core/OPController.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -304,7 +304,8 @@ OPController >> removeFigure [

{ #category : 'private' }
OPController >> removeModel [
^ self subclassResponsibility

self diagramController elementRemoved
]

{ #category : 'deprecated' }
Expand Down Expand Up @@ -369,3 +370,9 @@ OPController >> showWithoutDependentInDiagram: aDiagramController [

self subclassResponsibility
]

{ #category : 'event handling' }
OPController >> updateAfterDiagramFocused [

self subclassResponsibility
]
22 changes: 14 additions & 8 deletions repository/OpenPonk-Core/OPDiagram.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,19 @@ OPDiagram class >> stonAllInstVarNames [
^ super stonAllInstVarNames , #( #name #documentation #resolution )
]

{ #category : 'as yet unclassified' }
OPDiagram >> canvas: aCanvas [

self isRendered ifTrue: [
self
assert: roassalShape canvas = aCanvas
description:
'Reusing same diagram element for 2 canvases not allowed'.
^ false ].
roassalShape := aCanvas.
^ true
]

{ #category : 'accessing' }
OPDiagram >> documentation [

Expand Down Expand Up @@ -78,14 +91,7 @@ OPDiagram >> name: anObject [
{ #category : 'as yet unclassified' }
OPDiagram >> ownedElement: aShape renderedIn: aCanvas [

self isRendered ifTrue: [
self
assert: roassalShape canvas = aCanvas
description:
'Reusing same diagram element for 2 canvases not allowed'.
^ self owningElement ifNotNil: [ :owner |
owner ownedElement: aShape renderedIn: aCanvas ] ].
roassalShape := aCanvas.
(self canvas: aCanvas) ifFalse: [ ^ self ].
self updateRenderFromSelf
]

Expand Down
39 changes: 31 additions & 8 deletions repository/OpenPonk-Core/OPDiagramController.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,17 @@ OPDiagramController >> diagramController: aController [
self error: 'Cannot assign diagramController to diagramController'
]

{ #category : 'rebuilding' }
OPDiagramController >> diagramFocused [

self isRendered ifTrue: [ ^ self updateAfterDiagramFocused ].

diagramElement canvas: self canvas.
diagramElement ownedElements do: [ :each |
self showDiagramElement: each ].
diagramElement updateRenderFromSelf
]

{ #category : 'userinterface' }
OPDiagramController >> disableRefresh [
self flag: #todo
Expand All @@ -360,6 +371,15 @@ OPDiagramController >> editor: anEditor [
editor := anEditor
]

{ #category : 'as yet unclassified' }
OPDiagramController >> elementRemoved [

self editor ifNotNil: [ :foundEditor |
foundEditor workbench ifNotNil: [ :workbench |
workbench projectTree ifNotNil: [ :projectTree |
projectTree refresh ] ] ]
]

{ #category : 'userinterface' }
OPDiagramController >> enableRefresh [
self flag: #todo
Expand Down Expand Up @@ -758,14 +778,6 @@ OPDiagramController >> showDiagramElement: aDiagramElement [
self showDiagramElement: each ]
]

{ #category : 'rebuilding' }
OPDiagramController >> showElements [

diagramElement ownedElements do: [ :each |
self showDiagramElement: each ].
diagramElement updateRenderFromSelf
]

{ #category : 'figures' }
OPDiagramController >> showInDiagramModel: aModel [

Expand Down Expand Up @@ -806,6 +818,17 @@ OPDiagramController >> undo [
self loadState: self autosaveManager loadPrevious
]

{ #category : 'event handling' }
OPDiagramController >> updateAfterDiagramFocused [

| showableElements |
showableElements := self allShowableElements asIdentitySet.
self controllers do: [ :each |
(showableElements includes: each model)
ifTrue: [ each updateAfterDiagramFocused ]
ifFalse: [ each removeController ] ]
]

{ #category : 'userinterface' }
OPDiagramController >> updateCanvas [

Expand Down
9 changes: 8 additions & 1 deletion repository/OpenPonk-Core/OPElementController.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ OPElementController >> figureLabel: aLabelName text: aString [
" (figure labels at: aLabelName) trachelShape text: aString"
]

{ #category : 'accessing' }
{ #category : 'construction' }
OPElementController >> hookDiagramElement [

"do nothing by default"
Expand Down Expand Up @@ -227,3 +227,10 @@ OPElementController >> target: aController [


]

{ #category : 'event handling' }
OPElementController >> updateAfterDiagramFocused [

self isRendered ifFalse: [ ^ self ].
self diagramElement updateRenderFromModel
]
2 changes: 1 addition & 1 deletion repository/OpenPonk-Core/OPOpenPonkDiagram.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ OPOpenPonkDiagram >> isSelected: anObject [
OPOpenPonkDiagram >> newCopy [

| serializer |
self updateFromRender.
self isRendered ifTrue: [ self updateFromRender ].
serializer := OPStonDiagramSerializer new.
^ (String streamContents: [ :s |
serializer serializeDiagram: self to: s ]) readStreamDo: [ :s |
Expand Down
4 changes: 3 additions & 1 deletion repository/OpenPonk-Core/OPTestEntityController.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,9 @@ OPTestEntityController >> parentContainerModel [

{ #category : 'destruction' }
OPTestEntityController >> removeModel [

| ownerModel |
ownerModel := self diagramController model.
ownerModel entities remove: self model
ownerModel entities remove: self model.
super removeModel
]
3 changes: 2 additions & 1 deletion repository/OpenPonk-Core/OPTestRelationController.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,6 @@ OPTestRelationController >> modelClass [
{ #category : 'destruction' }
OPTestRelationController >> removeModel [

self diagramController model entities remove: self model
self diagramController model entities remove: self model.
super removeModel
]
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ OPRSSelectionDraggableBorder >> updateDragBoxBlock: anAssociation [
{ #category : 'hooks' }
OPRSSelectionDraggableBorder >> updateDragBoxes [

self dragBoxUpdateBlocks associationsDo: [ :each |
self dragBoxUpdateBlocks associationsDo: [ :each |
self updateDragBoxBlock: each ].
shape pushBack
]
2 changes: 1 addition & 1 deletion repository/OpenPonk-Spec/OPWorkbench.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ OPWorkbench >> focusEditorOf: aDiagram [
self announce: (OPEditorFocused on: focusedEditor).
topToolbar activeEditor: focusedEditor.
focusedEditor diagramController diagramElement: aDiagram.
focusedEditor diagramController showElements
focusedEditor diagramController diagramFocused
]

{ #category : 'accessing' }
Expand Down

0 comments on commit b77557e

Please sign in to comment.