Skip to content

Commit

Permalink
Wardley Map: draggable note [feenkcom/gtoolkit#3781]
Browse files Browse the repository at this point in the history
  • Loading branch information
JurajKubelka committed May 20, 2024
1 parent f1bbff9 commit 6ab3d17
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 0 deletions.
15 changes: 15 additions & 0 deletions src/GToolkit-WardleyMap/GtWardleyMapCanvasElement.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -394,6 +394,20 @@ GtWardleyMapCanvasElement >> onNoteAdded: anAnnouncement [
self addChild: aNoteElement
]

{ #category : #'event handling' }
GtWardleyMapCanvasElement >> onNoteMoved: anAnnouncement [
| aMovedNoteViewModel |
aMovedNoteViewModel := anAnnouncement noteViewModel.

self
noteViewFor: aMovedNoteViewModel
ifFound: [ :aNoteView |
GtWardleyMapUtility
updateNoteElement: aNoteView
noteViewModel: aMovedNoteViewModel ]
ifNone: [ ].
]

{ #category : #'event handling' }
GtWardleyMapCanvasElement >> onNoteRemoved: anAnnouncement [
self
Expand Down Expand Up @@ -461,6 +475,7 @@ GtWardleyMapCanvasElement >> subscribeToWardleyMapViewModel [
when: GtWardleyMapNodeViewModelInnerNodeAdded send: #onInnerNodeAdded: to: self;
when: GtWardleyMapEdgeViewModelAdded send: #onEdgeAdded: to: self;
when: GtWardleyMapEdgeViewModelRemoved send: #onEdgeRemoved: to: self;
when: GtWardleyMapNoteViewModelMoved send: #onNoteMoved: to: self;
when: GtWardleyMapNoteViewModelAdded send: #onNoteAdded: to: self;
when: GtWardleyMapNoteViewModelRemoved send: #onNoteRemoved: to: self
]
Expand Down
17 changes: 17 additions & 0 deletions src/GToolkit-WardleyMap/GtWardleyMapNoteViewModel.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -66,13 +66,30 @@ GtWardleyMapNoteViewModel >> noteColor [
^ self wardleyMapNoteModel color
]

{ #category : #'api - wardley map node model' }
GtWardleyMapNoteViewModel >> onNodeMoved: anAnnouncement [
self announce: (GtWardleyMapNoteViewModelMoved new noteViewModel: self).
self wardleyMapViewModel announce: (GtWardleyMapNoteViewModelMoved new noteViewModel: self)
]

{ #category : #'api - wardley map node model' }
GtWardleyMapNoteViewModel >> onWardleyMapNoteModelChanged [
"Is sent when a new wardleyMapNote model is assigned to the view model"


]

{ #category : #'api - wardley map node model' }
GtWardleyMapNoteViewModel >> subscribeToWardleyMapNoteModel [
"Is sent after a new wardleyMapNote model is assigned to the view model.
It is required to unsubscribe from the domain model by implementing
#unsubscribeFromWardleyMapNoteModel if view model subscribes to them"

self wardleyMapNoteModel weak
when: GtWardleyMapNodeModelMoved send: #onNodeMoved: to: self;
when: GtWardleyMapNodeModelColored send: #onNodeColored: to: self
]

{ #category : #'api - wardley map node model' }
GtWardleyMapNoteViewModel >> unsubscribeFromWardleyMapNoteModel [
"Is sent before a new wardleyMapNote model is assigned to the view model.
Expand Down
18 changes: 18 additions & 0 deletions src/GToolkit-WardleyMap/GtWardleyMapNoteViewModelMoved.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
Class {
#name : #GtWardleyMapNoteViewModelMoved,
#superclass : #Announcement,
#instVars : [
'noteViewModel'
],
#category : #'GToolkit-WardleyMap-Events'
}

{ #category : #accessing }
GtWardleyMapNoteViewModelMoved >> noteViewModel [
^ noteViewModel
]

{ #category : #accessing }
GtWardleyMapNoteViewModelMoved >> noteViewModel: anObject [
noteViewModel := anObject
]

0 comments on commit 6ab3d17

Please sign in to comment.