12345678910111213141516171819202122232425262728293031323334353637383940 |
- var round = Math.round;
- /**
- * Service that allow replacing of elements.
- */
- export default function Replace(modeling) {
- this._modeling = modeling;
- }
- Replace.$inject = [ 'modeling' ];
- /**
- * @param {Element} oldElement - Element to be replaced
- * @param {Object} newElementData - Containing information about the new Element, for example height, width, type.
- * @param {Object} options - Custom options that will be attached to the context. It can be used to inject data
- * that is needed in the command chain. For example it could be used in
- * eventbus.on('commandStack.shape.replace.postExecute') to change shape attributes after
- * shape creation.
- */
- Replace.prototype.replaceElement = function(oldElement, newElementData, options) {
- var modeling = this._modeling;
- var newElement = null;
- if (oldElement.waypoints) {
- // TODO
- // modeling.replaceConnection
- } else {
- // set center of element for modeling API
- // if no new width / height is given use old elements size
- newElementData.x = round(oldElement.x + (newElementData.width || oldElement.width) / 2);
- newElementData.y = round(oldElement.y + (newElementData.height || oldElement.height) / 2);
- newElement = modeling.replaceShape(oldElement, newElementData, options);
- }
- return newElement;
- };
|