/** Set the node to be edited */
void
PropertyEditor::setNode(TreeItem * listViewItem, GNode * node)
{
#ifdef DEBUGMSG
  qDebug("PropertyEditor::setNode: Start\n");
#endif
  if (toBeDeleted_) {
    delete toBeDeleted_;
    toBeDeleted_ = 0;
  }
  if (update_) {
    toBeDeleted_ = selectedItem_;
    if (toBeDeleted_) {
      QListViewItem *parent = toBeDeleted_->QListViewItem::parent();
      if (!parent)
        this->takeItem(toBeDeleted_);
      else
        parent->takeItem(toBeDeleted_);
    }
    selectedItem_ = 0;
  }
  itemSelected(0);
  node_ = node;
  listViewItem_ = listViewItem;
  selectedItem_ = 0;
  clear();
  if (!node_ || !listViewItem_)
    return;
  attribList_ = &(node->attribList());
  QDictIterator < QString > it(*attribList_);
#ifdef DEBUGMSG
  qDebug("PropertyEditor::setNode: Using default attriblist\n");
#endif
  for (; it.current(); ++it) {
    new PropertyItem(node_, this, it.currentKey(),
                     *(it.current()), true);
  }
#ifdef DEBUGMSG
    qDebug("Done\n");
#endif
  {
    QListViewItemIterator it(this);
    for (; it.current(); ++it) {
      PropertyItem *p = (PropertyItem *) (it.current());
      p->addToolTip();
    }
  }
#if 0
  PropertyItem *parent =
    new PropertyItem(node_, this, "default Attribs", "", true);
  parent->setSelectable(false);
  parent->setOpen(true);
  {
    QStringList::Iterator it;
    for (it = node_->predefinedAttribs().begin();
         it != node_->predefinedAttribs().end(); ++it) {
#ifdef DEBUGMSG
      qDebug("add Attribute %s\n", (const char *) (*it));
#endif
      new PropertyItem(node_, parent, (*it), node_->attribute(*it));
    }
  }
  parent = new PropertyItem(node_, this, "add Attributes", "", true);
  {
    QDictIterator < QString > it(*attribList_);
    for (; it.current(); ++it) {
      if (!node_->predefinedAttribs().contains(it.currentKey()))
        new PropertyItem(node_, parent, it.currentKey(), *(it.current()));
    }
  }
#endif
}