Source for file Control.class.php

Documentation is available at Control.class.php

  1. /**
  2.  * Содержит класс Control
  3.  *
  4.  * @package energine
  5.  * @author dr.Pavka
  6.  * @copyright ColoCall 2006
  7.  * @version $Id: fsource_energine__modulessharecomponentsControl.class.php.html,v 1.1 2007/09/17 14:32:31 pavka Exp $
  8.  */
  9.  
  10. require_once 'core/framework/Object.class.php';
  11.  
  12. /**
  13.  * Элемент управления панели инструментов
  14.  *
  15.  * @package energine
  16.  * @abstract
  17.  */
  18. abstract class Control extends Object {
  19.     /**
  20.      * Имя тега элемента
  21.      */
  22.     const TAG_NAME = 'control';
  23.  
  24.     /**
  25.      * Документ
  26.      *
  27.      * @var DOMDocument 
  28.      * @access protected
  29.      */
  30.     protected $doc;
  31.  
  32.     /**
  33.      * Тип элемента
  34.      *
  35.      * @access protected
  36.      * @var string 
  37.      */
  38.     protected $type = false;
  39.  
  40.     /**
  41.      * Доступность элемента
  42.      *
  43.      * @access private
  44.      * @var boolean 
  45.      */
  46.     private $disabled = false;
  47.  
  48.     /**
  49.      * Дополнительные атрибуты
  50.      *
  51.      * @var array 
  52.      * @access private
  53.      */
  54.     private $attributes = array();
  55.  
  56.     /**
  57.      * Панель управления к которому привязан элемент управления
  58.      *
  59.      * @var ToolBar 
  60.      * @access private
  61.      */
  62.     private $toolbar;
  63.  
  64.     /**
  65.      * Индекс элемента.
  66.      * Присваивается панелью инструментов после присоединения элемента.
  67.      *
  68.      * @var int 
  69.      * @access private
  70.      */
  71.     private $index = false;
  72.  
  73.     /**
  74.      * Конструктор
  75.      *
  76.      * @param string $id 
  77.      * @param string $action 
  78.      * @param string $image 
  79.      * @param string $title 
  80.      * @param string $tooltip 
  81.      * @access public
  82.      */
  83.     public function __construct({
  84.         parent::__construct();
  85.         $this->doc = new DOMDocument('1.0''UTF-8');
  86.     }
  87.  
  88.     /**
  89.      * Привязываем элемент управления к панели управления
  90.      *
  91.      * @param Toolbar 
  92.      * @return void 
  93.      * @access public
  94.      */
  95.  
  96.     public function attach($toolbar{
  97.         $this->toolbar = $toolbar;
  98.     }
  99.  
  100.     /**
  101.      * Возвращает панель управления
  102.      *
  103.      * @return Toolbar 
  104.      * @access protected
  105.      */
  106.  
  107.     protected function getToolbar({
  108.         return $this->toolbar;
  109.     }
  110.  
  111.     /**
  112.      * Устанавливает индекс элемента.
  113.      * Вызывается из панели инструментов (Toolbar).
  114.      *
  115.      * @param int 
  116.      * @return void 
  117.      * @access public
  118.      */
  119.     public function setIndex($index{
  120.         $this->index = $index;
  121.     }
  122.  
  123.     /**
  124.      * Возвращает индекс элемента.
  125.      * Вызывается из панели инструментов (Toolbar).
  126.      *
  127.      * @return int 
  128.      * @access public
  129.      */
  130.     public function getIndex({
  131.         if ($this->index === false{
  132.             throw new SystemException('ERR_DEV_NO_CONTROL_INDEX'SystemException::ERR_DEVELOPER);
  133.         }
  134.         return $this->index;
  135.     }
  136.  
  137.     /**
  138.      * Загрузка элемента из XML-описания.
  139.      *
  140.      * @param SimpleXMLElement $description 
  141.      * @return boolean 
  142.      * @access public
  143.      */
  144.     public function loadFromXml(SimpleXMLElement $description{
  145.         if (!isset($description['type'])) {
  146.             throw new SystemException('ERR_DEV_NO_CONTROL_TYPE'SystemException::ERR_DEVELOPER);
  147.         }
  148.  
  149.         $attr $description->attributes();
  150.  
  151.         $this->setAttribute('mode'FieldDescription::computeRights($this->getToolbar()->getComponent()->getMethodRights()!is_null($attr['ro_rights'])?(int)$attr['ro_rights']:null!is_null($attr['fc_rights'])?(int)$attr['fc_rights']:null));
  152.  
  153.         if (isset($attr['ro_rights'])) {
  154.             unset($attr['ro_rights']);
  155.         }
  156.         if (isset($attr['fc_rights'])) {
  157.             unset($attr['fc_rights']);
  158.         }
  159.  
  160.         foreach ($attr as $key => $value{
  161.             if (isset($this->$key)) {
  162.                 $this->$key = (string)$value;
  163.             }
  164.             else {
  165.                 $this->setAttribute($key(string)$value);
  166.             }
  167.         }
  168.     }
  169.  
  170.     /**
  171.      * Отключает элемент (делает его недоступным).
  172.      *
  173.      * @return void 
  174.      * @access public
  175.      */
  176.     public function disable({
  177.         $this->disabled = true;
  178.     }
  179.  
  180.     /**
  181.      * Включает элемент.
  182.      *
  183.      * @return void 
  184.      * @access public
  185.      */
  186.     public function enable({
  187.         $this->disabled = false;
  188.     }
  189.  
  190.     /**
  191.      * Возвращает тип элемента.
  192.      *
  193.      * @return string 
  194.      * @access public
  195.      */
  196.     public function getType({
  197.         if (!$this->type{
  198.             throw new SystemException('ERR_DEV_NO_CONTROL_TYPE'SystemException::ERR_DEVELOPER);
  199.         }
  200.         return $this->type;
  201.     }
  202.  
  203.     /**
  204.      * Устанавливает значение атрибута.
  205.      *
  206.      * @param string 
  207.      * @param mixed 
  208.      * @return void 
  209.      * @access public
  210.      */
  211.  
  212.     public function setAttribute($attrName$attrValue{
  213.         $this->attributes[$attrName$attrValue;
  214.     }
  215.  
  216.     /**
  217.      * Возвращает значение атрибута.
  218.      *
  219.      * @param string 
  220.      * @return mixed 
  221.      * @access public
  222.      */
  223.     public function getAttribute($attrName{
  224.         if (isset($this->attributes[$attrName])) {
  225.             return $this->attributes[$attrName];
  226.         }
  227.         return false;
  228.     }
  229.  
  230.     /**
  231.      * Построение элемента управления.
  232.      *
  233.      * @return DOMNode 
  234.      * @access public
  235.      */
  236.     public function build({
  237.         $controlElem $this->doc->createElement(self::TAG_NAME);
  238.         foreach ($this->attributes as $attrName => $attrValue{
  239.             $controlElem->setAttribute($attrName$attrValue);
  240.         }
  241.         if ($this->disabled{
  242.             $controlElem->setAttribute('disabled''disabled');
  243.         }
  244.         $controlElem->setAttribute('type'$this->getType());
  245.         $this->doc->appendChild($controlElem);
  246.  
  247.         return $this->doc->documentElement;
  248.     }
  249.  
  250.     /**
  251.      * Переводит языко-зависимые атрибуты.
  252.      *
  253.      * @param array перечень атрибутов дялш перевода
  254.      * @return type 
  255.      * @access public
  256.      */
  257.     public function translate($attrs array('title''tooltip')) {
  258.         foreach ($attrs as $attrName{
  259.             $attrValue = (string)$this->getAttribute($attrName);
  260.             if ($attrValue{
  261.                 $this->setAttribute($attrNameDBWorker::_translate($attrValue));
  262.             }
  263.         }
  264.     }
  265. }

Documentation generated on Mon, 17 Sep 2007 13:26:17 +0300 by phpDocumentor 1.4.0a2