Source for file AWidget.php

Documentation is available at AWidget.php

  1. <?
  2. /**
  3.  * AWidget.php
  4.  * The file for the AWidget class
  5.  */
  6. require_once 'AObject.php';
  7. require_once 'AWidgetCollection.php';
  8. require_once 'ARenderableInterface.php';
  9. require_once 'ALayout.php';
  10.  
  11.  
  12. /**
  13.  * AWidget - The base class for all wi
  14.  * 
  15.  * All widgets extend this class. Awidget extends AObject, so all widgets inhererit connection/slot functionality from AObject.
  16.  * All custom widgets should extend this class, or any other class extending AWidget.
  17.  * @author Jordan Wambaugh <jordan@wambaugh.org>
  18.  * @package Alia
  19.  * @subpackage Widgets
  20.  */
  21. abstract class AWidget extends AObject implements ARenderableInterface
  22. {
  23.  
  24.      /*** Attributes: ***/
  25.     /**
  26.      * The widget's layout
  27.      *
  28.      * @var ALayout 
  29.      */
  30.     private $__layout;
  31.  
  32.     /**
  33.      * The HTML attributes of the widget
  34.      *
  35.      * @var array 
  36.      */
  37.     private $__attributes=array();
  38.     
  39.     
  40.     
  41.     /*** Methods ***/
  42.     public function __construct(){
  43.         $this->addAttribute('id');
  44.         parent::__construct();
  45.     }
  46.  
  47.  
  48.  
  49.     
  50.     /**
  51.      * Enter description here...
  52.      *
  53.      * @param unknown_type $layout 
  54.      * @return AWidget 
  55.      */
  56.     public function setLayout$layout {
  57.         if(isset($this->__layout)){
  58.             unset($this->__layout);
  59.         }
  60.         $this->__layout=$layout;
  61.         return $this;
  62.     // end of member function setLayout
  63.  
  64.  
  65.  
  66.     public function render){
  67.         if($this->__layout){
  68.             return $this->__layout->render();
  69.         }else{
  70.             throw new Exception("Cannot render without a layout!");
  71.         }
  72.     }
  73.  
  74.     /**
  75.      * Enter description here...
  76.      *
  77.      * @param string $name 
  78.      * @return AWidget 
  79.      */
  80.     public function addAttribute($name){
  81.         $this->__attributes[$name]='';
  82.         return $this;
  83.     }
  84.     
  85.     /**
  86.      * Enter description here...
  87.      *
  88.      * @param string $name 
  89.      * @return string 
  90.      */
  91.     public function getAttribute($name){
  92.     if(!is_string($this->__attributes[$name])){
  93.             throw new exception("This widget does not have an attribute of name '$name'");
  94.         }
  95.         return $this->__attributes[$name];
  96.     }
  97.     
  98.     
  99.     /**
  100.      * Enter description here...
  101.      *
  102.      * @param string $name 
  103.      * @param string $value 
  104.      * @return AWidget 
  105.      */
  106.     public function setAttribute($name$value){
  107.         if(!is_string($this->__attributes[$name])){
  108.             throw new exception("This widget does not have an attribute of name '$name'");
  109.         }
  110.         $this->__attributes[$name]=(string)$value;
  111.         return $this;
  112.     }
  113.     
  114.     
  115.     
  116.     public function getAttributes(){
  117.         return $this->__attributes;
  118.     }
  119.     
  120.     
  121.     public function getLayout(){
  122.         return $this->__layout;
  123.         
  124.     }
  125.     
  126.     
  127.     public function setObjectID($id){
  128.         parent::setObjectID($id);
  129.         $this->setAttribute('id',$id);
  130.     }
  131.  
  132.     public function redraw(){
  133.         $script =AJScript::updateDiv($this->getAttribute('id'),$this->render());
  134.         AJScriptBuffer::instance()->addJScript("Validator.clear();\n".$script,true);
  135.     }
  136.  
  137.  
  138.     
  139.     
  140.  
  141. // end of AWidget
  142. ?>

Documentation generated on Fri, 11 Jul 2008 13:28:44 -0400 by phpDocumentor 1.4.2