function validate()
  {
    if(!$result = parent :: validate())
      return $result;

    $ids = $this->dataspace->get('ids', array());
    $new_parent_node_id = $this->dataspace->get('parent_node_id');

    if(!sizeof($ids))
      return false;

    $objects = $this->_get_objects_to_move(array_keys($ids));

    $tree =& tree :: instance();

    foreach($objects as $id => $item)
    {
      $site_object =& wrap_with_site_object($item);

      if(!$tree->can_move_tree($site_object->get_node_id(), $new_parent_node_id))
      {
        $this->validator->add_error('parent_node_id', strings :: get('tree_move_recursion_error', 'error'));
        return false;
      }
    }

    return true;
  }