From bf7d9bbb8854b6c0d47ff6de4e769b2d4ca9b3c7 Mon Sep 17 00:00:00 2001 From: xue <> Date: Fri, 3 Mar 2006 15:32:34 +0000 Subject: Updated control collection and added methods for accessing control lifecycle. --- framework/Web/UI/TControl.php | 80 +++++++++++++++++++++---------------------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/framework/Web/UI/TControl.php b/framework/Web/UI/TControl.php index dbe4a233..4b5696bd 100644 --- a/framework/Web/UI/TControl.php +++ b/framework/Web/UI/TControl.php @@ -1,6 +1,6 @@ * @link http://www.pradosoft.com/ @@ -303,6 +303,30 @@ class TControl extends TApplicationComponent return $this->getPage(); } + /** + * Gets the lifecycle step the control is currently at. + * This method should only be used by control developers. + * @return integer the lifecycle step the control is currently at. + * The value can be CS_CONSTRUCTED, CS_CHILD_INITIALIZED, CS_INITIALIZED, + * CS_STATE_LOADED, CS_LOADED, CS_PRERENDERED. + */ + protected function getControlStage() + { + return $this->_stage; + } + + /** + * Sets the lifecycle step the control is currently at. + * This method should only be used by control developers. + * @param integer the lifecycle step the control is currently at. + * Valid values include CS_CONSTRUCTED, CS_CHILD_INITIALIZED, CS_INITIALIZED, + * CS_STATE_LOADED, CS_LOADED, CS_PRERENDERED. + */ + protected function setControlStage($value) + { + $this->_stage=$value; + } + /** * Returns the id of the control. * Control ID can be either manually set or automatically generated. @@ -435,7 +459,7 @@ class TControl extends TApplicationComponent } /** - * @return TControlList the child control collection + * @return TControlCollection the child control collection */ public function getControls() { @@ -446,12 +470,12 @@ class TControl extends TApplicationComponent /** * Creates a control collection object that is to be used to hold child controls - * @return TControlList control collection + * @return TControlCollection control collection * @see getControls */ protected function createControlCollection() { - return $this->getAllowChildControls()?new TControlList($this):new TEmptyControlList($this); + return $this->getAllowChildControls()?new TControlCollection($this):new TEmptyControlCollection($this); } /** @@ -1537,7 +1561,7 @@ class TControl extends TApplicationComponent /** * Updates the list of the controls whose IDs are managed by the specified naming container. * @param TControl the naming container - * @param TControlList list of controls + * @param TControlCollection list of controls * @throws TInvalidDataValueException if a control's ID is not unique within its naming container. */ private function fillNameTable($container,$controls) @@ -1562,9 +1586,9 @@ class TControl extends TApplicationComponent /** - * TControlList class + * TControlCollection class * - * TControlList implements a collection that enables + * TControlCollection implements a collection that enables * controls to maintain a list of their child controls. * * @author Qiang Xue @@ -1572,7 +1596,7 @@ class TControl extends TApplicationComponent * @package System.Web.UI * @since 3.0 */ -class TControlList extends TList +class TControlCollection extends TList { /** * the control that owns this collection. @@ -1583,10 +1607,12 @@ class TControlList extends TList /** * Constructor. * @param TControl the control that owns this collection. + * @param boolean whether the list is read-only */ - public function __construct(TControl $owner) + public function __construct(TControl $owner,$readOnly=false) { $this->_o=$owner; + parent::__construct(null,$readOnly); } /** @@ -1615,7 +1641,7 @@ class TControlList extends TList $this->_o->addedControl($item); } else - throw new TInvalidDataTypeException('controllist_control_required'); + throw new TInvalidDataTypeException('controlcollection_control_required'); } /** @@ -1645,9 +1671,9 @@ class TControlList extends TList } /** - * TEmptyControlList class + * TEmptyControlCollection class * - * TEmptyControlList implements an empty control list that prohibits adding + * TEmptyControlCollection implements an empty control list that prohibits adding * controls to it. This is useful for controls that do not allow child controls. * * @author Qiang Xue @@ -1655,41 +1681,15 @@ class TControlList extends TList * @package System.Web.UI * @since 3.0 */ -class TEmptyControlList extends TList +class TEmptyControlCollection extends TControlCollection { - /** - * the control that owns this collection. - * @var TControl - */ - private $_o; - /** * Constructor. * @param TControl the control that owns this collection. */ public function __construct(TControl $owner) { - $this->_o=$owner; - } - - /** - * @return TControl the control that owns this collection. - */ - protected function getOwner() - { - return $this->_o; - } - - /** - * Inserts an item at the specified position. - * Calling this method will always throw an exception. - * @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) - { - throw new TNotSupportedException('emptycontrollist_addition_disallowed'); + parent::__construct($owner,true); } } -- cgit v1.2.3