2015-03-31 13:02:04 +00:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
var inherits = require('inherits');
|
|
|
|
|
|
|
|
var CommandInterceptor = require('diagram-js/lib/command/CommandInterceptor');
|
|
|
|
|
2015-04-27 14:50:09 +00:00
|
|
|
var is = require('../../../util/ModelUtil').is;
|
|
|
|
|
|
|
|
|
2015-03-31 13:02:04 +00:00
|
|
|
/**
|
|
|
|
* 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
|
2015-04-27 14:50:09 +00:00
|
|
|
if (is(shape, 'bpmn:Participant')) {
|
2015-03-31 13:02:04 +00:00
|
|
|
context.collaborationRoot = parent;
|
|
|
|
}
|
|
|
|
}, true);
|
|
|
|
|
|
|
|
this.postExecute('shape.delete', function(context) {
|
|
|
|
|
|
|
|
var collaborationRoot = context.collaborationRoot;
|
|
|
|
|
2015-04-28 08:52:21 +00:00
|
|
|
if (collaborationRoot && !collaborationRoot.businessObject.participants.length) {
|
2015-03-31 13:02:04 +00:00
|
|
|
// replace empty collaboration with process diagram
|
|
|
|
modeling.makeProcess();
|
|
|
|
}
|
|
|
|
}, true);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
RemoveBehavior.$inject = [ 'eventBus', 'modeling' ];
|
|
|
|
|
|
|
|
inherits(RemoveBehavior, CommandInterceptor);
|
|
|
|
|
|
|
|
module.exports = RemoveBehavior;
|