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.php480
1 files changed, 16 insertions, 464 deletions
diff --git a/framework/Web/UI/WebControls/TTable.php b/framework/Web/UI/WebControls/TTable.php
index fb70e66c..ae2a01b4 100644
--- a/framework/Web/UI/WebControls/TTable.php
+++ b/framework/Web/UI/WebControls/TTable.php
@@ -1,6 +1,6 @@
<?php
/**
- * TTable class file
+ * TTable and TTableRowCollection class file
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
@@ -11,6 +11,11 @@
*/
/**
+ * Includes TTableRow class
+ */
+Prado::using('System.Web.UI.WebControls.TTableRow');
+
+/**
* TTable class
*
* TTable displays an HTML table on a Web page.
@@ -31,16 +36,16 @@
* or dynamically create {@link TTableRow} in code.
* In template, do as follows to create the table rows and cells,
* <code>
- * &lt;com:TTable&gt;
- * &lt;com:TTableRow&gt;
- * &lt;com:TTableCell Text="content" /&gt;
- * &lt;com:TTableCell Text="content" /&gt;
- * &lt;/com:TTableRow&gt;
- * &lt;com:TTableRow&gt;
- * &lt;com:TTableCell Text="content" /&gt;
- * &lt;com:TTableCell Text="content" /&gt;
- * &lt;/com:TTableRow&gt;
- * &lt;com:TTable&gt;
+ * <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>
@@ -295,396 +300,6 @@ class TTable extends TWebControl
}
}
-
-/**
- * TTableRow class.
- *
- * TTableRow displays a table row. The table cells in the row can be accessed
- * via {@link getCells Cells}. The horizontal and vertical alignments of the row
- * are specified via {@link setHorizontalAlign HorizontalAlign} and
- * {@link setVerticalAlign VerticalAlign} properties, respectively.
- *
- * @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Revision: $ $Date: $
- * @package System.Web.UI.WebControls
- * @since 3.0
- */
-class TTableRow extends TWebControl
-{
- /**
- * @var TTableCellCollection cell collection
- */
- private $_cells=null;
-
- /**
- * @return string tag name for the table
- */
- protected function getTagName()
- {
- return 'tr';
- }
-
- /**
- * Adds object parsed from template to the control.
- * This method adds only {@link TTableCell} objects into the {@link getCells Cells} collection.
- * All other objects are ignored.
- * @param mixed object parsed from template
- */
- public function addParsedObject($object)
- {
- if($object instanceof TTableCell)
- $this->getCells()->add($object);
- }
-
- /**
- * Creates a style object for the control.
- * This method creates a {@link TTableItemStyle} to be used by the table row.
- * @return TStyle control style to be used
- */
- protected function createStyle()
- {
- return new TTableItemStyle;
- }
-
- /**
- * @return TTableCellCollection list of {@link TTableCell} controls
- */
- public function getCells()
- {
- if(!$this->_cells)
- $this->_cells=new TTableCellCollection($this);
- return $this->_cells;
- }
-
- /**
- * @return string the horizontal alignment of the contents within the table item, defaults to 'NotSet'.
- */
- public function getHorizontalAlign()
- {
- if($this->getHasStyle())
- return $this->getStyle()->getHorizontalAlign();
- else
- return 'NotSet';
- }
-
- /**
- * Sets the horizontal alignment of the contents within the table item.
- * Valid values include 'NotSet', 'Justify', 'Left', 'Right', 'Center'
- * @param string the horizontal alignment
- */
- public function setHorizontalAlign($value)
- {
- $this->getStyle()->setHorizontalAlign($value);
- }
-
- /**
- * @return string the vertical alignment of the contents within the table item, defaults to 'NotSet'.
- */
- public function getVerticalAlign()
- {
- if($this->getHasStyle())
- return $this->getStyle()->getVerticalAlign();
- else
- return 'NotSet';
- }
-
- /**
- * Sets the vertical alignment of the contents within the table item.
- * Valid values include 'NotSet','Top','Bottom','Middel'
- * @param string the horizontal alignment
- */
- public function setVerticalAlign($value)
- {
- $this->getStyle()->setVerticalAlign($value);
- }
-
- /**
- * Renders body contents of the table row
- * @param THtmlWriter writer for the rendering purpose
- */
- protected function renderContents($writer)
- {
- if($this->_cells)
- {
- $writer->writeLine();
- foreach($this->_cells as $cell)
- {
- $cell->renderControl($writer);
- $writer->writeLine();
- }
- }
- }
-}
-
-
-/**
- * TTableCell class.
- *
- * TTableCell displays a table cell on a Web page. Content of the table cell
- * is specified by the {@link setText Text} property. If {@link setText Text}
- * is empty, the body contents enclosed by the table cell component tag are rendered.
- * Note, {@link setText Text} is not HTML-encoded when displayed. So make sure
- * it does not contain dangerous characters.
- *
- * The horizontal and vertical alignments of the contents in the cell
- * are specified via {@link setHorizontalAlign HorizontalAlign} and
- * {@link setVerticalAlign VerticalAlign} properties, respectively.
- *
- * The colspan and rowspan of the cell are specified via {@link setColumnSpan ColumnSpan}
- * and {@link setRowSpan RowSpan} properties. And the {@link setWrap Wrap} property
- * indicates whether the contents in the cell should be wrapped.
- *
- * @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Revision: $ $Date: $
- * @package System.Web.UI.WebControls
- * @since 3.0
- */
-class TTableCell extends TWebControl
-{
- /**
- * @return string tag name for the table cell
- */
- protected function getTagName()
- {
- return 'td';
- }
-
- /**
- * Creates a style object for the control.
- * This method creates a {@link TTableItemStyle} to be used by the table cell.
- * @return TStyle control style to be used
- */
- protected function createStyle()
- {
- return new TTableItemStyle;
- }
-
- /**
- * @return string the horizontal alignment of the contents within the table item, defaults to 'NotSet'.
- */
- public function getHorizontalAlign()
- {
- if($this->getHasStyle())
- return $this->getStyle()->getHorizontalAlign();
- else
- return 'NotSet';
- }
-
- /**
- * Sets the horizontal alignment of the contents within the table item.
- * Valid values include 'NotSet', 'Justify', 'Left', 'Right', 'Center'
- * @param string the horizontal alignment
- */
- public function setHorizontalAlign($value)
- {
- $this->getStyle()->setHorizontalAlign($value);
- }
-
- /**
- * @return string the vertical alignment of the contents within the table item, defaults to 'NotSet'.
- */
- public function getVerticalAlign()
- {
- if($this->getHasStyle())
- return $this->getStyle()->getVerticalAlign();
- else
- return 'NotSet';
- }
-
- /**
- * Sets the vertical alignment of the contents within the table item.
- * Valid values include 'NotSet','Top','Bottom','Middel'
- * @param string the horizontal alignment
- */
- public function setVerticalAlign($value)
- {
- $this->getStyle()->setVerticalAlign($value);
- }
-
- /**
- * @return integer the columnspan for the table cell, 0 if not set.
- */
- public function getColumnSpan()
- {
- return $this->getViewState('ColumnSpan', 0);
- }
-
- /**
- * Sets the columnspan for the table cell.
- * @param integer the columnspan for the table cell, 0 if not set.
- */
- public function setColumnSpan($value)
- {
- $this->setViewState('ColumnSpan', TPropertyValue::ensureInteger($value), 0);
- }
-
- /**
- * @return integer the rowspan for the table cell, 0 if not set.
- */
- public function getRowSpan()
- {
- return $this->getViewState('RowSpan', 0);
- }
-
- /**
- * Sets the rowspan for the table cell.
- * @param integer the rowspan for the table cell, 0 if not set.
- */
- public function setRowSpan($value)
- {
- $this->setViewState('RowSpan', TPropertyValue::ensureInteger($value), 0);
- }
-
- /**
- * @return boolean whether the text content wraps within a table cell. Defaults to true.
- */
- public function getWrap()
- {
- if($this->getHasStyle())
- return $this->getStyle()->getWrap();
- else
- return true;
- }
-
- /**
- * Sets the value indicating whether the text content wraps within a table cell.
- * @param boolean whether the text content wraps within a table cell.
- */
- public function setWrap($value)
- {
- $this->getStyle()->setWrap($value);
- }
-
- /**
- * @return string the text content of the table cell.
- */
- public function getText()
- {
- return $this->getViewState('Text','');
- }
-
- /**
- * Sets the text content of the table cell.
- * If the text content is empty, body content (child controls) of the cell will be rendered.
- * @param string the text content
- */
- public function setText($value)
- {
- $this->setViewState('Text',$value,'');
- }
-
- /**
- * Adds attributes to renderer.
- * @param THtmlWriter the renderer
- */
- protected function addAttributesToRender($writer)
- {
- parent::addAttributesToRender($writer);
- if(($colspan=$this->getColumnSpan())>0)
- $writer->addAttribute('colspan',"$colspan");
- if(($rowspan=$this->getRowSpan())>0)
- $writer->addAttribute('rowspan',"$rowspan");
- }
-
- /**
- * Renders body contents of the table cell.
- * @param THtmlWriter the writer used for the rendering purpose.
- */
- protected function renderContents($writer)
- {
- if(($text=$this->getText())==='')
- parent::renderContents($writer);
- else
- $writer->write($text);
- }
-}
-
-/**
- * TTableHeaderCell class.
- *
- * TTableHeaderCell displays a table header cell on a Web page.
- *
- * @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Revision: $ $Date: $
- * @package System.Web.UI.WebControls
- * @since 3.0
- */
-class TTableHeaderCell extends TTableCell
-{
- /**
- * @return string tag name for the table header cell
- */
- protected function getTagName()
- {
- return 'th';
- }
-
- /**
- * Adds attributes to renderer.
- * @param THtmlWriter the renderer
- */
- protected function addAttributesToRender($writer)
- {
- parent::addAttributesToRender($writer);
- if(($scope=$this->getScope())!=='NotSet')
- $writer->addAttribute('scope',$scope==='Row'?'row':'col');
- if(($text=$this->getAbbreviatedText())!=='')
- $writer->addAttribute('abbr',$text);
- if(($text=$this->getCategoryText())!=='')
- $writer->addAttribute('axis',$text);
- }
-
- /**
- * @return string the scope of the cells that the header cell applies to. Defaults to 'NotSet'.
- */
- public function getScope()
- {
- return $this->getViewState('Scope','NotSet');
- }
-
- /**
- * @param string the scope of the cells that the header cell applies to.
- * Valid values include 'NotSet','Row','Column'.
- */
- public function setScope($value)
- {
- $this->setViewState('Scope',TPropertyValue::ensureEnum($value,'NotSet','Row','Column'),'NotSet');
- }
-
- /**
- * @return string the abbr attribute of the HTML th element
- */
- public function getAbbreviatedText()
- {
- return $this->getViewState('AbbreviatedText','');
- }
-
- /**
- * @param string the abbr attribute of the HTML th element
- */
- public function setAbbreviatedText($value)
- {
- $this->setViewState('AbbreviatedText',$value,'');
- }
-
- /**
- * @return string the axis attribute of the HTML th element
- */
- public function getCategoryText()
- {
- return $this->getViewState('CategoryText','');
- }
-
- /**
- * @param string the axis attribute of the HTML th element
- */
- public function setCategoryText($value)
- {
- $this->setViewState('CategoryText',$value,'');
- }
-}
-
-
/**
* TTableRowCollection class.
*
@@ -747,67 +362,4 @@ class TTableRowCollection extends TList
}
}
-
-/**
- * TTableCellCollection class.
- *
- * TTableCellCollection is used to maintain a list of cells belong to a table row.
- *
- * @author Qiang Xue <qiang.xue@gmail.com>
- * @version $Revision: $ $Date: $
- * @package System.Web.UI.WebControls
- * @since 3.0
- */
-class TTableCellCollection extends TList
-{
- /**
- * @var mixed cell collection owner
- */
- private $_owner=null;
-
- /**
- * Constructor.
- * @param mixed cell collection owner
- */
- public function __construct($owner=null)
- {
- $this->_owner=$owner;
- }
-
-
- /**
- * Inserts an item at the specified position.
- * This overrides the parent implementation by performing additional
- * operations for each newly added table cell.
- * @param integer the speicified position.
- * @param mixed new item
- * @throws TInvalidDataTypeException if the item to be inserted is not a TTableCell object.
- */
- public function insertAt($index,$item)
- {
- if($item instanceof TTableCell)
- {
- parent::insertAt($index,$item);
- if($this->_owner)
- $this->_owner->getControls()->insertAt($index,$item);
- }
- else
- throw new TInvalidDataTypeException('tablecellcollection_tablecell_required');
- }
-
- /**
- * Removes an item at the specified position.
- * This overrides the parent implementation by performing additional
- * cleanup work when removing a table cell.
- * @param integer the index of the item to be removed.
- * @return mixed the removed item.
- */
- public function removeAt($index)
- {
- $item=parent::removeAt($index);
- if($item instanceof TTableCell)
- $this->_owner->getControls()->remove($item);
- return $item;
- }
-}
?> \ No newline at end of file