text: 'use strict';
  
  var getBusinessObject = require('bpmn-js/lib/util/ModelUtil').getBusinessObject,
      is = require('bpmn-js/lib/util/ModelUtil').is,
      entryFactory = require('../../../factory/EntryFactory'),
      cmdHelper = require('../../../helper/CmdHelper'),
      scriptImplementation = require('./implementation/Script');
  
  
  module.exports = function(group, element, bpmnFactory, translate) {
    var bo;
  
    if (is(element, 'bpmn:ScriptTask')) {
      bo = getBusinessObject(element);
    }
  
    if (!bo) {
      return;
    }
  
    var script = scriptImplementation('scriptFormat', 'script', false, translate);
    group.entries.push({
      id: 'script-implementation',
      label: translate('Script'),
      html: script.template,
  
      get: function(element) {
        return script.get(element, bo);
      },
  
      set: function(element, values, containerElement) {
        var properties = script.set(element, values, containerElement);
  
        return cmdHelper.updateProperties(element, properties);
      },
  
      validate: function(element, values) {
        return script.validate(element, values);
      },
  
      script : script,
  
      cssClasses: ['bpp-textfield']
  
    });
  
    group.entries.push(entryFactory.textField({
      id : 'scriptResultVariable',
      label : translate('Result Variable'),
      modelProperty : 'scriptResultVariable',
  
      get: function(element, propertyName) {
        var boResultVariable = bo.get('flowable:resultVariable');
  
        return { scriptResultVariable : boResultVariable };
      },
  
      set: function(element, values, containerElement) {
        return cmdHelper.updateProperties(element, {
          'flowable:resultVariable': values.scriptResultVariable.length
            ? values.scriptResultVariable
            : undefined
        });
      }
  
    }));
  
  };
  