Skip to content

Commit

Permalink
Fixed a memory leak, code cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
JanBliznicenko committed Oct 19, 2024
1 parent 381e5da commit 871d800
Show file tree
Hide file tree
Showing 26 changed files with 87 additions and 93 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ OPAbstractUmlShapeTest >> testAddOwnedElement [
parent := self newShapeInstance.
child := self newShapeInstance.
child owningElement: parent.
self assert: parent owningElement equals: nil.
self assert: parent owningElement doesNotExist.
self assert: child owningElement equals: parent.
self assertCollection: parent ownedElements hasSameElements: {child}.
self assert: child ownedElements size equals: 0
Expand All @@ -49,7 +49,7 @@ OPAbstractUmlShapeTest >> testAddSelfEdge [
{ #category : 'tests' }
OPAbstractUmlShapeTest >> testEmpty [
self assert: shape modelElement isNil.
self assert: shape owningElement isNil.
self assert: shape owningElement doesNotExist.
self assert: shape ownedElements isEmpty.
self assert: shape sourceEdges isEmpty.
self assert: shape targetEdges isEmpty
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,6 @@ I am a shape composition to accomodate for the most common UML Association shape
Class {
#name : 'OPUmlAssociationShape',
#superclass : 'OPUmlEdge',
#instVars : [
'nameLabel',
'sourceEndLabels',
'targetEndLabels',
'constraints',
'stereotypeLabel',
'propertiesLabel'
],
#category : 'OpenPonk-ClassEditor-Shapes',
#package : 'OpenPonk-ClassEditor',
#tag : 'Shapes'
Expand Down
25 changes: 12 additions & 13 deletions repository/OpenPonk-ClassEditor/OPUmlAttributeController.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Class {
{ #category : 'figures' }
OPUmlAttributeController >> addDiagramElementToOwner [

self diagramElementOwner addAttribute: diagramElement
self ownerDiagramElement addAttribute: diagramElement
]

{ #category : 'figures' }
Expand Down Expand Up @@ -153,20 +153,19 @@ OPUmlAttributeController >> diagramElementClass [
^ OPUmlAttributeLabel
]

{ #category : 'diagram elements' }
OPUmlAttributeController >> diagramElementOwner [

^ (diagramController controllerForModel:
(model owningClass ifNil: [
(model owningAssociation memberEnds detect: [ :any |
any ~= model ]) type ])) diagramElement
]

{ #category : 'accessing' }
OPUmlAttributeController >> modelClass [
^ OPUMLProperty
]

{ #category : 'diagram elements' }
OPUmlAttributeController >> owner [

^ diagramController controllerForModel: (model owningClass ifNil: [
(model owningAssociation memberEnds detect: [ :any |
any ~= model ]) type ])
]

{ #category : 'hooks' }
OPUmlAttributeController >> placeholderName [

Expand All @@ -193,10 +192,10 @@ OPUmlAttributeController >> registerModelInContainer: aClass [
{ #category : 'removing' }
OPUmlAttributeController >> removeDiagramElement [

self diagramElement ifNil: [ ^ self ].
self diagramElementOwner ifNotNil: [ :owner |
self diagramElement ifNotExists: [ ^ self ].
self ownerDiagramElement ifExists: [ :owner |
owner removeAttribute: self diagramElement ].
diagramElement := nil
self diagramElement: OPNoShape new
]

{ #category : 'removing' }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ OPUmlAttributeControllerTest >> testRemoveFromView [
diagramController showInDiagramModel: class.
controller := diagramController controllerForModel: prop.
compartment := controller diagramElement owningElement.
controller removeController.
controller removeControllerAndDiagramElement.
self assert: compartment ownedElements asArray equals: #()
]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ OPUmlClassControllerTest >> testRemoveWithAttribute [
class ownedAttributes add: OPUMLProperty new.
controller model: class.
controller showWithoutDependentInDiagram: diagramController.
controller removeController.
controller removeControllerAndDiagramElement.
self assert: diagramController canvas nodes asArray equals: #( ).
self assert: diagramController controllers asArray equals: #( )
]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,15 @@ OPUmlClassifierController >> registerModelInContainer: aParentModel [
aParentModel packagedElements add: model
]

{ #category : 'construction' }
OPUmlClassifierController >> unhookDiagramElement [

super unhookDiagramElement.

(self diagramElement ifNotExists: [ ^ self ])
adornmentCreationBlock: [ :builder | ]
]

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ OPUmlClassifierControllerTest >> testRemoveEmpty [

controller model: model.
controller showWithoutDependentInDiagram: diagramController.
controller removeController.
controller removeControllerAndDiagramElement.
self assert: diagramController canvas nodes asArray equals: #( ).
self assert: diagramController controllers asArray equals: #( )
]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ OPUmlClassifierItemController >> addDiagramElementToOwner [
{ #category : 'figures' }
OPUmlClassifierItemController >> createDiagramElement [

diagramElement := self diagramElementClass forModelElement:
self model.
self diagramElement:
(self diagramElementClass forModelElement: self model).

self addDiagramElementToOwner
]
Expand All @@ -35,15 +35,6 @@ OPUmlClassifierItemController >> descriptionName [
^ description
]

{ #category : 'announcements' }
OPUmlClassifierItemController >> internalSubscribeTo: aModel [

aModel announcer
when: OPElementRenamed
do: [ self diagramElementOwner modelChanged ]
for: self
]

{ #category : 'testing' }
OPUmlClassifierItemController >> isHideable [
^ true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,10 @@ OPUmlClassifierNameLabel >> isPositionableByUser [
{ #category : 'removing' }
OPUmlClassifierNameLabel >> removeRender [

(self owningElement roassalShape ifNil: [ ^ super removeRender ])
removeInteractionIfPresent: OPRSLabeled.
super removeRender
self owningElement roassalShape ifNotNil: [ :owningRoassalShape |
owningRoassalShape removeInteractionIfPresent: OPRSLabeled ].
super removeRender.
labeled := nil
]

{ #category : 'as yet unclassified' }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ OPUmlCompartmentableShape >> removeRender [

super removeRender.
separators do: #remove.
separators := OrderedCollection new
separators removeAll
]

{ #category : 'accessing' }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,6 @@ OPUmlCompartmentableShapeTest >> testRemoveOwnedElement [
| lbl |
(lbl := OPUmlLabel new) owningElement: shape.
self assertCollection: shape ownedElements hasSameElements: { lbl }.
lbl owningElement: nil.
lbl owningElement: OPNoShape new.
self assert: shape ownedElements isEmpty
]
5 changes: 3 additions & 2 deletions repository/OpenPonk-ClassEditor/OPUmlEdgeTest.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,11 @@ OPUmlEdgeTest >> shapeClass [

{ #category : 'tests' }
OPUmlEdgeTest >> testRemove [

| lbl |
(lbl := OPUmlLabel new) owningElement: shape.
self assert: shape ownedElements asArray equals: {lbl}.
lbl owningElement: nil.
self assert: shape ownedElements asArray equals: { lbl }.
lbl owningElement: OPNoShape new.
self assert: shape ownedElements isEmpty
]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,6 @@ OPUmlEnumLiteralControllerTest >> testRemoveFromView [
diagramController showInDiagramModel: class.
controller := diagramController controllerForModel: prop.
compartment := controller diagramElement owningElement.
controller removeController.
controller removeControllerAndDiagramElement.
self assert: compartment ownedElements asArray equals: #( )
]
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ OPUmlEnumerationControllerTest >> testRemoveWithLiteral [
model ownedLiterals add: OPUMLEnumerationLiteral new.
controller model: model.
controller showWithoutDependentInDiagram: diagramController.
controller removeController.
controller removeControllerAndDiagramElement.
self assert: diagramController canvas nodes asArray equals: #( ).
self assert: diagramController controllers asArray equals: #( )
]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Class {
{ #category : 'figures' }
OPUmlEnumerationLiteralController >> addDiagramElementToOwner [

self diagramElementOwner addLiteral: diagramElement
self ownerDiagramElement addLiteral: diagramElement
]

{ #category : 'construction' }
Expand All @@ -35,18 +35,18 @@ OPUmlEnumerationLiteralController >> diagramElementClass [
^ OPUmlEnumerationLiteralLabel
]

{ #category : 'diagram elements' }
OPUmlEnumerationLiteralController >> diagramElementOwner [

^ (diagramController showWithoutDependentInDiagramModel:
model enumeration) diagramElement
]

{ #category : 'accessing' }
OPUmlEnumerationLiteralController >> modelClass [
^ OPUMLEnumerationLiteral
]

{ #category : 'diagram elements' }
OPUmlEnumerationLiteralController >> owner [

^ diagramController showWithoutDependentInDiagramModel:
model enumeration
]

{ #category : 'hooks' }
OPUmlEnumerationLiteralController >> placeholderName [

Expand All @@ -62,9 +62,9 @@ OPUmlEnumerationLiteralController >> registerModelInContainer: aParentModel [
{ #category : 'removing' }
OPUmlEnumerationLiteralController >> removeDiagramElement [

self diagramElement ifNil: [ ^ self ].
self diagramElementOwner removeLiteral: self diagramElement.
diagramElement := nil
self diagramElement ifNotExists: [ ^ self ].
self ownerDiagramElement removeLiteral: self diagramElement.
self diagramElement: OPNoShape new
]

{ #category : 'removing' }
Expand Down
3 changes: 0 additions & 3 deletions repository/OpenPonk-ClassEditor/OPUmlExtensionShape.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@ I represent an Extension shape
Class {
#name : 'OPUmlExtensionShape',
#superclass : 'OPUmlAssociationShape',
#instVars : [
'isRequiredLabel'
],
#category : 'OpenPonk-ClassEditor-Shapes',
#package : 'OpenPonk-ClassEditor',
#tag : 'Shapes'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ OPUmlGeneralizationController >> descriptionGeneralizationSet [
self parentPackageDo: [ :parentPackage |
parentPackage packagedElements:
parentPackage packagedElements \ setsToRemove , setsToAdd ].
diagramElement ifNotNil: [ self diagramElement modelChanged ] ]);
self diagramElement modelChanged ]);
classes: { OPUmlGeneralizationSetDescriptions };
label: 'Generalization Sets';
priority: 5;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,7 @@ OPUmlGeneralizationSetDescriptions >> descriptionAccessor: aSymbol [
{ controller model } asSet , set generalizations
collect: [ :each |
controller diagramController controllerForModel: each ]
thenDo: [ :ctrl |
ctrl diagramElement ifNotNil: [
ctrl diagramElement modelChanged ] ] ]
thenDo: [ :ctrl | ctrl diagramElement modelChanged ] ]
]

{ #category : 'forms' }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,6 @@ I represent a direct generalization line.
Class {
#name : 'OPUmlGeneralizationShape',
#superclass : 'OPUmlEdge',
#instVars : [
'nameLabel',
'constraints'
],
#category : 'OpenPonk-ClassEditor-Shapes',
#package : 'OpenPonk-ClassEditor',
#tag : 'Shapes'
Expand Down
21 changes: 10 additions & 11 deletions repository/OpenPonk-ClassEditor/OPUmlOperationController.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Class {
{ #category : 'figures' }
OPUmlOperationController >> addDiagramElementToOwner [

self diagramElementOwner addOperation: diagramElement
self ownerDiagramElement addOperation: diagramElement
]

{ #category : 'construction' }
Expand All @@ -39,18 +39,17 @@ OPUmlOperationController >> diagramElementClass [
^ OPUmlOperationLabel
]

{ #category : 'diagram elements' }
OPUmlOperationController >> diagramElementOwner [

^ (diagramController controllerForModel: model owningClass)
diagramElement
]

{ #category : 'accessing' }
OPUmlOperationController >> modelClass [
^ OPUMLOperation
]

{ #category : 'diagram elements' }
OPUmlOperationController >> owner [

^ diagramController controllerForModel: model owningClass
]

{ #category : 'hooks' }
OPUmlOperationController >> placeholderName [

Expand All @@ -66,8 +65,8 @@ OPUmlOperationController >> registerModelInContainer: aParentModel [
{ #category : 'removing' }
OPUmlOperationController >> removeDiagramElement [

self diagramElement ifNil: [ ^ self ].
self diagramElementOwner ifNotNil: [ :owner |
self diagramElement ifNotExists: [ ^ self ].
self ownerDiagramElement ifNotNil: [ :owner |
owner removeOperation: self diagramElement ].
diagramElement := nil
self diagramElement: OPNoShape new
]
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,6 @@ OPUmlOperationControllerTest >> testRemoveFromView [
diagramController showInDiagramModel: class.
controller := diagramController controllerForModel: op.
compartment := controller diagramElement owningElement.
controller removeController.
controller removeControllerAndDiagramElement.
self assert: compartment ownedElements asArray equals: #( )
]
13 changes: 11 additions & 2 deletions repository/OpenPonk-ClassEditor/OPUmlPackageController.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ OPUmlPackageController >> modelClass [
{ #category : 'updating' }
OPUmlPackageController >> packageRenderChanged [

self diagramElement ifNotNil: [ :foundDE |
self diagramElement ifExists: [ :foundDE |
(foundDE hiddenPackages: self hiddenPackages) ifTrue: [
foundDE isRendered ifTrue: [ foundDE updateRenderFromModel ] ] ].
self diagramController propagatePackageRenderChangedIn: self model
Expand All @@ -130,7 +130,7 @@ OPUmlPackageController >> registerModelInContainer: aParentModel [
{ #category : 'destruction' }
OPUmlPackageController >> removeDiagramElement [

self diagramElement ifNil: [ ^ self ].
self diagramElement ifNotExists: [ ^ self ].
super removeDiagramElement.
self packageRenderChanged
]
Expand All @@ -143,6 +143,15 @@ OPUmlPackageController >> renderDiagramElement [
self pushBack
]

{ #category : 'diagram elements' }
OPUmlPackageController >> unhookDiagramElement [

super unhookDiagramElement.

(self diagramElement ifNotExists: [ ^ self ])
innerRoassalShapesBlock: [ Array empty ]
]

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

Expand Down
Loading

0 comments on commit 871d800

Please sign in to comment.