diff options
author | Fabio Bas <ctrlaltca@gmail.com> | 2015-01-20 22:54:21 +0100 |
---|---|---|
committer | Fabio Bas <ctrlaltca@gmail.com> | 2015-01-20 22:54:21 +0100 |
commit | f6b22febb41b3f552e36d5d0190ce8672b4d6d6e (patch) | |
tree | 71b9633c8848437fb7ea50ae96ee1e295ec5a721 /framework/Web/UI/TControlCollection.php | |
parent | e2d11c31ca2671e812a8206627dffd00bfd192ea (diff) |
one class per file: framework/Web/UI/*.php
Diffstat (limited to 'framework/Web/UI/TControlCollection.php')
-rw-r--r-- | framework/Web/UI/TControlCollection.php | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/framework/Web/UI/TControlCollection.php b/framework/Web/UI/TControlCollection.php new file mode 100644 index 00000000..9fc3cfad --- /dev/null +++ b/framework/Web/UI/TControlCollection.php @@ -0,0 +1,95 @@ +<?php +/** + * TControl, TControlCollection, TEventParameter and INamingContainer 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 + */ + + +/** + * TControlCollection class + * + * TControlCollection implements a collection that enables + * controls to maintain a list of their child controls. + * + * @author Qiang Xue <qiang.xue@gmail.com> + * @package System.Web.UI + * @since 3.0 + */ +class TControlCollection extends TList +{ + /** + * the control that owns this collection. + * @var TControl + */ + private $_o; + + /** + * Constructor. + * @param TControl the control that owns this collection. + * @param boolean whether the list is read-only + */ + public function __construct(TControl $owner,$readOnly=false) + { + $this->_o=$owner; + parent::__construct(null,$readOnly); + } + + /** + * @return TControl the control that owns this collection. + */ + protected function getOwner() + { + return $this->_o; + } + + /** + * Inserts an item at the specified position. + * This overrides the parent implementation by performing additional + * operations for each newly added child control. + * @param integer the speicified position. + * @param mixed new item + * @throws TInvalidDataTypeException if the item to be inserted is neither a string nor a TControl. + */ + public function insertAt($index,$item) + { + if($item instanceof TControl) + { + parent::insertAt($index,$item); + $this->_o->addedControl($item); + } + else if(is_string($item) || ($item instanceof IRenderable)) + parent::insertAt($index,$item); + else + throw new TInvalidDataTypeException('controlcollection_control_required'); + } + + /** + * Removes an item at the specified position. + * This overrides the parent implementation by performing additional + * cleanup work when removing a child control. + * @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 TControl) + $this->_o->removedControl($item); + return $item; + } + + /** + * Overrides the parent implementation by invoking {@link TControl::clearNamingContainer} + */ + public function clear() + { + parent::clear(); + if($this->_o instanceof INamingContainer) + $this->_o->clearNamingContainer(); + } +}
\ No newline at end of file |