2012-05-25 09:48:56 +00:00
|
|
|
<?php
|
2012-06-25 13:03:14 +00:00
|
|
|
abstract class AchList extends Parentum {
|
2012-07-02 16:55:13 +00:00
|
|
|
/*---------------------------
|
|
|
|
This class organizes nodes to distinguish between "open" and "done" nodes.
|
|
|
|
|
|
|
|
child_open and child_done refer to the index set in Parentum::nodes[]
|
|
|
|
---------------------------*/
|
|
|
|
|
2012-07-08 16:11:25 +00:00
|
|
|
protected $child_done;
|
|
|
|
protected $child_open;
|
|
|
|
|
|
|
|
function AchList() {
|
|
|
|
parent::__construct();
|
|
|
|
|
|
|
|
$this->child_done = new DLL();
|
|
|
|
$this->child_open = new DLL();
|
|
|
|
}
|
2012-05-25 09:48:56 +00:00
|
|
|
|
2012-06-25 13:03:14 +00:00
|
|
|
final function getDone() {
|
2012-07-08 16:11:25 +00:00
|
|
|
return $this->child_done->getIterator();
|
2012-05-25 09:48:56 +00:00
|
|
|
}
|
|
|
|
|
2012-06-25 13:03:14 +00:00
|
|
|
final function getOpen() {
|
2012-07-08 16:11:25 +00:00
|
|
|
return $this->child_open->getIterator();
|
2012-05-25 09:48:56 +00:00
|
|
|
}
|
|
|
|
|
2012-06-25 13:03:14 +00:00
|
|
|
final function hasOpen() {
|
2012-07-08 16:11:25 +00:00
|
|
|
#echo "hasOpen: ".$this->child_open->getSize()."<br>";
|
|
|
|
return ($this->child_open->getSize() != 0);
|
2012-05-25 09:48:56 +00:00
|
|
|
}
|
|
|
|
|
2012-06-25 13:03:14 +00:00
|
|
|
final function hasDone() {
|
2012-07-08 16:11:25 +00:00
|
|
|
#echo "hasDone: ".$this->child_done->getSize()."<br>";
|
|
|
|
return ($this->child_done->getSize() != 0);
|
2012-05-25 09:48:56 +00:00
|
|
|
}
|
2012-06-25 13:03:14 +00:00
|
|
|
|
2012-07-08 16:11:25 +00:00
|
|
|
final function addOpen($data) {
|
|
|
|
$this->child_open->addNode($data);
|
|
|
|
$this->addChild($data); #Parentum::addChild()
|
2012-06-25 13:03:14 +00:00
|
|
|
}
|
|
|
|
|
2012-07-08 16:11:25 +00:00
|
|
|
final function addDone($data) {
|
|
|
|
$this->child_done->addNode($data);
|
|
|
|
$this->addChild($data); #Parentum::addChild()
|
2012-06-25 13:03:14 +00:00
|
|
|
}
|
|
|
|
|
2012-07-08 16:11:25 +00:00
|
|
|
final function setChildDone($id) {
|
|
|
|
$this->addChildDone($id);
|
|
|
|
$this->removeChildOpen($id);
|
2012-07-01 18:04:01 +00:00
|
|
|
}
|
|
|
|
|
2012-07-08 16:11:25 +00:00
|
|
|
final function setChildOpen($id) {
|
|
|
|
$this->addChildOpen($id);
|
|
|
|
$this->removeChildDone($id);
|
2012-07-01 18:04:01 +00:00
|
|
|
}
|
|
|
|
|
2012-07-08 16:11:25 +00:00
|
|
|
final function addChildDone($id) {
|
|
|
|
$data = $this->getChildDataByID($id);
|
|
|
|
$this->child_done->addNode($data);
|
2012-07-01 18:04:01 +00:00
|
|
|
}
|
|
|
|
|
2012-07-08 16:11:25 +00:00
|
|
|
final function addChildOpen($id) {
|
|
|
|
$data = $this->getChildDataByID($id);
|
|
|
|
$this->child_open->addNode($data);
|
2012-07-01 18:04:01 +00:00
|
|
|
}
|
|
|
|
|
2012-07-08 16:11:25 +00:00
|
|
|
final function removeChildDone($id) {
|
|
|
|
$this->child_done->removeNode($id);
|
2012-07-01 18:04:01 +00:00
|
|
|
}
|
|
|
|
|
2012-07-08 16:11:25 +00:00
|
|
|
final function removeChildOpen($id) {
|
|
|
|
$this->child_open->removeNode($id);
|
2012-07-01 18:04:01 +00:00
|
|
|
}
|
|
|
|
|
2012-07-02 16:55:13 +00:00
|
|
|
#@OVERRIDE Parentum::removeChild()
|
2012-07-01 18:04:01 +00:00
|
|
|
function removeChild($id) {
|
2012-07-08 16:11:25 +00:00
|
|
|
parent::removeChild($id);
|
|
|
|
|
|
|
|
$this->child_open->removeNode($id);
|
|
|
|
$this->child_done->removeNode($id);
|
2012-06-25 13:03:14 +00:00
|
|
|
}
|
2012-05-25 09:48:56 +00:00
|
|
|
}
|
|
|
|
?>
|