Example #1
0
 /**
  * Remove um no da lista
  * 
  * @author Hugo Ferreira da Silva
  * @param Lumine_Tree_Node $node
  * @return void
  */
 public function remove(Lumine_Tree_Node $node)
 {
     $newList = array();
     foreach ($this->nodeList as $key => $currNode) {
         if ($node != $currNode) {
             $newList[] = $currNode;
         } else {
             $node->setNodeList(null);
         }
     }
     $this->nodeList = $newList;
 }
Example #2
0
 /**
  * Atribui os ouvintes de evento
  * 
  * @author Hugo Ferreira da Silva
  * @param Lumine_Tree_Node $node
  * @return void
  */
 protected function setEventListeners(Lumine_Tree_Node $node)
 {
     $node->addEventListener(Lumine_Tree_Event::PRE_NODE_ADD, array($this, 'redispatchEvent'));
     $node->addEventListener(Lumine_Tree_Event::PRE_NODE_REMOVE, array($this, 'redispatchEvent'));
     $node->addEventListener(Lumine_Tree_Event::PRE_NODE_SAVE, array($this, 'redispatchEvent'));
     $node->addEventListener(Lumine_Tree_Event::PRE_NODE_DELETE, array($this, 'redispatchEvent'));
     $node->addEventListener(Lumine_Tree_Event::POS_NODE_ADD, array($this, 'redispatchEvent'));
     $node->addEventListener(Lumine_Tree_Event::POS_NODE_REMOVE, array($this, 'redispatchEvent'));
     $node->addEventListener(Lumine_Tree_Event::POS_NODE_SAVE, array($this, 'redispatchEvent'));
     $node->addEventListener(Lumine_Tree_Event::POS_NODE_DELETE, array($this, 'redispatchEvent'));
 }
Example #3
0
 /**
  * Recupera os nos filhos de uma arvore
  * 
  * Efetua a consulta uma unica vez.
  * Depois que os nos filhos estao populados, sempre
  * utiliza os nos encontrados
  * 
  * @author Hugo Ferreira da Silva
  * @param boolean $loadSubChilds Indica se os filhos deverao carregar seus sub-filhos
  * @return Lumine_Tree_NodeList
  */
 public function getChildNodes($loadSubChilds = false)
 {
     // se ainda nao buscou os nos filhos
     if (is_null($this->childNodes)) {
         // cria um node list
         $this->childNodes = new Lumine_Tree_NodeList();
         // pega o codigo deste objeto
         $code = $this->obj->{$this->fieldId};
         // se tiver um codigo
         if (!is_null($code)) {
             // inicia a reflexao
             $ref = new ReflectionClass($this->obj->metadata()->getClassname());
             // recupera uma nova instancia
             $inst = $ref->newInstance();
             // consulta os filhos
             $inst->where('{' . $this->fieldParentId . '} = ?', $code)->find();
             // para cada filho encontrado
             while ($inst->fetch()) {
                 // cria uma nova instancia
                 $temp = $ref->newInstanceArgs();
                 // popula com os dados encontrados
                 $temp->populateFrom($inst->toArray());
                 // cria um no
                 $node = new Lumine_Tree_Node($temp, $this->fieldId, $this->fieldParentId);
                 // informa que este objeto eh o parentNode
                 $node->parentNode = $this;
                 if (!is_null($this->getTree())) {
                     // informa a arvore
                     $node->setTree($this->getTree());
                 }
                 if ($loadSubChilds) {
                     $node->getChildNodes($loadSubChilds);
                 }
                 // coloca na lista
                 $this->childNodes->add($node);
             }
             // destroi o objetode consulta
             $inst->destroy();
         }
     }
     // retorna os nos filhos
     return $this->childNodes;
 }