diff options
Diffstat (limited to 'framework/Web/UI/WebControls/TWebControl.php')
| -rw-r--r-- | framework/Web/UI/WebControls/TWebControl.php | 368 | 
1 files changed, 368 insertions, 0 deletions
diff --git a/framework/Web/UI/WebControls/TWebControl.php b/framework/Web/UI/WebControls/TWebControl.php new file mode 100644 index 00000000..8a9765f7 --- /dev/null +++ b/framework/Web/UI/WebControls/TWebControl.php @@ -0,0 +1,368 @@ +<?php
 +/**
 + * TWebControl class file.
 + *
 + * @author Qiang Xue <qiang.xue@gmail.com>
 + * @link http://www.xisc.com/
 + * @copyright Copyright © 2004-2005, Qiang Xue
 + * @license http://www.opensource.org/licenses/bsd-license.php BSD License
 + * @version $Revision: $  $Date: $
 + * @package System.Web.UI.WebControls
 + */
 +
 +/**
 + * TWebControl class
 + *
 + * TWebControl is the base class for controls that share a common set
 + * of UI-related properties and methods. TWebControl derived controls 
 + * are usually corresponding to HTML tags. They thus have tag name, attributes
 + * and body contents. You can override {@link getTagName} to specify the tag name,
 + * {@link addAttributesToRender} to specify the attributes to be rendered,
 + * and {@link renderContents} to customize the body content rendering.
 + * TWebControl encapsulates a set of properties related with CSS style fields,
 + * such as <b>BackColor</b>, <b>BorderWidth</b>, etc.
 + *
 + * @author Qiang Xue <qiang.xue@gmail.com>
 + * @version $Revision: $  $Date: $
 + * @package System.Web.UI.WebControls
 + * @since 3.0
 + */
 +class TWebControl extends TControl
 +{
 +	/**
 +	 * @return string the access key of the control
 +	 */
 +	public function getAccessKey()
 +	{
 +		return $this->getViewState('AccessKey','');
 +	}
 +
 +	/**
 +	 * Sets the access key of the control.
 +	 * Only one-character string can be set, or an exception will be raised.
 +	 * Pass empty string if you want to disable access key.
 +	 * @param string the access key to be set
 +	 * @throws TInvalidDataValueException if the access key is specified with more than one character
 +	 */
 +	public function setAccessKey($value)
 +	{
 +		if(strlen($value)>1)
 +			throw new TInvalidDataValueException('invalid_accesskey',get_class($this));
 +		$this->setViewState('AccessKey',$value,'');
 +	}
 +
 +	/**
 +	 * @return string the background color of the control
 +	 */
 +	public function getBackColor()
 +	{
 +		if($style=$this->getViewState('Style',null))
 +			return $style->getBackColor();
 +		else
 +			return '';
 +	}
 +
 +	/**
 +	 * @param string the background color of the control
 +	 */
 +	public function setBackColor($value)
 +	{
 +		$this->getStyle()->setBackColor($value);
 +	}
 +
 +	/**
 +	 * @return string the border color of the control
 +	 */
 +	public function getBorderColor()
 +	{
 +		if($style=$this->getViewState('Style',null))
 +			return $style->getBorderColor();
 +		else
 +			return '';
 +	}
 +
 +	/**
 +	 * @param string the border color of the control
 +	 */
 +	public function setBorderColor($value)
 +	{
 +		$this->getStyle()->setBorderColor($value);
 +	}
 +
 +	/**
 +	 * @return string the border style of the control
 +	 */
 +	public function getBorderStyle()
 +	{
 +		if($style=$this->getViewState('Style',null))
 +			return $style->getBorderStyle();
 +		else
 +			return '';
 +	}
 +
 +	/**
 +	 * @param string the border style of the control
 +	 */
 +	public function setBorderStyle($value)
 +	{
 +		$this->getStyle()->setBorderStyle($value);
 +	}
 +
 +	/**
 +	 * @return string the border width of the control
 +	 */
 +	public function getBorderWidth()
 +	{
 +		if($style=$this->getViewState('Style',null))
 +			return $style->getBorderWidth();
 +		else
 +			return '';
 +	}
 +
 +	/**
 +	 * @param string the border width of the control
 +	 */
 +	public function setBorderWidth($value)
 +	{
 +		$this->getStyle()->setBorderWidth($value);
 +	}
 +
 +	/**
 +	 * @return TFont the font of the control
 +	 */
 +	public function getFont()
 +	{
 +		return $this->getStyle()->getFont();
 +	}
 +
 +	/**
 +	 * @return string the foreground color of the control
 +	 */
 +	public function getForeColor()
 +	{
 +		if($style=$this->getViewState('Style',null))
 +			return $style->getForeColor();
 +		else
 +			return '';
 +	}
 +
 +	/**
 +	 * @param string the foreground color of the control
 +	 */
 +	public function setForeColor($value)
 +	{
 +		$this->getStyle()->setForeColor($value);
 +	}
 +
 +	/**
 +	 * @return string the height of the control
 +	 */
 +	public function getHeight()
 +	{
 +		if($style=$this->getViewState('Style',null))
 +			return $style->getHeight();
 +		else
 +			return '';
 +	}
 +
 +	/**
 +	 * @param string the css class of the control
 +	 */
 +	public function setCssClass($value)
 +	{
 +		$this->getStyle()->setCssClass($value);
 +	}
 +
 +	/**
 +	 * @return string the css class of the control
 +	 */
 +	public function getCssClass()
 +	{
 +		if($style=$this->getViewState('Style',null))
 +			return $style->getCssClass();
 +		else
 +			return '';
 +	}
 +
 +	/**
 +	 * @param string the height of the control
 +	 */
 +	public function setHeight($value)
 +	{
 +		$this->getStyle()->setHeight($value);
 +	}
 +
 +	public function getStyleCreated()
 +	{
 +		return $this->getViewState('Style',null)!==null;
 +	}
 +
 +	/**
 +	 * @return TStyle the object representing the css style of the control
 +	 */
 +	public function getStyle()
 +	{
 +		if($style=$this->getViewState('Style',null))
 +			return $style;
 +		else
 +		{
 +			$style=new TStyle;
 +			$this->setViewState('Style',$style,null);
 +			return $style;
 +		}
 +	}
 +
 +	/**
 +	 * Sets the css style string of the control.
 +	 * The style string will be prefixed to the styles set via other control properties (e.g. Height, Width).
 +	 * @param string the css style string
 +	 * @throws TInvalidDataValueException if the parameter is not a string
 +	 */
 +	public function setStyle($value)
 +	{
 +		if(is_string($value))
 +			$this->getStyle()->setStyle($value);
 +		else
 +			throw new TInvalidDataValueException('invalid_style_value',get_class($this));
 +	}
 +
 +	/**
 +	 * @return integer the tab index of the control
 +	 */
 +	public function getTabIndex()
 +	{
 +		return $this->getViewState('TabIndex',0);
 +	}
 +
 +	/**
 +	 * Sets the tab index of the control.
 +	 * Pass 0 if you want to disable tab index.
 +	 * @param integer the tab index to be set
 +	 */
 +	public function setTabIndex($value)
 +	{
 +		$this->setViewState('TabIndex',TPropertyValue::ensureInteger($value),0);
 +	}
 +
 +	/**
 +	 * Returns the tag name used for this control.
 +	 * By default, the tag name is 'span'.
 +	 * You can override this method to provide customized tag names.
 +	 * @return string tag name of the control to be rendered
 +	 */
 +	protected function getTagName()
 +	{
 +		return 'span';
 +	}
 +
 +	/**
 +	 * @return string the tooltip of the control
 +	 */
 +	public function getToolTip()
 +	{
 +		return $this->getViewState('ToolTip','');
 +	}
 +
 +	/**
 +	 * Sets the tooltip of the control.
 +	 * Pass empty string if you want to disable tooltip.
 +	 * @param string the tooltip to be set
 +	 */
 +	public function setToolTip($value)
 +	{
 +		$this->setViewState('ToolTip',$value,'');
 +	}
 +
 +	/**
 +	 * @return string the width of the control
 +	 */
 +	public function getWidth()
 +	{
 +		if($style=$this->getViewState('Style',null))
 +			return $style->getWidth();
 +		else
 +			return '';
 +	}
 +
 +	/**
 +	 * @param string the width of the control
 +	 */
 +	public function setWidth($value)
 +	{
 +		$this->getStyle()->setWidth($value);
 +	}
 +
 +	/**
 +	 * Adds attribute name-value pairs to renderer.
 +	 * This method can be overriden to provide customized attributes to be rendered.
 +	 * @param THtmlTextWriter the writer used for the rendering purpose
 +	 */
 +	protected function addAttributesToRender($writer)
 +	{
 +		if($this->getID()!=='')
 +			$writer->addAttribute('id',$this->getClientID());
 +		if(($accessKey=$this->getAccessKey())!=='')
 +			$writer->addAttribute('accesskey',$accessKey);
 +		if(!$this->getEnabled())
 +			$writer->addAttribute('disabled','disabled');
 +		if(($tabIndex=$this->getTabIndex())>0)
 +			$writer->addAttribute('tabindex',$tabIndex);
 +		if(($toolTip=$this->getToolTip())!=='')
 +			$writer->addAttribute('title',$toolTip);
 +		if($style=$this->getViewState('Style',null))
 +			$style->addAttributesToRender($writer);
 +		if($attributes=$this->getViewState('Attributes',null))
 +		{
 +			foreach($attributes as $name=>$value)
 +				$writer->addAttribute($name,$value);
 +		}
 +	}
 +
 +	/**
 +	 * Renders the control.
 +	 * This method overrides the parent implementation by replacing it with
 +	 * the following sequence:
 +	 * - {@link renderBeginTag}
 +	 * - {@link renderContents}
 +	 * - {@link renderEndTag}
 +	 * @param THtmlTextWriter the writer used for the rendering purpose
 +	 */
 +	protected function render($writer)
 +	{
 +		$this->renderBeginTag($writer);
 +		$this->renderContents($writer);
 +		$this->renderEndTag($writer);
 +	}
 +
 +	/**
 +	 * Renders the openning tag for the control (including attributes)
 +	 * @param THtmlTextWriter the writer used for the rendering purpose
 +	 */
 +	protected function renderBeginTag($writer)
 +	{
 +		$this->addAttributesToRender($writer);
 +		$writer->renderBeginTag($this->getTagName());
 +	}
 +
 +	/**
 +	 * Renders the body content enclosed between the control tag.
 +	 * By default, child controls and text strings will be rendered.
 +	 * You can override this method to provide customized content rendering.
 +	 * @param THtmlTextWriter the writer used for the rendering purpose
 +	 */
 +	protected function renderContents($writer)
 +	{
 +		parent::renderChildren($writer);
 +	}
 +
 +	/**
 +	 * Renders the closing tag for the control
 +	 * @param THtmlTextWriter the writer used for the rendering purpose
 +	 */
 +	protected function renderEndTag($writer)
 +	{
 +		$writer->renderEndTag();
 +	}
 +}
 +
 +?>
\ No newline at end of file  | 
