<?php

/**
 * Block
 *
 * @author Arkadiusz Rychlik <a.rychlik at eppe.com.pl>
 */
abstract class Rtn_SimpleTable_Abstract_Block {

	/**
	 * @var Rtn_SimpleTable
	 */
	public $simpleTable;
	
	protected $renderer;

	public function __construct(Rtn_SimpleTable &$simpleTable) {
		$this->simpleTable = $simpleTable;
	}

	/**
	 * Skrót do funkcji renderer::render()
	 * @return type
	 */
	public function render() {
		return $this->getRenderer()->render();
	}
	
	public function __get($name) {
		if($name == 'renderer'){
			return $this->getRenderer();
		}
	}
	
	public function setRenderer($renderer) {
		$this->renderer = $renderer;
	}
	
	public function getRenderer() {
		if(!$this->renderer){
			$this->_defaultRenderer();
		}
		
		return $this->renderer;
	}

	protected function _defaultRenderer() {
		$defaultRendererClass = $this->_defaultRendererClass();
		$this->renderer = new $defaultRendererClass($this);
	}

	protected function _defaultRendererClass() {
		$class = get_called_class();
		return $class . '_Renderer';
	}

}
