3 import entryFactory from 'bpmn-js-properties-panel/lib/factory/EntryFactory';
4 import cmdHelper from 'bpmn-js-properties-panel/lib/helper/CmdHelper';
6 const DELEGATE_TYPES = ['class', 'expression', 'delegateExpression'];
9 class: 'camunda:class',
10 expression: 'camunda:expression',
11 delegateExpression: 'camunda:delegateExpression'
14 function isDelegate(type) {
15 return DELEGATE_TYPES.indexOf(type) !== -1;
18 function getAttribute(type) {
19 return PROPERTIES[type];
22 export default function(element, bpmnFactory, options, translate) {
23 var getImplementationType = options.getImplementationType,
24 getBusinessObject = options.getBusinessObject;
26 function getDelegationLabel(type) {
29 return translate('Java Class');
31 return translate('Expression');
32 case 'delegateExpression':
33 return translate('Delegate Expression');
39 var delegateEntry = entryFactory.textField({
41 label: translate('Value'),
42 dataValueLabel: 'delegationLabel',
43 modelProperty: 'delegate',
45 get: function(element) {
46 var bo = getBusinessObject(element);
47 var type = getImplementationType(element);
48 var attr = getAttribute(type);
49 var label = getDelegationLabel(type);
51 delegate: bo.get(attr),
52 delegationLabel: label
56 set: function(element, values) {
57 var bo = getBusinessObject(element);
58 var type = getImplementationType(element);
59 var attr = getAttribute(type);
61 prop[attr] = values.delegate || '';
62 return cmdHelper.updateBusinessObject(element, bo, prop);
65 validate: function(element, values) {
66 return isDelegate(getImplementationType(element)) &&
68 ? { delegate: 'Must provide a value' }
72 hidden: function(element) {
73 return !isDelegate(getImplementationType(element));
77 return [delegateEntry];