From ae43fa72cdae13bace16a5b8250170e472bb2b87 Mon Sep 17 00:00:00 2001 From: wei <> Date: Sun, 14 May 2006 00:30:53 +0000 Subject: refactor active controls. --- framework/Web/UI/ActiveControls/TActiveButton.php | 106 ++-------------------- 1 file changed, 9 insertions(+), 97 deletions(-) (limited to 'framework/Web/UI/ActiveControls/TActiveButton.php') diff --git a/framework/Web/UI/ActiveControls/TActiveButton.php b/framework/Web/UI/ActiveControls/TActiveButton.php index da5ec5ad..3343d7fe 100644 --- a/framework/Web/UI/ActiveControls/TActiveButton.php +++ b/framework/Web/UI/ActiveControls/TActiveButton.php @@ -5,11 +5,6 @@ class TActiveButton extends TButton implements ICallbackEventHandler { - /** - * @var TCallbackClientSideOptions client-side options. - */ - private $_clientSide; - /** * Creates a new callback control, sets the adapter to * TActiveControlAdapter. If you override this class, be sure to set the @@ -22,29 +17,13 @@ class TActiveButton extends TButton implements ICallbackEventHandler } /** - * @param boolean true to allow fine grain callback updates. + * @return TBaseActiveCallbackControl base callback options. */ - public function setAllowCallbackUpdate($value) + public function getActiveControl() { - $this->setViewState('CallbackUpdate', TPropertyValue::ensureBoolean($value), true); + return $this->getAdapter()->getActiveControl(); } - - /** - * @return true to allow fine grain callback updates. - */ - public function getAllowCallbackUpdate() - { - return $this->getViewState('CallbackUpdate', true); - } - - /** - * @return true if can update changes on the client-side during callback. - */ - protected function canUpdateClientSide() - { - return $this->getIsInitialized() && $this->getAllowCallbackUpdate(); - } - + /** * Raises the callback event. This method is required by {@link * ICallbackEventHandler} interface. If {@link getCausesValidation @@ -78,89 +57,22 @@ class TActiveButton extends TButton implements ICallbackEventHandler public function setText($value) { parent::setText($value); - if($this->canUpdateClientSide()) + if($this->getActiveControl()->canUpdateClientSide()) $this->getPage()->getCallbackClient()->setAttribute($this, 'value', $value); } - - /** - * Callback client-side options can be set by setting the properties of - * the ClientSide property. E.g. - * See {@link TCallbackClientSideOptions} for details on the properties of - * ClientSide. - * @return TCallbackClientSideOptions client-side callback options. - */ - public function getClientSide() - { - if(is_null($this->_clientSide)) - $this->_clientSide = $this->createClientSideOptions(); - return $this->_clientSide; - } - - /** - * @return TCallbackClientSideOptions callback client-side options. - */ - protected function createClientSideOptions() - { - if(($id=$this->getCallbackOptions())!=='' && ($control=$this->findControl($id))!==null) - { - if($control instanceof TCallbackOptions) - return clone($control->getClientSide()); - } - return new TCallbackClientSideOptions; - } - - /** - * Sets the ID of a TCallbackOptions component to duplicate the client-side - * options for this control. The {@link getClientSide ClientSide} - * subproperties has precendent over the CallbackOptions property. - * @param string ID of a TCallbackOptions control from which ClientSide - * options are cloned. - */ - public function setCallbackOptions($value) - { - $this->setViewState('CallbackOptions', $value,''); - } - - /** - * @return string ID of a TCallbackOptions control from which ClientSide - * options are cloned. - */ - public function getCallbackOptions() - { - return $this->getViewState('CallbackOptions',''); - } /** * Renders the callback control javascript statement. */ protected function renderClientControlScript($writer) { - $writer->addAttribute('id',$this->getClientID()); - $cs = $this->getPage()->getClientScript(); - $cs->registerCallbackControl(get_class($this),$this->getCallbackOptions()); } - /** - * @return array list of callback options. - */ - protected function getCallbackClientSideOptions() - { - return array_merge($this->getPostBackOptions(), - $this->getClientSide()->getOptions()->toArray()); - } - - /** - * Returns the javascript statement to invoke a callback request for this - * control. Additional options for callback can be set via subproperties of - * {@link getClientSide ClientSide} property. E.g. ClientSide.OnSuccess="..." - * @param TControl callback handler control, use current object if null. - * @return string javascript statement to invoke a callback. - */ - public function getCallbackReference($control=null) + protected function addAttributesToRender($writer) { - $client = $this->getPage()->getClientScript(); - $object = is_null($control) ? $this : $control; - return $client->getCallbackReference($object, $this->getCallbackClientSideOptions()); + parent::addAttributesToRender($writer); + $writer->addAttribute('id',$this->getClientID()); + $this->getActiveControl()->registerCallbackClientScript($this->getPostBackOptions()); } } -- cgit v1.2.3