/**
  * Add a child component to current one. 
  * 
  * If a {@link __ItemComponent} instance is received, it will also be added to the item list
  *
  * @param __IComponent &$component The component to add to
  * @return __ItemListComponent A reference to the current component
  */
 public function addComponent(__IComponent &$component)
 {
     if ($component instanceof __ItemComponent && !key_exists($component->getId(), $this->_components)) {
         if (count($this->_items) == 0 && $this->_selection_mode == self::SELECTION_MODE_SINGLE) {
             $component->setSelected(true);
         }
         $this->_items[$component->getId()] =& $component;
         $this->_to_sort = true;
         if ($component->isSelected()) {
             $this->setSelectedItem($component);
         }
         return parent::addComponent($component);
     }
 }