private Widget valueEditor(final ActionFieldValue val) {
    PackageDataModelOracle completions = this.getModeller().getSuggestionCompletions();
    String type = "";
    if (completions.isGlobalVariable(this.model.getVariable())) {
      type = completions.getGlobalVariable(this.model.getVariable());
    } else {
      type = this.getModeller().getModel().getLHSBindingType(this.model.getVariable());
      /*
       * to take in account if the using a rhs bound variable
       */
      if (type == null && !this.readOnly) {
        type =
            this.getModeller().getModel().getRHSBoundFact(this.model.getVariable()).getFactType();
      }
    }

    DropDownData enums =
        completions.getEnums(
            type, val.getField(), FieldNatureUtil.toMap(this.model.getFieldValues()));
    ActionValueEditor actionValueEditor =
        new ActionValueEditor(
            val, enums, this.getModeller(), this.getEventBus(), val.getType(), this.readOnly);
    actionValueEditor.setOnChangeCommand(
        new Command() {

          public void execute() {
            setModified(true);
          }
        });
    return actionValueEditor;
  }
  private Widget valueEditor(final CallFieldValue val) {

    String type = "";
    if (dmo.isGlobalVariable(this.mCall.getVariable())) {
      type = dmo.getGlobalVariable(this.mCall.getVariable());
    } else {
      Map<String, String> mFactTypes = scenario.getVariableTypes();
      type = mFactTypes.get(this.mCall.getVariable());
    }

    DropDownData enums = dmo.getEnums(type, val.field, this.mCall.getCallFieldValuesMap());
    return new MethodParameterCallValueEditor(
        val,
        enums,
        executionTrace,
        scenario,
        val.type,
        new Command() {

          public void execute() {
            makeDirty();
          }
        });
  }