diff --git a/lib/features/modeling/behavior/ModelingFeedback.js b/lib/features/modeling/behavior/ModelingFeedback.js new file mode 100644 index 00000000..e4f20a9c --- /dev/null +++ b/lib/features/modeling/behavior/ModelingFeedback.js @@ -0,0 +1,36 @@ +'use strict'; + +var is = require('../../../util/ModelUtil').is; + + +function ModelingFeedback(eventBus, tooltips) { + + function showError(position, message) { + tooltips.add({ + position: { + x: position.x + 5, + y: position.y + 5 + }, + type: 'error', + timeout: 2000, + html: '
' + message + '
' + }); + } + + eventBus.on([ 'shape.move.rejected', 'create.rejected' ], function(event) { + + var context = event.context, + shape = context.shape, + target = context.target; + + if (is(target, 'bpmn:Collaboration') && is(shape, 'bpmn:FlowNode')) { + showError(event, 'flow elements must be children of pools/participants'); + } + }); + +} + + +ModelingFeedback.$inject = [ 'eventBus', 'tooltips' ]; + +module.exports = ModelingFeedback; \ No newline at end of file diff --git a/lib/features/modeling/behavior/index.js b/lib/features/modeling/behavior/index.js index 3d4de43b..82bb3cd4 100644 --- a/lib/features/modeling/behavior/index.js +++ b/lib/features/modeling/behavior/index.js @@ -1,7 +1,14 @@ module.exports = { - __init__: [ 'appendBehavior', 'dropBehavior', 'createBehavior', 'removeBehavior' ], + __init__: [ + 'appendBehavior', + 'createBehavior', + 'dropBehavior', + 'removeBehavior', + 'modelingFeedback' + ], appendBehavior: [ 'type', require('./AppendBehavior') ], + dropBehavior: [ 'type', require('./DropBehavior') ], createBehavior: [ 'type', require('./CreateBehavior') ], removeBehavior: [ 'type', require('./RemoveBehavior') ], - dropBehavior: [ 'type', require('./DropBehavior') ] + modelingFeedback: [ 'type', require('./ModelingFeedback') ] }; \ No newline at end of file diff --git a/lib/features/modeling/index.js b/lib/features/modeling/index.js index e5862088..a2128d22 100644 --- a/lib/features/modeling/index.js +++ b/lib/features/modeling/index.js @@ -5,6 +5,7 @@ module.exports = { require('./rules'), require('./behavior'), require('diagram-js/lib/command'), + require('diagram-js/lib/features/tooltips'), require('diagram-js/lib/features/change-support') ], bpmnFactory: [ 'type', require('./BpmnFactory') ],