diff options
author | emkael <emkael@tlen.pl> | 2016-02-24 23:18:07 +0100 |
---|---|---|
committer | emkael <emkael@tlen.pl> | 2016-02-24 23:18:07 +0100 |
commit | 6f7fdef0f500cd4bb540affd3bc1482243f337c1 (patch) | |
tree | 4853eecd0769a903e6130c1896e1d070848150dd /lib/prado/framework/Web/UI/WebControls/TPanel.php | |
parent | 61f2ea48a4e11cb5fb941b3783e19c9e9ef38a45 (diff) |
* Prado 3.3.0
Diffstat (limited to 'lib/prado/framework/Web/UI/WebControls/TPanel.php')
-rw-r--r-- | lib/prado/framework/Web/UI/WebControls/TPanel.php | 239 |
1 files changed, 239 insertions, 0 deletions
diff --git a/lib/prado/framework/Web/UI/WebControls/TPanel.php b/lib/prado/framework/Web/UI/WebControls/TPanel.php new file mode 100644 index 0000000..22d44a5 --- /dev/null +++ b/lib/prado/framework/Web/UI/WebControls/TPanel.php @@ -0,0 +1,239 @@ +<?php +/** + * TPanel class file + * + * @author Qiang Xue <qiang.xue@gmail.com> + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2015 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT + * @package System.Web.UI.WebControls + */ + +/** + * Includes TPanelStyle class file + */ +Prado::using('System.Web.UI.WebControls.TPanelStyle'); + +/** + * TPanel class + * + * TPanel represents a component that acts as a container for other component. + * It is especially useful when you want to generate components programmatically + * or hide/show a group of components. + * + * By default, TPanel displays a <div> element on a page. + * Children of TPanel are displayed as the body content of the element. + * The property {@link setWrap Wrap} can be used to set whether the body content + * should wrap or not. {@link setHorizontalAlign HorizontalAlign} governs how + * the content is aligned horizontally, and {@link getDirection Direction} indicates + * the content direction (left to right or right to left). You can set + * {@link setBackImageUrl BackImageUrl} to give a background image to the panel, + * and you can ste {@link setGroupingText GroupingText} so that the panel is + * displayed as a field set with a legend text. Finally, you can specify + * a default button to be fired when users press 'return' key within the panel + * by setting the {@link setDefaultButton DefaultButton} property. + * + * @author Qiang Xue <qiang.xue@gmail.com> + * @package System.Web.UI.WebControls + * @since 3.0 + */ +class TPanel extends TWebControl +{ + /** + * @var string ID path to the default button + */ + private $_defaultButton=''; + + /** + * @return string tag name of the panel + */ + protected function getTagName() + { + return 'div'; + } + + /** + * Creates a style object to be used by the control. + * This method overrides the parent impementation by creating a TPanelStyle object. + * @return TPanelStyle the style used by TPanel. + */ + protected function createStyle() + { + return new TPanelStyle; + } + + /** + * Adds attributes to renderer. + * @param THtmlWriter the renderer + * @throws TInvalidDataValueException if default button is not right. + */ + protected function addAttributesToRender($writer) + { + parent::addAttributesToRender($writer); + if(($butt=$this->getDefaultButton())!=='') + $writer->addAttribute('id',$this->getClientID()); + } + + /** + * @return boolean whether the content wraps within the panel. Defaults to true. + */ + public function getWrap() + { + return $this->getStyle()->getWrap(); + } + + /** + * 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->getStyle()->setWrap($value); + } + + /** + * @return string the horizontal alignment of the contents within the panel, defaults to 'NotSet'. + */ + public function getHorizontalAlign() + { + return $this->getStyle()->getHorizontalAlign(); + } + + /** + * Sets the horizontal alignment of the contents within the panel. + * Valid values include 'NotSet', 'Justify', 'Left', 'Right', 'Center' + * @param string the horizontal alignment + */ + public function setHorizontalAlign($value) + { + $this->getStyle()->setHorizontalAlign($value); + } + + /** + * @return string the URL of the background image for the panel component. + */ + public function getBackImageUrl() + { + return $this->getStyle()->getBackImageUrl(); + } + + /** + * Sets the URL of the background image for the panel component. + * @param string the URL + */ + public function setBackImageUrl($value) + { + $this->getStyle()->setBackImageUrl($value); + } + + /** + * @return string alignment of the content in the panel. Defaults to 'NotSet'. + */ + public function getDirection() + { + return $this->getStyle()->getDirection(); + } + + /** + * @param string alignment of the content in the panel. + * Valid values include 'NotSet', 'LeftToRight', 'RightToLeft'. + */ + public function setDirection($value) + { + $this->getStyle()->setDirection($value); + } + + /** + * @return string the ID path to the default button. Defaults to empty. + */ + public function getDefaultButton() + { + return $this->_defaultButton; + } + + /** + * Specifies the default button for the panel. + * The default button will be fired (clicked) whenever a user enters 'return' + * key within the panel. + * The button must be locatable via the function call {@link TControl::findControl findControl}. + * @param string the ID path to the default button. + */ + public function setDefaultButton($value) + { + $this->_defaultButton=$value; + } + + /** + * @return string the legend text when the panel is used as a fieldset. Defaults to empty. + */ + public function getGroupingText() + { + return $this->getViewState('GroupingText',''); + } + + /** + * @param string the legend text. If this value is not empty, the panel will be rendered as a fieldset. + */ + public function setGroupingText($value) + { + $this->setViewState('GroupingText',$value,''); + } + + /** + * @return string the visibility and position of scroll bars in a panel control, defaults to None. + */ + public function getScrollBars() + { + return $this->getStyle()->getScrollBars(); + } + + /** + * @param string the visibility and position of scroll bars in a panel control. + * Valid values include None, Auto, Both, Horizontal and Vertical. + */ + public function setScrollBars($value) + { + $this->getStyle()->setScrollBars($value); + } + + /** + * Renders the openning tag for the control (including attributes) + * @param THtmlWriter the writer used for the rendering purpose + */ + public function renderBeginTag($writer) + { + parent::renderBeginTag($writer); + if(($text=$this->getGroupingText())!=='') + { + $writer->renderBeginTag('fieldset'); + $writer->renderBeginTag('legend'); + $writer->write($text); + $writer->renderEndTag(); + } + } + + /** + * Renders the closing tag for the control + * @param THtmlWriter the writer used for the rendering purpose + */ + public function renderEndTag($writer) + { + if($this->getGroupingText()!=='') + $writer->renderEndTag(); + parent::renderEndTag($writer); + } + + public function render($writer) + { + parent::render($writer); + + if(($butt=$this->getDefaultButton())!=='') + { + if(($button=$this->findControl($butt))===null) + throw new TInvalidDataValueException('panel_defaultbutton_invalid',$butt); + else + $this->getPage()->getClientScript()->registerDefaultButton($this, $button); + } + } +} + |