From 903ae8a581fac1e6917fc3e31d2ad8fb91df80c3 Mon Sep 17 00:00:00 2001 From: ctrlaltca <> Date: Thu, 12 Jul 2012 11:21:01 +0000 Subject: standardize the use of unix eol; use svn properties to enforce native eol --- framework/Web/UI/WebControls/TTable.php | 818 ++++++++++++++++---------------- 1 file changed, 409 insertions(+), 409 deletions(-) (limited to 'framework/Web/UI/WebControls/TTable.php') diff --git a/framework/Web/UI/WebControls/TTable.php b/framework/Web/UI/WebControls/TTable.php index a333bf09..b7a774ae 100644 --- a/framework/Web/UI/WebControls/TTable.php +++ b/framework/Web/UI/WebControls/TTable.php @@ -1,410 +1,410 @@ - - * @link http://www.pradosoft.com/ + + * @link http://www.pradosoft.com/ * @copyright Copyright © 2005-2012 PradoSoft - * @license http://www.pradosoft.com/license/ - * @version $Id$ - * @package System.Web.UI.WebControls - */ - -/** - * Includes TTableRow class - */ -Prado::using('System.Web.UI.WebControls.TTableRow'); - -/** - * TTable class - * - * TTable displays an HTML table on a Web page. - * - * A table may have {@link setCaption Caption}, whose alignment is specified - * via {@link setCaptionAlign CaptionAlign}. The table cellpadding and cellspacing - * are specified via {@link setCellPadding CellPadding} and {@link setCellSpacing CellSpacing} - * properties, respectively. The {@link setGridLines GridLines} specifies how - * the table should display its borders. The horizontal alignment of the table - * content can be specified via {@link setHorizontalAlign HorizontalAlign}, - * and {@link setBackImageUrl BackImageUrl} can assign a background image to the table. - * - * A TTable maintains a list of {@link TTableRow} controls in its - * {@link getRows Rows} property. Each {@link TTableRow} represents - * an HTML table row. - * - * To populate the table {@link getRows Rows}, you may either use control template - * or dynamically create {@link TTableRow} in code. - * In template, do as follows to create the table rows and cells, - * - * - * - * - * - * - * - * - * - * - * - * - * The above can also be accomplished in code as follows, - * - * $table=new TTable; - * $row=new TTableRow; - * $cell=new TTableCell; $cell->Text="content"; $row->Cells->add($cell); - * $cell=new TTableCell; $cell->Text="content"; $row->Cells->add($cell); - * $table->Rows->add($row); - * $row=new TTableRow; - * $cell=new TTableCell; $cell->Text="content"; $row->Cells->add($cell); - * $cell=new TTableCell; $cell->Text="content"; $row->Cells->add($cell); - * $table->Rows->add($row); - * - * - * @author Qiang Xue - * @version $Id$ - * @package System.Web.UI.WebControls - * @since 3.0 - */ -class TTable extends TWebControl -{ - /** - * @return string tag name for the table - */ - protected function getTagName() - { - return 'table'; - } - - /** - * Adds object parsed from template to the control. - * This method adds only {@link TTableRow} objects into the {@link getRows Rows} collection. - * All other objects are ignored. - * @param mixed object parsed from template - */ - public function addParsedObject($object) - { - if($object instanceof TTableRow) - $this->getRows()->add($object); - } - - /** - * Creates a style object for the control. - * This method creates a {@link TTableStyle} to be used by the table. - * @return TTableStyle control style to be used - */ - protected function createStyle() - { - return new TTableStyle; - } - - /** - * Adds attributes to renderer. - * @param THtmlWriter the renderer - */ - protected function addAttributesToRender($writer) - { - parent::addAttributesToRender($writer); - $border=0; - if($this->getHasStyle()) - { - if($this->getGridLines()!==TTableGridLines::None) - { - if(($border=$this->getBorderWidth())==='') - $border=1; - else - $border=(int)$border; - } - } - $writer->addAttribute('border',"$border"); - } - - /** - * Creates a control collection object that is to be used to hold child controls - * @return TTableRowCollection control collection - * @see getControls - */ - protected function createControlCollection() - { - return new TTableRowCollection($this); - } - - /** - * @return TTableRowCollection list of {@link TTableRow} controls - */ - public function getRows() - { - return $this->getControls(); - } - - /** - * @return string table caption - */ - public function getCaption() - { - return $this->getViewState('Caption',''); - } - - /** - * @param string table caption - */ - public function setCaption($value) - { - $this->setViewState('Caption',$value,''); - } - - /** - * @return TTableCaptionAlign table caption alignment. Defaults to TTableCaptionAlign::NotSet. - */ - public function getCaptionAlign() - { - return $this->getViewState('CaptionAlign',TTableCaptionAlign::NotSet); - } - - /** - * @param TTableCaptionAlign table caption alignment. - */ - public function setCaptionAlign($value) - { - $this->setViewState('CaptionAlign',TPropertyValue::ensureEnum($value,'TTableCaptionAlign'),TTableCaptionAlign::NotSet); - } - - /** - * @return integer the cellspacing for the table. Defaults to -1, meaning not set. - */ - public function getCellSpacing() - { - if($this->getHasStyle()) - return $this->getStyle()->getCellSpacing(); - else - return -1; - } - - /** - * @param integer the cellspacing for the table. Defaults to -1, meaning not set. - */ - public function setCellSpacing($value) - { - $this->getStyle()->setCellSpacing($value); - } - - /** - * @return integer the cellpadding for the table. Defaults to -1, meaning not set. - */ - public function getCellPadding() - { - if($this->getHasStyle()) - return $this->getStyle()->getCellPadding(); - else - return -1; - } - - /** - * @param integer the cellpadding for the table. Defaults to -1, meaning not set. - */ - public function setCellPadding($value) - { - $this->getStyle()->setCellPadding($value); - } - - /** - * @return THorizontalAlign the horizontal alignment of the table content. Defaults to THorizontalAlign::NotSet. - */ - public function getHorizontalAlign() - { - if($this->getHasStyle()) - return $this->getStyle()->getHorizontalAlign(); - else - return THorizontalAlign::NotSet; - } - - /** - * @param THorizontalAlign the horizontal alignment of the table content. - */ - public function setHorizontalAlign($value) - { - $this->getStyle()->setHorizontalAlign($value); - } - - /** - * @return TTableGridLines the grid line setting of the table. Defaults to TTableGridLines::None. - */ - public function getGridLines() - { - if($this->getHasStyle()) - return $this->getStyle()->getGridLines(); - else - return TTableGridLines::None; - } - - /** - * @param TTableGridLines the grid line setting of the table - */ - public function setGridLines($value) - { - $this->getStyle()->setGridLines($value); - } - - /** - * @return string the URL of the background image for the table - */ - public function getBackImageUrl() - { - if($this->getHasStyle()) - return $this->getStyle()->getBackImageUrl(); - else - return ''; - } - - /** - * Sets the URL of the background image for the table - * @param string the URL - */ - public function setBackImageUrl($value) - { - $this->getStyle()->setBackImageUrl($value); - } - - /** - * Renders the openning tag for the table control which will render table caption if present. - * @param THtmlWriter the writer used for the rendering purpose - */ - public function renderBeginTag($writer) - { - parent::renderBeginTag($writer); - if(($caption=$this->getCaption())!=='') - { - if(($align=$this->getCaptionAlign())!==TTableCaptionAlign::NotSet) - $writer->addAttribute('align',strtolower($align)); - $writer->renderBeginTag('caption'); - $writer->write($caption); - $writer->renderEndTag(); - } - } - - /** - * Renders body contents of the table. - * @param THtmlWriter the writer used for the rendering purpose. - */ - public function renderContents($writer) - { - if($this->getHasControls()) - { - $renderTableSection=false; - foreach($this->getControls() as $row) - { - if($row->getTableSection()!==TTableRowSection::Body) - { - $renderTableSection=true; - break; - } - } - if($renderTableSection) - { - $currentSection=TTableRowSection::Header; - $writer->writeLine(); - foreach($this->getControls() as $index=>$row) - { - if(($section=$row->getTableSection())===$currentSection) - { - if($index===0 && $currentSection===TTableRowSection::Header) - $writer->renderBeginTag('thead'); - } - else - { - if($currentSection===TTableRowSection::Header) - { - if($index>0) - $writer->renderEndTag(); - if($section===TTableRowSection::Body) - $writer->renderBeginTag('tbody'); - else - $writer->renderBeginTag('tfoot'); - $currentSection=$section; - } - else if($currentSection===TTableRowSection::Body) - { - $writer->renderEndTag(); - if($section===TTableRowSection::Footer) - $writer->renderBeginTag('tfoot'); - else - throw new TConfigurationException('table_tablesection_outoforder'); - $currentSection=$section; - } - else // Footer - throw new TConfigurationException('table_tablesection_outoforder'); - } - $row->renderControl($writer); - $writer->writeLine(); - } - $writer->renderEndTag(); - } - else - { - $writer->writeLine(); - foreach($this->getControls() as $row) - { - $row->renderControl($writer); - $writer->writeLine(); - } - } - } - } -} - - -/** - * TTableRowCollection class. - * - * TTableRowCollection is used to maintain a list of rows belong to a table. - * - * @author Qiang Xue - * @version $Id$ - * @package System.Web.UI.WebControls - * @since 3.0 - */ -class TTableRowCollection extends TControlCollection -{ - /** - * Inserts an item at the specified position. - * This overrides the parent implementation by performing additional - * operations for each newly added table row. - * @param integer the speicified position. - * @param mixed new item - * @throws TInvalidDataTypeException if the item to be inserted is not a TTableRow object. - */ - public function insertAt($index,$item) - { - if($item instanceof TTableRow) - parent::insertAt($index,$item); - else - throw new TInvalidDataTypeException('tablerowcollection_tablerow_required'); - } -} - - -/** - * TTableCaptionAlign class. - * TTableCaptionAlign defines the enumerable type for the possible alignments - * that a table caption can take. - * - * The following enumerable values are defined: - * - NotSet: alignment not specified - * - Top: top aligned - * - Bottom: bottom aligned - * - Left: left aligned - * - Right: right aligned - * - * @author Qiang Xue - * @version $Id$ - * @package System.Web.UI.WebControls - * @since 3.0.4 - */ -class TTableCaptionAlign extends TEnumerable -{ - const NotSet='NotSet'; - const Top='Top'; - const Bottom='Bottom'; - const Left='Left'; - const Right='Right'; -} - + * @license http://www.pradosoft.com/license/ + * @version $Id$ + * @package System.Web.UI.WebControls + */ + +/** + * Includes TTableRow class + */ +Prado::using('System.Web.UI.WebControls.TTableRow'); + +/** + * TTable class + * + * TTable displays an HTML table on a Web page. + * + * A table may have {@link setCaption Caption}, whose alignment is specified + * via {@link setCaptionAlign CaptionAlign}. The table cellpadding and cellspacing + * are specified via {@link setCellPadding CellPadding} and {@link setCellSpacing CellSpacing} + * properties, respectively. The {@link setGridLines GridLines} specifies how + * the table should display its borders. The horizontal alignment of the table + * content can be specified via {@link setHorizontalAlign HorizontalAlign}, + * and {@link setBackImageUrl BackImageUrl} can assign a background image to the table. + * + * A TTable maintains a list of {@link TTableRow} controls in its + * {@link getRows Rows} property. Each {@link TTableRow} represents + * an HTML table row. + * + * To populate the table {@link getRows Rows}, you may either use control template + * or dynamically create {@link TTableRow} in code. + * In template, do as follows to create the table rows and cells, + * + * + * + * + * + * + * + * + * + * + * + * + * The above can also be accomplished in code as follows, + * + * $table=new TTable; + * $row=new TTableRow; + * $cell=new TTableCell; $cell->Text="content"; $row->Cells->add($cell); + * $cell=new TTableCell; $cell->Text="content"; $row->Cells->add($cell); + * $table->Rows->add($row); + * $row=new TTableRow; + * $cell=new TTableCell; $cell->Text="content"; $row->Cells->add($cell); + * $cell=new TTableCell; $cell->Text="content"; $row->Cells->add($cell); + * $table->Rows->add($row); + * + * + * @author Qiang Xue + * @version $Id$ + * @package System.Web.UI.WebControls + * @since 3.0 + */ +class TTable extends TWebControl +{ + /** + * @return string tag name for the table + */ + protected function getTagName() + { + return 'table'; + } + + /** + * Adds object parsed from template to the control. + * This method adds only {@link TTableRow} objects into the {@link getRows Rows} collection. + * All other objects are ignored. + * @param mixed object parsed from template + */ + public function addParsedObject($object) + { + if($object instanceof TTableRow) + $this->getRows()->add($object); + } + + /** + * Creates a style object for the control. + * This method creates a {@link TTableStyle} to be used by the table. + * @return TTableStyle control style to be used + */ + protected function createStyle() + { + return new TTableStyle; + } + + /** + * Adds attributes to renderer. + * @param THtmlWriter the renderer + */ + protected function addAttributesToRender($writer) + { + parent::addAttributesToRender($writer); + $border=0; + if($this->getHasStyle()) + { + if($this->getGridLines()!==TTableGridLines::None) + { + if(($border=$this->getBorderWidth())==='') + $border=1; + else + $border=(int)$border; + } + } + $writer->addAttribute('border',"$border"); + } + + /** + * Creates a control collection object that is to be used to hold child controls + * @return TTableRowCollection control collection + * @see getControls + */ + protected function createControlCollection() + { + return new TTableRowCollection($this); + } + + /** + * @return TTableRowCollection list of {@link TTableRow} controls + */ + public function getRows() + { + return $this->getControls(); + } + + /** + * @return string table caption + */ + public function getCaption() + { + return $this->getViewState('Caption',''); + } + + /** + * @param string table caption + */ + public function setCaption($value) + { + $this->setViewState('Caption',$value,''); + } + + /** + * @return TTableCaptionAlign table caption alignment. Defaults to TTableCaptionAlign::NotSet. + */ + public function getCaptionAlign() + { + return $this->getViewState('CaptionAlign',TTableCaptionAlign::NotSet); + } + + /** + * @param TTableCaptionAlign table caption alignment. + */ + public function setCaptionAlign($value) + { + $this->setViewState('CaptionAlign',TPropertyValue::ensureEnum($value,'TTableCaptionAlign'),TTableCaptionAlign::NotSet); + } + + /** + * @return integer the cellspacing for the table. Defaults to -1, meaning not set. + */ + public function getCellSpacing() + { + if($this->getHasStyle()) + return $this->getStyle()->getCellSpacing(); + else + return -1; + } + + /** + * @param integer the cellspacing for the table. Defaults to -1, meaning not set. + */ + public function setCellSpacing($value) + { + $this->getStyle()->setCellSpacing($value); + } + + /** + * @return integer the cellpadding for the table. Defaults to -1, meaning not set. + */ + public function getCellPadding() + { + if($this->getHasStyle()) + return $this->getStyle()->getCellPadding(); + else + return -1; + } + + /** + * @param integer the cellpadding for the table. Defaults to -1, meaning not set. + */ + public function setCellPadding($value) + { + $this->getStyle()->setCellPadding($value); + } + + /** + * @return THorizontalAlign the horizontal alignment of the table content. Defaults to THorizontalAlign::NotSet. + */ + public function getHorizontalAlign() + { + if($this->getHasStyle()) + return $this->getStyle()->getHorizontalAlign(); + else + return THorizontalAlign::NotSet; + } + + /** + * @param THorizontalAlign the horizontal alignment of the table content. + */ + public function setHorizontalAlign($value) + { + $this->getStyle()->setHorizontalAlign($value); + } + + /** + * @return TTableGridLines the grid line setting of the table. Defaults to TTableGridLines::None. + */ + public function getGridLines() + { + if($this->getHasStyle()) + return $this->getStyle()->getGridLines(); + else + return TTableGridLines::None; + } + + /** + * @param TTableGridLines the grid line setting of the table + */ + public function setGridLines($value) + { + $this->getStyle()->setGridLines($value); + } + + /** + * @return string the URL of the background image for the table + */ + public function getBackImageUrl() + { + if($this->getHasStyle()) + return $this->getStyle()->getBackImageUrl(); + else + return ''; + } + + /** + * Sets the URL of the background image for the table + * @param string the URL + */ + public function setBackImageUrl($value) + { + $this->getStyle()->setBackImageUrl($value); + } + + /** + * Renders the openning tag for the table control which will render table caption if present. + * @param THtmlWriter the writer used for the rendering purpose + */ + public function renderBeginTag($writer) + { + parent::renderBeginTag($writer); + if(($caption=$this->getCaption())!=='') + { + if(($align=$this->getCaptionAlign())!==TTableCaptionAlign::NotSet) + $writer->addAttribute('align',strtolower($align)); + $writer->renderBeginTag('caption'); + $writer->write($caption); + $writer->renderEndTag(); + } + } + + /** + * Renders body contents of the table. + * @param THtmlWriter the writer used for the rendering purpose. + */ + public function renderContents($writer) + { + if($this->getHasControls()) + { + $renderTableSection=false; + foreach($this->getControls() as $row) + { + if($row->getTableSection()!==TTableRowSection::Body) + { + $renderTableSection=true; + break; + } + } + if($renderTableSection) + { + $currentSection=TTableRowSection::Header; + $writer->writeLine(); + foreach($this->getControls() as $index=>$row) + { + if(($section=$row->getTableSection())===$currentSection) + { + if($index===0 && $currentSection===TTableRowSection::Header) + $writer->renderBeginTag('thead'); + } + else + { + if($currentSection===TTableRowSection::Header) + { + if($index>0) + $writer->renderEndTag(); + if($section===TTableRowSection::Body) + $writer->renderBeginTag('tbody'); + else + $writer->renderBeginTag('tfoot'); + $currentSection=$section; + } + else if($currentSection===TTableRowSection::Body) + { + $writer->renderEndTag(); + if($section===TTableRowSection::Footer) + $writer->renderBeginTag('tfoot'); + else + throw new TConfigurationException('table_tablesection_outoforder'); + $currentSection=$section; + } + else // Footer + throw new TConfigurationException('table_tablesection_outoforder'); + } + $row->renderControl($writer); + $writer->writeLine(); + } + $writer->renderEndTag(); + } + else + { + $writer->writeLine(); + foreach($this->getControls() as $row) + { + $row->renderControl($writer); + $writer->writeLine(); + } + } + } + } +} + + +/** + * TTableRowCollection class. + * + * TTableRowCollection is used to maintain a list of rows belong to a table. + * + * @author Qiang Xue + * @version $Id$ + * @package System.Web.UI.WebControls + * @since 3.0 + */ +class TTableRowCollection extends TControlCollection +{ + /** + * Inserts an item at the specified position. + * This overrides the parent implementation by performing additional + * operations for each newly added table row. + * @param integer the speicified position. + * @param mixed new item + * @throws TInvalidDataTypeException if the item to be inserted is not a TTableRow object. + */ + public function insertAt($index,$item) + { + if($item instanceof TTableRow) + parent::insertAt($index,$item); + else + throw new TInvalidDataTypeException('tablerowcollection_tablerow_required'); + } +} + + +/** + * TTableCaptionAlign class. + * TTableCaptionAlign defines the enumerable type for the possible alignments + * that a table caption can take. + * + * The following enumerable values are defined: + * - NotSet: alignment not specified + * - Top: top aligned + * - Bottom: bottom aligned + * - Left: left aligned + * - Right: right aligned + * + * @author Qiang Xue + * @version $Id$ + * @package System.Web.UI.WebControls + * @since 3.0.4 + */ +class TTableCaptionAlign extends TEnumerable +{ + const NotSet='NotSet'; + const Top='Top'; + const Bottom='Bottom'; + const Left='Left'; + const Right='Right'; +} + -- cgit v1.2.3