| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- import { forEach } from 'min-dash';
- import {
- add as collectionAdd,
- remove as collectionRemove
- } from '../../../util/Collections';
- /**
- * A handler that implements reversible moving of connections.
- *
- * The handler differs from the layout connection handler in a sense
- * that it preserves the connection layout.
- */
- export default function MoveConnectionHandler() { }
- MoveConnectionHandler.prototype.execute = function(context) {
- var connection = context.connection,
- delta = context.delta;
- var newParent = context.newParent || connection.parent,
- newParentIndex = context.newParentIndex,
- oldParent = connection.parent;
- // save old parent in context
- context.oldParent = oldParent;
- context.oldParentIndex = collectionRemove(oldParent.children, connection);
- // add to new parent at position
- collectionAdd(newParent.children, connection, newParentIndex);
- // update parent
- connection.parent = newParent;
- // update waypoint positions
- forEach(connection.waypoints, function(p) {
- p.x += delta.x;
- p.y += delta.y;
- if (p.original) {
- p.original.x += delta.x;
- p.original.y += delta.y;
- }
- });
- return connection;
- };
- MoveConnectionHandler.prototype.revert = function(context) {
- var connection = context.connection,
- newParent = connection.parent,
- oldParent = context.oldParent,
- oldParentIndex = context.oldParentIndex,
- delta = context.delta;
- // remove from newParent
- collectionRemove(newParent.children, connection);
- // restore previous location in old parent
- collectionAdd(oldParent.children, connection, oldParentIndex);
- // restore parent
- connection.parent = oldParent;
- // revert to old waypoint positions
- forEach(connection.waypoints, function(p) {
- p.x -= delta.x;
- p.y -= delta.y;
- if (p.original) {
- p.original.x -= delta.x;
- p.original.y -= delta.y;
- }
- });
- return connection;
- };
|