feature(contextpad): add catch events to pad for event based gateways

close #206
This commit is contained in:
jdotzki 2015-03-06 09:27:18 +01:00
parent e665895448
commit 6aceab9dbf
2 changed files with 26 additions and 4 deletions

View File

@ -96,10 +96,11 @@ ContextPadProvider.prototype.getContextPadEntries = function(element) {
function appendAction(type, className) { function appendAction(type, className, options) {
function appendListener(event, element) { function appendListener(event, element) {
var shape = elementFactory.createShape({ type: type });
var shape = elementFactory.createShape(assign({ type: type }, options));
create.start(event, shape, element); create.start(event, shape, element);
} }
@ -139,6 +140,18 @@ ContextPadProvider.prototype.getContextPadEntries = function(element) {
assign(actions, { assign(actions, {
'append.receive-task': appendAction('bpmn:ReceiveTask', 'icon-receive-task'), 'append.receive-task': appendAction('bpmn:ReceiveTask', 'icon-receive-task'),
'append.message-intermediate-event': appendAction('bpmn:IntermediateCatchEvent',
'icon-02-message-intermediate-event',
{ _eventDefinitionType: 'bpmn:MessageEventDefinition'}),
'append.timer-intermediate-event': appendAction('bpmn:IntermediateCatchEvent',
'icon-03-timer-intermediate-event',
{ _eventDefinitionType: 'bpmn:TimerEventDefinition'}),
'append.condtion-intermediate-event': appendAction('bpmn:IntermediateCatchEvent',
'icon-05-conditional-intermediate-event',
{ _eventDefinitionType: 'bpmn:ConditionalEventDefinition'}),
'append.signal-intermediate-event': appendAction('bpmn:IntermediateCatchEvent',
'icon-10-signal-intermediate-event',
{ _eventDefinitionType: 'bpmn:SignalEventDefinition'}),
'connect': { 'connect': {
group: 'connect', group: 'connect',
className: 'icon-connection', className: 'icon-connection',

View File

@ -9,15 +9,16 @@ var BaseElementFactory = require('diagram-js/lib/core/ElementFactory'),
/** /**
* A bpmn-aware factory for diagram-js shapes * A bpmn-aware factory for diagram-js shapes
*/ */
function ElementFactory(bpmnFactory) { function ElementFactory(bpmnFactory, moddle) {
BaseElementFactory.call(this); BaseElementFactory.call(this);
this._bpmnFactory = bpmnFactory; this._bpmnFactory = bpmnFactory;
this._moddle = moddle;
} }
ElementFactory.prototype = Object.create(BaseElementFactory.prototype); ElementFactory.prototype = Object.create(BaseElementFactory.prototype);
ElementFactory.$inject = [ 'bpmnFactory' ]; ElementFactory.$inject = [ 'bpmnFactory', 'moddle' ];
module.exports = ElementFactory; module.exports = ElementFactory;
@ -65,6 +66,14 @@ ElementFactory.prototype.create = function(elementType, attrs) {
businessObject.di.isMarkerVisible = true; businessObject.di.isMarkerVisible = true;
} }
if (attrs._eventDefinitionType) {
var eventDefinitions = businessObject.get('eventDefinitions') || [],
newEventDefinition = this._moddle.create(attrs._eventDefinitionType);
eventDefinitions.push(newEventDefinition);
businessObject.eventDefinitions = eventDefinitions;
}
size = this._getDefaultSize(businessObject); size = this._getDefaultSize(businessObject);
attrs = assign({ attrs = assign({