50 lines
959 B
JavaScript
50 lines
959 B
JavaScript
|
'use strict';
|
||
|
|
||
|
var isAny = require('../modeling/util/ModelingUtil').isAny;
|
||
|
|
||
|
/**
|
||
|
* Extention of GlobalConnect tool that implements BPMN specific rules about
|
||
|
* connection start elements.
|
||
|
*/
|
||
|
function BpmnGlobalConnect(globalConnect) {
|
||
|
globalConnect.registerProvider(this);
|
||
|
}
|
||
|
|
||
|
BpmnGlobalConnect.$inject = [ 'globalConnect' ];
|
||
|
|
||
|
module.exports = BpmnGlobalConnect;
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Checks if given element can be used for starting connection.
|
||
|
*
|
||
|
* @param {Element} source
|
||
|
* @return {Boolean}
|
||
|
*/
|
||
|
BpmnGlobalConnect.prototype.canStartConnect = function(source) {
|
||
|
|
||
|
if (nonExistantOrLabel(source)) {
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
var businessObject = source.businessObject;
|
||
|
|
||
|
return isAny(businessObject, [
|
||
|
'bpmn:FlowNode',
|
||
|
'bpmn:InteractionNode',
|
||
|
'bpmn:DataObjectReference',
|
||
|
'bpmn:DataStoreReference'
|
||
|
]);
|
||
|
};
|
||
|
|
||
|
|
||
|
function nonExistantOrLabel(element) {
|
||
|
return !element || isLabel(element);
|
||
|
}
|
||
|
|
||
|
function isLabel(element) {
|
||
|
return element.labelTarget;
|
||
|
}
|
||
|
|
||
|
|