@Override
	public void setValueAt(Object value, int row, AttributeTableModel model) {
		AttributeContainer node = view.tree;
		
		if (node == null) {
			return;
		}
		
		String key = (String) model.keys.get(row);
		
		boolean readOnly = node.isReadOnly(key);
		
		Object oldValue = node.getAttribute(key);
		
		model.values.set(row, value);
		node.setAttribute(key, value);
		
		OutlinerDocument doc = view.tree.getDocument();
		doc.setModified(true);
		
		// undo
		Undoable undoable = new UndoableDocumentAttributeChange(view.tree, key, oldValue, readOnly, key, value, readOnly);
		undoable.setName("Edit Document Attribute");
		doc.getUndoQueue().add(undoable);
		
		model.fireTableDataChanged();
	}