Last active
December 20, 2015 19:09
-
-
Save pestefo/6180776 to your computer and use it in GitHub Desktop.
Making edges follow their nodes
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
RODraggable>>initializeElement: element | |
| svgElement | | |
svgElement := element shape svgElement. | |
svgElement | |
drag: [ :dx :dy | | |
| bboxCurrent | | |
bboxCurrent := svgElement getBBox. | |
svgElement translate: ((element position x) - (bboxCurrent x) + dx) y: ((element position y) -(bboxCurrent y) + dy). | |
] | |
onStart: [ "do nothing"] | |
onEnd: [ | |
| bboxAfterDrag | | |
bboxAfterDrag := svgElement getBBox. | |
"update current position" | |
element translateTo: (bboxAfterDrag x)@(bboxAfterDrag y). | |
]. | |
"-- How i think it should look like" | |
RODraggable>>initializeElement: element | |
| svgElement | | |
svgElement := element shape svgElement. | |
svgElement | |
drag: [ :dx :dy | | |
| bboxCurrent | | |
bboxCurrent := svgElement getBBox. | |
svgElement translate: ((element position x) - (bboxCurrent x) + dx) y: ((element position y) -(bboxCurrent y) + dy). | |
"update element position and redraw" | |
element translateTo: ((element position x) - (bboxCurrent x) + dx)@((element position y) -(bboxCurrent y) + dy). | |
element signalUpdate. | |
] | |
onStart: [ "do nothing"] | |
onEnd: [ | |
| bboxAfterDrag | | |
bboxAfterDrag := svgElement getBBox. | |
"update current position" | |
"element translateTo: (bboxAfterDrag x)@(bboxAfterDrag y). <-- moved to drag block" | |
]. | |
"-- " | |
ROView>>signalUpdate | |
"Pharo implementation: self announce: RORefreshNeeded" | |
self elements do: [:el | el drawOn: svgCanvas]. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment