| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- import {
- add as collectionAdd,
- indexOf as collectionIdx
- } from '../../../util/Collections';
- import { saveClear } from '../../../util/Removal';
- /**
- * A handler that implements reversible deletion of Connections.
- */
- export default function DeleteConnectionHandler(canvas, modeling) {
- this._canvas = canvas;
- this._modeling = modeling;
- }
- DeleteConnectionHandler.$inject = [
- 'canvas',
- 'modeling'
- ];
- /**
- * - Remove connections
- */
- DeleteConnectionHandler.prototype.preExecute = function(context) {
- var modeling = this._modeling;
- var connection = context.connection;
- // remove connections
- saveClear(connection.incoming, function(connection) {
- // To make sure that the connection isn't removed twice
- // For example if a container is removed
- modeling.removeConnection(connection, { nested: true });
- });
- saveClear(connection.outgoing, function(connection) {
- modeling.removeConnection(connection, { nested: true });
- });
- };
- DeleteConnectionHandler.prototype.execute = function(context) {
- var connection = context.connection,
- parent = connection.parent;
- context.parent = parent;
- // remember containment
- context.parentIndex = collectionIdx(parent.children, connection);
- context.source = connection.source;
- context.target = connection.target;
- this._canvas.removeConnection(connection);
- connection.source = null;
- connection.target = null;
- return connection;
- };
- /**
- * Command revert implementation.
- */
- DeleteConnectionHandler.prototype.revert = function(context) {
- var connection = context.connection,
- parent = context.parent,
- parentIndex = context.parentIndex;
- connection.source = context.source;
- connection.target = context.target;
- // restore containment
- collectionAdd(parent.children, connection, parentIndex);
- this._canvas.addConnection(connection, parent);
- return connection;
- };
|