<?php /** * TPanelStyle class file * * @author Qiang Xue <qiang.xue@gmail.com> * @link http://www.pradosoft.com/ * @copyright Copyright © 2005-2014 PradoSoft * @license http://www.pradosoft.com/license/ * @package System.Web.UI.WebControls */ /** * Includes TStyle class file */ Prado::using('System.Web.UI.WebControls.TStyle'); /** * TPanelStyle class. * TPanelStyle represents the CSS style specific for panel HTML tag. * * @author Qiang Xue <qiang.xue@gmail.com> * @package System.Web.UI.WebControls * @since 3.0 */ class TPanelStyle extends TStyle { /** * @var string the URL of the background image for the panel component */ private $_backImageUrl=null; /** * @var string alignment of the content in the panel. */ private $_direction=null; /** * @var string horizontal alignment of the contents within the panel */ private $_horizontalAlign=null; /** * @var string visibility and position of scroll bars */ private $_scrollBars=null; /** * @var boolean whether the content wraps within the panel */ private $_wrap=null; /** * Adds attributes related to CSS styles to renderer. * This method overrides the parent implementation. * @param THtmlWriter the writer used for the rendering purpose */ public function addAttributesToRender($writer) { if(($url=trim($this->getBackImageUrl()))!=='') $this->setStyleField('background-image','url('.$url.')'); switch($this->getScrollBars()) { case TScrollBars::Horizontal: $this->setStyleField('overflow-x','scroll'); break; case TScrollBars::Vertical: $this->setStyleField('overflow-y','scroll'); break; case TScrollBars::Both: $this->setStyleField('overflow','scroll'); break; case TScrollBars::Auto: $this->setStyleField('overflow','auto'); break; } if(($align=$this->getHorizontalAlign())!==THorizontalAlign::NotSet) $this->setStyleField('text-align',strtolower($align)); if(!$this->getWrap()) $this->setStyleField('white-space','nowrap'); if(($direction=$this->getDirection())!==TContentDirection::NotSet) { if($direction===TContentDirection::LeftToRight) $this->setStyleField('direction','ltr'); else $this->setStyleField('direction','rtl'); } parent::addAttributesToRender($writer); } /** * @return string the URL of the background image for the panel component. */ public function getBackImageUrl() { return $this->_backImageUrl===null?'':$this->_backImageUrl; } /** * Sets the URL of the background image for the panel component. * @param string the URL */ public function setBackImageUrl($value) { $this->_backImageUrl=$value; } /** * @return TContentDirection alignment of the content in the panel. Defaults to TContentDirection::NotSet. */ public function getDirection() { return $this->_direction===null?TContentDirection::NotSet:$this->_direction; } /** * @param TContentDirection alignment of the content in the panel. */ public function setDirection($value) { $this->_direction=TPropertyValue::ensureEnum($value,'TContentDirection'); } /** * @return boolean whether the content wraps within the panel. Defaults to true. */ public function getWrap() { return $this->_wrap===null?true:$this->_wrap; } /** * Sets the value indicating whether the content wraps within the panel. * @param boolean whether the content wraps within the panel. */ public function setWrap($value) { $this->_wrap=TPropertyValue::ensureBoolean($value); } /** * @return THorizontalAlign the horizontal alignment of the contents within the panel, defaults to THorizontalAlign::NotSet. */ public function getHorizontalAlign() { return $this->_horizontalAlign===null?THorizontalAlign::NotSet:$this->_horizontalAlign; } /** * Sets the horizontal alignment of the contents within the panel. * @param THorizontalAlign the horizontal alignment */ public function setHorizontalAlign($value) { $this->_horizontalAlign=TPropertyValue::ensureEnum($value,'THorizontalAlign'); } /** * @return TScrollBars the visibility and position of scroll bars in a panel control, defaults to TScrollBars::None. */ public function getScrollBars() { return $this->_scrollBars===null?TScrollBars::None:$this->_scrollBars; } /** * @param TScrollBars the visibility and position of scroll bars in a panel control. */ public function setScrollBars($value) { $this->_scrollBars=TPropertyValue::ensureEnum($value,'TScrollBars'); } /** * Sets the style attributes to default values. * This method overrides the parent implementation by * resetting additional TPanelStyle specific attributes. */ public function reset() { parent::reset(); $this->_backImageUrl=null; $this->_direction=null; $this->_horizontalAlign=null; $this->_scrollBars=null; $this->_wrap=null; } /** * Copies the fields in a new style to this style. * If a style field is set in the new style, the corresponding field * in this style will be overwritten. * @param TStyle the new style */ public function copyFrom($style) { parent::copyFrom($style); if($style instanceof TPanelStyle) { if($style->_backImageUrl!==null) $this->_backImageUrl=$style->_backImageUrl; if($style->_direction!==null) $this->_direction=$style->_direction; if($style->_horizontalAlign!==null) $this->_horizontalAlign=$style->_horizontalAlign; if($style->_scrollBars!==null) $this->_scrollBars=$style->_scrollBars; if($style->_wrap!==null) $this->_wrap=$style->_wrap; } } /** * Merges the style with a new one. * If a style field is not set in this style, it will be overwritten by * the new one. * @param TStyle the new style */ public function mergeWith($style) { parent::mergeWith($style); if($style instanceof TPanelStyle) { if($this->_backImageUrl===null && $style->_backImageUrl!==null) $this->_backImageUrl=$style->_backImageUrl; if($this->_direction===null && $style->_direction!==null) $this->_direction=$style->_direction; if($this->_horizontalAlign===null && $style->_horizontalAlign!==null) $this->_horizontalAlign=$style->_horizontalAlign; if($this->_scrollBars===null && $style->_scrollBars!==null) $this->_scrollBars=$style->_scrollBars; if($this->_wrap===null && $style->_wrap!==null) $this->_wrap=$style->_wrap; } } } /** * TContentDirection class. * TContentDirection defines the enumerable type for the possible directions that a panel can be at. * * The following enumerable values are defined: * - NotSet: the direction is not specified * - LeftToRight: content in a panel is left to right * - RightToLeft: content in a panel is right to left * * @author Qiang Xue <qiang.xue@gmail.com> * @package System.Web.UI.WebControls * @since 3.0.4 */ class TContentDirection extends TEnumerable { const NotSet='NotSet'; const LeftToRight='LeftToRight'; const RightToLeft='RightToLeft'; } /** * TScrollBars class. * TScrollBars defines the enumerable type for the possible scroll bar mode * that a {@link TPanel} control could use. * * The following enumerable values are defined: * - None: no scroll bars. * - Auto: scroll bars automatically appeared when needed. * - Both: show both horizontal and vertical scroll bars all the time. * - Horizontal: horizontal scroll bar only * - Vertical: vertical scroll bar only * * @author Qiang Xue <qiang.xue@gmail.com> * @package System.Web.UI.WebControls * @since 3.0.4 */ class TScrollBars extends TEnumerable { const None='None'; const Auto='Auto'; const Both='Both'; const Horizontal='Horizontal'; const Vertical='Vertical'; }