Skip to content

Commit

Permalink
common elements persistence
Browse files Browse the repository at this point in the history
  • Loading branch information
JanBliznicenko committed Feb 14, 2021
1 parent a1eeff7 commit 2bd5136
Show file tree
Hide file tree
Showing 4 changed files with 184 additions and 184 deletions.
184 changes: 92 additions & 92 deletions repository/OpenPonk-ClassEditor/OPTUmlBaseController.trait.st
@@ -1,92 +1,92 @@
Trait {
#name : #OPTUmlBaseController,
#category : #'OpenPonk-ClassEditor-Controllers'
}

{ #category : #forms }
OPTUmlBaseController >> buildNameEditorForm: aForm [
(aForm addTextInput: 'Name')
text: self model name;
whenTextIsAccepted: [ :newValue |
self model name: newValue.
self refreshFigure ]
]

{ #category : #forms }
OPTUmlBaseController >> descriptionAccessor: aSymbol [
^ MAPluggableAccessor
read: [ :me | me model perform: aSymbol ]
write: [ :me :newValue |
me model perform: (aSymbol , ':') asSymbol with: newValue.
self reactToAttributeWrite ]
]

{ #category : #forms }
OPTUmlBaseController >> descriptionComment [
<magritteDescription>
^ MAMemoDescription new
required: false;
accessor:
(MAPluggableAccessor
read: [ :me |
me model ownedComments
ifEmpty: [ '' ]
ifNotEmpty: [ :oc | oc first body asString ] ]
write: [ :me :newValue |
me model ownedComments
ifEmpty: [ me model ownedComments add: OPUMLComment new ].
me model ownedComments first body: newValue asString.
self reactToAttributeWrite ]);
label: 'Comment';
priority: 100;
yourself
]

{ #category : #forms }
OPTUmlBaseController >> descriptionModelInfo [
<magritteDescription>
^ MAStringDescription new
beReadonly;
accessor: (MAPluggableAccessor read: [ :me | '' ] write: [ :me :newValue | ]);
label: self nameOfType;
priority: 0;
yourself
]

{ #category : #forms }
OPTUmlBaseController >> descriptionName [
<magritteDescription>
^ MAStringDescription new
accessor: (self descriptionAccessor: #name);
label: 'Name';
priority: 1;
yourself
]

{ #category : #forms }
OPTUmlBaseController >> descriptionVisibility [
<magritteDescription>
^ MASingleOptionDescription new
optionsAndLabels:
{nil -> ''.
OPUMLVisibilityKind public -> 'public'.
OPUMLVisibilityKind protected -> 'protected'.
OPUMLVisibilityKind private -> 'private'.
OPUMLVisibilityKind new package -> 'package'};
reference: MAStringDescription new;
accessor:
(MAPluggableAccessor
read: [ :me | me model visibility ]
write: [ :me :newValue |
me model visibility: newValue.
self refreshFigure ]);
label: 'Visibility';
priority: 8;
beSorted;
yourself
]

{ #category : #hooks }
OPTUmlBaseController >> reactToAttributeWrite [
self subclassResponsibility
]
Trait {
#name : #OPTUmlBaseController,
#category : #'OpenPonk-ClassEditor-Controllers'
}

{ #category : #forms }
OPTUmlBaseController >> buildNameEditorForm: aForm [
(aForm addTextInput: 'Name')
text: self model name;
whenTextIsAccepted: [ :newValue |
self model name: newValue.
self refreshFigure ]
]

{ #category : #forms }
OPTUmlBaseController >> descriptionAccessor: aSymbol [
^ MAPluggableAccessor
read: [ :me | me model perform: aSymbol ]
write: [ :me :newValue |
me model perform: (aSymbol , ':') asSymbol with: newValue.
self reactToAttributeWrite ]
]

{ #category : #forms }
OPTUmlBaseController >> descriptionComment [
<magritteDescription>
^ MAMemoDescription new
required: false;
accessor:
(MAPluggableAccessor
read: [ :me |
me model ownedComments
ifEmpty: [ '' ]
ifNotEmpty: [ :oc | oc first body asString ] ]
write: [ :me :newValue |
me model ownedComments
ifEmpty: [ me model ownedComments add: OPUMLComment new ].
me model ownedComments first body: newValue asString.
self reactToAttributeWrite ]);
label: 'Comment';
priority: 100;
yourself
]

{ #category : #forms }
OPTUmlBaseController >> descriptionModelInfo [
<magritteDescription>
^ MAStringDescription new
beReadonly;
accessor: (MAPluggableAccessor read: [ :me | '' ] write: [ :me :newValue | ]);
label: self nameOfType;
priority: 0;
yourself
]

{ #category : #forms }
OPTUmlBaseController >> descriptionName [
<magritteDescription>
^ MAStringDescription new
accessor: (self descriptionAccessor: #name);
label: 'Name';
priority: 1;
yourself
]

{ #category : #forms }
OPTUmlBaseController >> descriptionVisibility [
<magritteDescription>
^ MASingleOptionDescription new
optionsAndLabels:
{nil -> ''.
OPUMLVisibilityKind public -> 'public'.
OPUMLVisibilityKind protected -> 'protected'.
OPUMLVisibilityKind private -> 'private'.
OPUMLVisibilityKind new package -> 'package'};
reference: MAStringDescription new;
accessor:
(MAPluggableAccessor
read: [ :me | me model visibility ]
write: [ :me :newValue |
me model visibility: newValue.
self refreshFigure ]);
label: 'Visibility';
priority: 8;
beSorted;
yourself
]

{ #category : #hooks }
OPTUmlBaseController >> reactToAttributeWrite [
self subclassResponsibility
]
Expand Up @@ -64,9 +64,11 @@ OPUmlAttributeControllerTest >> testDescriptionAccessorWrite [
{ #category : #tests }
OPUmlAttributeControllerTest >> testDescriptions [
| container |
controller diagramController: diagramController.
container := controller magritteDescription.
self assert: (container anySatisfy: [ :each | each label = 'Name' ]).
self assert: (container anySatisfy: [ :each | each label = 'Is Derived' ]).
self
assert: (container anySatisfy: [ :each | each label = 'Is Derived' ])
]

{ #category : #tests }
Expand Down
Expand Up @@ -24,7 +24,7 @@ OPUmlPackageDiagramController >> addAsTargetFor: aClassController [
OPUmlPackageDiagramController >> allShowableElements [
"Should return all elements that could be directly hidden on diagram"

^ self elementsToShowInside
^ self elementsToShowInside , self diagram commonElements
,
((self model packagedElements
select:
Expand All @@ -49,6 +49,27 @@ OPUmlPackageDiagramController >> commonModelClassPrefix [
^ 'OPUML'
]

{ #category : #adding }
OPUmlPackageDiagramController >> controllerFactory [
^ super controllerFactory
register: OPUmlClassController forModel: OPUMLClass;
register: OPUmlAttributeController forModel: OPUMLProperty;
register: OPUmlOperationController forModel: OPUMLOperation;
register: OPUmlGeneralizationController
forModel: OPUMLGeneralization;
register: OPUmlAssociationController forModel: OPUMLAssociation;
register: OPUmlPackageController forModel: OPUMLPackage;
register: OPUmlPackageController forModel: OPUMLModel;
register: OPUmlPackageController forModel: OPUMLProfile;
register: OPUmlExtensionController forModel: OPUMLExtension;
register: OPUmlAttributeController forModel: OPUMLExtensionEnd;
register: OPUmlEnumerationController forModel: OPUMLEnumeration;
register: OPUmlEnumerationLiteralController
forModel: OPUMLEnumerationLiteral;
register: OPUmlStereotypeController forModel: OPUMLStereotype;
register: OPUmlPackageImportController forModel: OPUMLPackageImport
]

{ #category : #forms }
OPUmlPackageDiagramController >> descriptionAppliedProfile [
<magritteDescription>
Expand Down Expand Up @@ -168,11 +189,6 @@ OPUmlPackageDiagramController >> enableRefresh [
withAllSubAndSuperclassesDo: [ :each | uninstall value: each ]
]

{ #category : #testing }
OPUmlPackageDiagramController >> hasSupportForModel: aModel [
^ modelToControllerMapping includesKey: aModel class
]

{ #category : #palette }
OPUmlPackageDiagramController >> initializePackagePalette: aPalette [
aPalette newSeparator.
Expand Down Expand Up @@ -294,24 +310,6 @@ OPUmlPackageDiagramController >> isAppliedProfileInUse [
^ model packagedElements anySatisfy: [ :each | each appliedStereotypes isNotEmpty ]
]

{ #category : #adding }
OPUmlPackageDiagramController >> modelToControllerMapping [
^ {OPUMLClass -> OPUmlClassController.
OPUMLProperty -> OPUmlAttributeController.
OPUMLOperation -> OPUmlOperationController.
OPUMLGeneralization -> OPUmlGeneralizationController.
OPUMLAssociation -> OPUmlAssociationController.
OPUMLPackage -> OPUmlPackageController.
OPUMLModel -> OPUmlPackageController.
OPUMLProfile -> OPUmlPackageController.
OPUMLExtension -> OPUmlExtensionController.
OPUMLExtensionEnd -> OPUmlAttributeController.
OPUMLEnumeration -> OPUmlEnumerationController.
OPUMLEnumerationLiteral -> OPUmlEnumerationLiteralController.
OPUMLStereotype -> OPUmlStereotypeController.
OPUMLPackageImport -> OPUmlPackageImportController} asDictionary
]

{ #category : #hooks }
OPUmlPackageDiagramController >> reactToAttributeWrite [
"do nothing"
Expand Down

0 comments on commit 2bd5136

Please sign in to comment.