Skip to content

Commit

Permalink
Merge 3089b94
Browse files Browse the repository at this point in the history
  • Loading branch information
JanBliznicenko committed Oct 28, 2024
2 parents 0a44c51 + 3089b94 commit ebd2d4e
Show file tree
Hide file tree
Showing 31 changed files with 163 additions and 108 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 @@ -24,7 +24,7 @@ OPTUmlPackageableController >> findPackageHierarchyIn: packagesList [

| packagedElements |
packagedElements := packagesList last packagedElements.
(packagedElements identityIncludes: self model) ifTrue: [
(packagedElements identityIncludes: self packagedModel) ifTrue: [
^ packagesList ].
packagedElements
select: [ :each | each oclIsKindOf: #Package ]
Expand Down Expand Up @@ -54,13 +54,19 @@ OPTUmlPackageableController >> packageHierarchy [
packages := self findPackageHierarchyIn: { self diagramController model } ]
]

{ #category : 'accessing' }
OPTUmlPackageableController >> packagedModel [

^ self model
]

{ #category : 'removing' }
OPTUmlPackageableController >> parentContainerModel [

^ self parentPackageDo: [ :parentPackage | parentPackage ]
]

{ #category : 'accessing' }
{ #category : 'enumerating' }
OPTUmlPackageableController >> parentPackageDo: aBlock [

^ aBlock value: (self packageHierarchy ifEmpty: [ ^ nil ]) last
Expand All @@ -76,6 +82,6 @@ OPTUmlPackageableController >> parentPackageDo: aBlock ifNone: noneBlock [
OPTUmlPackageableController >> removeModel [

self parentPackageDo: [ :parentPackage |
parentPackage packagedElements remove: self model ].
parentPackage packagedElements remove: self model ifAbsent: [ ] ].
super removeModel
]
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
27 changes: 13 additions & 14 deletions repository/OpenPonk-ClassEditor/OPUmlAttributeController.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@ Class {
{ #category : 'figures' }
OPUmlAttributeController >> addDiagramElementToOwner [

self diagramElementOwner addAttribute: diagramElement
self ownerDiagramElement addAttribute: diagramElement
]

{ #category : 'figures' }
OPUmlAttributeController >> createDiagramElement [

(model name isNil or: [ model name trim isEmpty ]) ifTrue: [
model name: self placeholderName ].
super createDiagramElement
^ super createDiagramElement
]

{ #category : 'construction' }
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,10 +15,12 @@ OPUmlClassifierItemController >> addDiagramElementToOwner [
{ #category : 'figures' }
OPUmlClassifierItemController >> createDiagramElement [

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

self addDiagramElementToOwner
self addDiagramElementToOwner.

^ self diagramElement
]

{ #category : 'forms' }
Expand All @@ -35,15 +37,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
14 changes: 8 additions & 6 deletions repository/OpenPonk-ClassEditor/OPUmlClassifierShape.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ OPUmlClassifierShape >> hasModelComments [
{ #category : 'accessing' }
OPUmlClassifierShape >> minExtent [

^ 100 @ 60
^ 100 @ 61
]

{ #category : 'hooks' }
Expand Down Expand Up @@ -100,17 +100,19 @@ OPUmlClassifierShape >> stereotypesLabelClass [
{ #category : 'rendering' }
OPUmlClassifierShape >> updateCommentIcon [

self hasModelComments ifFalse: [
commentIcon ifNotNil: [
self hasModelComments ifFalse: [
commentIcon ifNotNil: [
commentIcon remove.
commentIcon := nil ].
^ self ].

commentIcon ifNotNil: [ ^ self ].
commentIcon ifNil: [ commentIcon := OPUmlCommentIcon in: self ].

commentIcon := OPUmlCommentIcon in: self.
commentIcon isRendered ifTrue: [ ^ self ].

self isRendered ifTrue: [ commentIcon renderIn: self canvas ]
self isRendered ifFalse: [ ^ self ].

commentIcon renderIn: self canvas
]

{ #category : 'rendering' }
Expand Down
6 changes: 5 additions & 1 deletion repository/OpenPonk-ClassEditor/OPUmlCommentIcon.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,12 @@ OPUmlCommentIcon >> extentToFitContents [
{ #category : 'rendering' }
OPUmlCommentIcon >> renderBasicShape [

| iconGroup |
iconGroup := self iconFormSetNamed: #announcement.

^ RSBitmap new
form: (self iconNamed: #announcement);
form: (iconGroup asFormAtScale: 2);
extent: iconGroup extent;
yourself
]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@ Class {
{ #category : 'rendering' }
OPUmlCompartmentableContent >> layoutOwnedElements [

self roassalShape
pushBack;
signalUpdate
"do nothing"
]

{ #category : 'initialization' }
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
Loading

0 comments on commit ebd2d4e

Please sign in to comment.