setAdapter(new TActiveControlAdapter($this)); } public function getActiveControl() { return $this->getAdapter()->getBaseActiveControl(); } public function onLoad($param) { $this->prepareControlContent(); parent::onLoad($param); } public function bubbleEvent($sender,$param) { if ($param instanceof TCommandEventParameter) { $this->raiseBubbleEvent($this, $param); return true; } else { return false; } } private function createItemInternal($item_type) { $item = $this->createItem($item_type); if (!is_null($item)) { $this->getControls()->add($item); } return $item; } protected function createItem($item_type) { $template = null; $item = null; switch ($item_type) { case self::TYPE_TPL_TRUE: { $template = $this->getTrueTemplate(); break; } case self::TYPE_TPL_FALSE: { $template = $this->getFalseTemplate(); break; } } if (!is_null($template)) { $item = new BConditionalItem; $item->setItemType($item_type); $item->setTemplate($template); $item->setTemplateControl($this); $item->setData($this->getTemplateControl()); } return $item; } public function getTrueTemplate() { return $this->item_true_template; } public function setTrueTemplate($template) { if ($template instanceof ITemplate) { $this->item_true_template = $template; } } public function getFalseTemplate() { return $this->item_false_template; } public function setFalseTemplate($template) { if ($template instanceof ITemplate) { $this->item_false_template = $template; } } public function setBCondition($value) { settype($value, 'bool'); $this->setViewState(self::BCONDITION, $value); } public function getBCondition() { $value = $this->getViewState(self::BCONDITION); return $value; } public function dataBind() { $this->dataBindProperties(); $this->prepareControlContent(); } public function prepareControlContent() { if ($this->getBCondition() === true) { $this->createItemInternal(self::TYPE_TPL_TRUE); } else { $this->createItemInternal(self::TYPE_TPL_FALSE); } } } class BConditionalItem extends TTemplateControl implements IDataRenderer, INamingContainer { private $item_type; private $data; public function getItemType() { return $this->item_type; } public function setItemType($type) { $this->item_type = $type; } public function getData() { return $this->data; } public function setData($data) { $this->data = $data; } public function bubbleEvent($sender,$param) { if ($param instanceof TCommandEventParameter) { $this->raiseBubbleEvent($this, $param); return true; } else { return false; } } } ?>