'use strict'; var inherits = require('inherits'); var CommandInterceptor = require('diagram-js/lib/command/CommandInterceptor'); /** * BPMN specific remove behavior */ function RemoveBehavior(eventBus, modeling) { CommandInterceptor.call(this, eventBus); /** * morph collaboration diagram into process diagram * after the last participant has been removed */ this.preExecute('shape.delete', function(context) { var shape = context.shape, parent = shape.parent; // activate the behavior if the shape to be removed // is a participant if (shape.businessObject.$instanceOf('bpmn:Participant')) { context.collaborationRoot = parent; } }, true); this.postExecute('shape.delete', function(context) { var collaborationRoot = context.collaborationRoot; if (collaborationRoot && collaborationRoot.businessObject.participants.length < 2) { // replace empty collaboration with process diagram modeling.makeProcess(); } }, true); } RemoveBehavior.$inject = [ 'eventBus', 'modeling' ]; inherits(RemoveBehavior, CommandInterceptor); module.exports = RemoveBehavior;