private void editItem(final TableItem item) {
    NamespacedProperty expression =
        ((PublishEventMediatorAttributeImpl) item.getData()).getAttributeExpression();

    // value type table editor
    valueTypeEditor = initTableEditor(valueTypeEditor, item.getParent());
    cmbValueType = new Combo(item.getParent(), SWT.READ_ONLY);
    cmbValueType.setItems(
        new String[] {
          AttributeValueType.STRING.getLiteral(), AttributeValueType.EXPRESSION.getLiteral()
        });
    cmbValueType.setText(item.getText(2));
    valueTypeEditor.setEditor(cmbValueType, item, 2);

    item.getParent().redraw();
    item.getParent().layout();
    cmbValueType.addListener(
        SWT.Selection,
        new Listener() {
          public void handleEvent(Event evt) {
            item.setText(2, cmbValueType.getText());
          }
        });

    attributeValueEditor = initTableEditor(attributeValueEditor, item.getParent());
    attributeValue = new PropertyText(item.getParent(), SWT.NONE, cmbValueType);
    attributeValue.addProperties(item.getText(1), expression);
    attributeValueEditor.setEditor(attributeValue, item, 1);
    item.getParent().redraw();
    item.getParent().layout();
    attributeValue.addModifyListener(
        new ModifyListener() {
          public void modifyText(ModifyEvent e) {
            item.setText(1, attributeValue.getText());
            Object property = attributeValue.getProperty();
            if (property instanceof NamespacedProperty) {
              item.setData(EXPRESSION_DATA, (NamespacedProperty) property);
            }
          }
        });
  }
  private void editItem(final TableItem item) {
    final ArgumentWrapper wrapper = (ArgumentWrapper) item.getData();

    argumentTypeEditor = initTableEditor(argumentTypeEditor, item.getParent());
    cmbArgumentType = new Combo(item.getParent(), SWT.READ_ONLY);
    cmbArgumentType.setItems(new String[] {LITERAL_VALUE, LITERAL_EXPRESSION});
    cmbArgumentType.setText(item.getText(0));
    argumentTypeEditor.setEditor(cmbArgumentType, item, 0);
    item.getParent().redraw();
    item.getParent().layout();
    cmbArgumentType.addListener(
        SWT.Selection,
        new Listener() {
          public void handleEvent(Event evt) {
            item.setText(0, cmbArgumentType.getText());
            if (cmbArgumentType.getSelectionIndex() == 1) {
              wrapper.setExpression(true);
              item.setText(1, wrapper.getArgumentExpression().getPropertyValue());

              String evalString = MediaType.XML.toString();
              if (wrapper.getEvaluator() != null) {
                evalString = wrapper.getEvaluator().toString();
              }
              item.setText(2, evalString);
              cmbArgumentEvaluator.setText(evalString);
              cmbArgumentEvaluator.setEnabled(true);
            } else {
              wrapper.setExpression(false);
              item.setText(1, wrapper.getArgumentValue());
              item.setText(2, "");
              cmbArgumentEvaluator.setText("");
              cmbArgumentEvaluator.setEnabled(false);
            }
          }
        });

    argumentValueEditor = initTableEditor(argumentValueEditor, item.getParent());
    argumentValue = new PropertyText(item.getParent(), SWT.NONE, cmbArgumentType);
    argumentValue.addProperties(wrapper.getArgumentValue(), wrapper.getArgumentExpression());
    argumentValueEditor.setEditor(argumentValue, item, 1);
    item.getParent().redraw();
    item.getParent().layout();
    argumentValue.addModifyListener(
        new ModifyListener() {

          public void modifyText(ModifyEvent e) {
            item.setText(1, argumentValue.getText());
            Object property = argumentValue.getProperty();
            if (property instanceof NamespacedProperty) {
              /*					if (wrapper.getEvaluator() == MediaType.XML) {
              	wrapper.setArgumentExpression((NamespacedProperty)property);
              } else if (wrapper.getEvaluator() == MediaType.JSON){
              	String modifiedText = argumentValue.getText();
              	NamespacedProperty namespacedProperty = (NamespacedProperty)property;
              	namespacedProperty.setPropertyValue(modifiedText);
              	wrapper.setArgumentExpression(namespacedProperty);
              }*/
              wrapper.setArgumentExpression((NamespacedProperty) property);
            } else {
              wrapper.setArgumentValue(property.toString());
            }
          }
        });

    argumentEvaluatorEditor = initTableEditor(argumentEvaluatorEditor, item.getParent());
    cmbArgumentEvaluator = new Combo(item.getParent(), SWT.READ_ONLY);
    cmbArgumentEvaluator.setItems(new String[] {LITERAL_XML, LITERAL_JSON});
    cmbArgumentEvaluator.setText(item.getText(2));
    argumentEvaluatorEditor.setEditor(cmbArgumentEvaluator, item, 2);
    cmbArgumentEvaluator.setEnabled(wrapper.isExpression());
    item.getParent().redraw();
    item.getParent().layout();
    cmbArgumentEvaluator.addListener(
        SWT.Selection,
        new Listener() {
          public void handleEvent(Event evt) {

            item.setText(2, cmbArgumentEvaluator.getText());
            if (cmbArgumentEvaluator.getSelectionIndex() == 0) {
              wrapper.setEvaluator(MediaType.XML);
              // argumentValue.setForcefullInlineEditing(false);
            } else {
              wrapper.setEvaluator(MediaType.JSON);
              // argumentValue.setForcefullInlineEditing(true);
            }
          }
        });

    /*		if (wrapper.isExpression()) {
    	if (wrapper.getEvaluator() == MediaType.XML){
    		argumentValue.setForcefullInlineEditing(false);
    	} else if (wrapper.getEvaluator() == MediaType.JSON){
    		argumentValue.setForcefullInlineEditing(true);
    	}
    }*/
  }