summaryrefslogtreecommitdiff
path: root/framework/Web/UI/WebControls/TTable.php
diff options
context:
space:
mode:
Diffstat (limited to 'framework/Web/UI/WebControls/TTable.php')
-rw-r--r--framework/Web/UI/WebControls/TTable.php818
1 files changed, 409 insertions, 409 deletions
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 @@
-<?php
-/**
- * TTable and TTableRowCollection class file
- *
- * @author Qiang Xue <qiang.xue@gmail.com>
- * @link http://www.pradosoft.com/
+<?php
+/**
+ * TTable and TTableRowCollection class file
+ *
+ * @author Qiang Xue <qiang.xue@gmail.com>
+ * @link http://www.pradosoft.com/
* @copyright Copyright &copy; 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,
- * <code>
- * <com:TTable>
- * <com:TTableRow>
- * <com:TTableCell Text="content" />
- * <com:TTableCell Text="content" />
- * </com:TTableRow>
- * <com:TTableRow>
- * <com:TTableCell Text="content" />
- * <com:TTableCell Text="content" />
- * </com:TTableRow>
- * </com:TTable>
- * </code>
- * The above can also be accomplished in code as follows,
- * <code>
- * $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);
- * </code>
- *
- * @author Qiang Xue <qiang.xue@gmail.com>
- * @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 <qiang.xue@gmail.com>
- * @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 <qiang.xue@gmail.com>
- * @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,
+ * <code>
+ * <com:TTable>
+ * <com:TTableRow>
+ * <com:TTableCell Text="content" />
+ * <com:TTableCell Text="content" />
+ * </com:TTableRow>
+ * <com:TTableRow>
+ * <com:TTableCell Text="content" />
+ * <com:TTableCell Text="content" />
+ * </com:TTableRow>
+ * </com:TTable>
+ * </code>
+ * The above can also be accomplished in code as follows,
+ * <code>
+ * $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);
+ * </code>
+ *
+ * @author Qiang Xue <qiang.xue@gmail.com>
+ * @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 <qiang.xue@gmail.com>
+ * @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 <qiang.xue@gmail.com>
+ * @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';
+}
+