@Override
 public void dispose() {
   // clear all properties
   value = new JRPropertiesMap();
   List<PropertyDTO> props = (List<PropertyDTO>) tableViewer.getInput();
   for (PropertyDTO p : props) {
     if (p.getProperty() != null && !p.getProperty().equals("")) // $NON-NLS-1$
     value.setProperty(p.getProperty(), p.getValue().toString());
   }
   super.dispose();
 }
  public void setValue(Object val)
      throws IllegalAccessException, IllegalArgumentException, InvocationTargetException {
    // if (!(val instanceof JRPropertiesMap)) throw new IllegalArgumentException();

    if (!(val instanceof List)) throw new IllegalArgumentException();

    // Fill this map with the content of the map we got here...

    // 1. Create the map...
    JRPropertiesMap map = new JRPropertiesMap();
    List values = (List) val;
    for (int i = 0; i < values.size(); ++i) {
      GenericProperty prop = (GenericProperty) values.get(i);
      if (!prop.isUseExpression()) {
        map.setProperty(prop.getKey(), (String) prop.getValue());
      }
    }

    ModelUtils.replacePropertiesMap(map, element.getPropertiesMap());
    ModelUtils.replaceExpressionProperties(element, values);

    com.jaspersoft.ireport.designer.IReportManager.getInstance().notifyReportChange();
  }