@Override
	public void setValueAt(Object value, final int row, final int col) {
		final String key = this.propNames.get(row);
		final WidgetProperty p = this.dataMap.get(key);
		p.setValue(value);
		Object o;
		if ((this.selectedComponents != null)
				&& !this.selectedComponents.isEmpty()) {
			o = this.selectedComponents.get(0);
		} else {
			o = this.form;
		}
		try {
			if (p.getType().equals(int.class)
					|| p.getType().equals(Integer.class)) {
				value = Integer.parseInt((String) value);
			} else if (p.getType().isEnum()) {
				// value = Enum.valueOf(p.getType(), (String)value);
			}
			p.getSetter().invoke(o, value);
		} catch (final IllegalArgumentException e) {
		} catch (final IllegalAccessException e) {
		} catch (final InvocationTargetException e) {
			this.updateDataModel(this.selectedComponents);
			if (e.getCause() instanceof WidgetNameExistsException) {
				JOptionPane.showMessageDialog(null, e.getCause().getMessage(),
						"Error while renaming widget",
						JOptionPane.ERROR_MESSAGE);
			}
			e.printStackTrace();
		}

		final PropertyUpdatedSignal s = new PropertyUpdatedSignal();
		s.setSource(this);
		s.setPropertyName(key);
		SignalManager.getInstance().sendSignal(s, "propertyEditor");
	}