From 10b65d6d03ee0afc1ec1a50f320af42a79f5492b Mon Sep 17 00:00:00 2001 From: wei <> Date: Sun, 30 Apr 2006 00:15:23 +0000 Subject: Adding Callback foundations. --- .../UI/ActiveControls/TCallbackClientScript.php | 485 +++++++++++++++++++++ 1 file changed, 485 insertions(+) create mode 100644 framework/Web/UI/ActiveControls/TCallbackClientScript.php (limited to 'framework/Web/UI/ActiveControls/TCallbackClientScript.php') diff --git a/framework/Web/UI/ActiveControls/TCallbackClientScript.php b/framework/Web/UI/ActiveControls/TCallbackClientScript.php new file mode 100644 index 00000000..550c88b5 --- /dev/null +++ b/framework/Web/UI/ActiveControls/TCallbackClientScript.php @@ -0,0 +1,485 @@ + + * @link http://www.pradosoft.com/ + * @copyright Copyright © 2005 PradoSoft + * @license http://www.pradosoft.com/license/ + * @version $Revision: $ $Date: $ + * @package System.Web.UI.ActiveControls + */ + +/** + * TCallbackClientScript class. + * + * The TCallbackClientScript class provides corresponding methods that can be + * executed on the client-side (i.e. the browser client that is viewing + * the page) during a callback response. + * + * The avaiable methods includes setting/clicking input elements, changing Css + * styles, hiding/showing elements, and adding visual effects to elements on the + * page. The client-side methods can be access through the CallbackClient + * property available in TPage. + * + * For example, to hide "$myTextBox" element during callback response, do + * + * $this->getPage()->getCallbackClient()->hide($myTextBox); + * + * + * @author Wei Zhuo + * @version $Revision: $ $Date: $ + * @package System.Web.UI.ActiveControls + * @since 3.0 + */ +class TCallbackClientScript +{ + /** + * @var TList list of client functions to execute. + */ + private $_actions; + + /** + * Constructor. + */ + public function __construct() + { + $this->_actions = new TList; + } + + /** + * @return array list of client function to be executed during callback + * response. + */ + public function getClientFunctionsToExecute() + { + return $this->_actions; + } + + /** + * Executes a client-side statement. + * @param string javascript function name + * @param array list of arguments for the function + */ + public function callClientFunction($function, $params=null) + { + if(!is_array($params) && $params !== null) + $params = array($params); + else + $params = array(); + + if(count($params) > 0) + { + if($params[0] instanceof TControl) + $params[0] = $params[0]->getID(); + } + $this->_actions->add(array($function => $params)); + } + + /** + * Client script to set the value of a particular input element. + * @param TControl|string control element to set the new value + * @param string new value + */ + public function setValue($input, $text) + { + $this->callClientFunction('Prado.Element.setValue', array($input, $text)); + } + + /** + * Client script to select/clear/check a drop down list, check box list, + * or radio button list. + * The second parameter determines the selection method. Valid methods are + * - Value, select or check by value + * - Index, select or check by list index (zero based index) + * - All, selects or checks all in the list + * - Clear, clears or selections or checks in the list + * - Invert, inverts the current selection or checks. + * @param TControl|string list control + * @param string selection method + * @param string|int the value or index to select/check. + */ + public function select($listControl, $method="Value", $valueOrIndex=null) + { + $this->callClientFunction('Prado.Element.select', array($listControl, $method, $valueOrIndex)); + } + + /** + * Client script to click on an element. This client-side function + * is unpredictable. + * @param TControl|string control element or element id + */ + public function click($control) + { + $this->callClientFunction('Prado.Element.click', $control); + } + + /** + * Client script to check or uncheck a checkbox or radio button. + * @param TControl|string control element or element id + * @param boolean check or uncheck the checkbox or radio button. + */ + public function check($checkbox, $checked=true) + { + $this->select($checkbox, "Value", $checked); + } + + /** + * Sets the attribute of a particular control. + * @param TControl|string control element or element id + * @param string attribute name + * @param string attribute value + */ + public function setAttribute($control, $name, $value) + { + $this->callClientFunction('Prado.Element.setAttribute',array($control, $name, $value)); + } + + /** + * Sets the options of a select input element. + * @param TControl|string control element or element id + * @param TCollection a list of new options + */ + public function setOptions($control, $items) + { + $options = array(); + foreach($items as $item) + $options[] = array($item->getText(),$item->getValue()); + $this->callClientFunction('Prado.Element.setOptions', array($control, $options)); + } + + /** + * Shows an element by changing its CSS display style as empty. + * @param TControl|string control element or element id + */ + public function show($element) + { + $this->callClientFunction('Element.show', $element); + } + + /** + * Hides an element by changing its CSS display style to "none". + * @param TControl|string control element or element id + */ + public function hide($element) + { + $this->callClientFunction('Element.hide', $element); + } + + /** + * Toggles the visibility of the element. + * @param TControl|string control element or element id + */ + public function toggle($element) + { + $this->callClientFunction('Element.toggle', $element); + } + + /** + * Removes an element from the HTML page. + * @param TControl|string control element or element id + */ + public function remove($element) + { + $this->callClientFunction('Element.remove', $element); + } + + /** + * Update the element's innerHTML with new content. + * @param TControl|string control element or element id + * @param TControl|string new HTML content, if content is of a TControl, the + * controls render method is called. + */ + public function update($element, $innerHTML) + { + if($innerHTML instanceof TControl) + $innerHTML = $innerHTML->render(); + $this->callClientFunction('Element.update', array($element, $innerHTML)); + } + + /** + * Replace the innerHTML of a content with fragements of the response body. + * @param TControl|string control element or element id + */ + public function replaceContent($element) + { + $this->callClientFunction('Prado.Element.replaceContent', $element); + } + + /** + * Add a Css class name to the element. + * @param TControl|string control element or element id + * @param string CssClass name to add. + */ + public function addCssClass($element, $cssClass) + { + $this->callClientFunction('Element.addClassName', array($element, $cssClass)); + } + + /** + * Remove a Css class name from the element. + * @param TControl|string control element or element id + * @param string CssClass name to remove. + */ + public function removeCssClass($element, $cssClass) + { + $this->callClientFunction('Element.removeClassName', array($element, $cssClass)); + } + + /** + * Sets the CssClass of an element. + * @param TControl|string control element or element id + * @param string new CssClass name for the element. + */ + public function setCssClass($element, $cssClass) + { + $this->callClientFunction('Prado.Element.CssClass.set', array($element, $cssClass)); + } + + /** + * Scroll the top of the browser viewing area to the location of the + * element. + * @param TControl|string control element or element id + */ + public function scrollTo($element) + { + $this->callClientFunction('Element.scrollTo', $element); + } + + /** + * Sets the style of element. The style must be a key-value array where the + * key is the style property and the value is the style value. + * @param TControl|string control element or element id + * @param array list of key-value pairs as style property and style value. + */ + public function setStyle($element, $styles) + { + $this->callClientFunction('Element.setStyle', array($element, $styles)); + } + + /** + * Insert a HTML fragement after the element. + * @param TControl|string control element or element id + * @param TControl|string HTML fragement, otherwise if TControl, its render + * method will be called. + */ + public function insertAfter($element, $innerHTML) + { + if($innerHTML instanceof TControl) + $innerHTML = $innerHTML->render(); + $this->callClientFunction('Prado.Element.Insert.After', array($element, $innerHTML)); + } + + /** + * Insert a HTML fragement before the element. + * @param TControl|string control element or element id + * @param TControl|string HTML fragement, otherwise if TControl, its render + * method will be called. + */ + public function insertBefore($element, $innerHTML) + { + if($innerHTML instanceof TControl) + $innerHTML = $innerHTML->render(); + $this->callClientFunction('Prado.Element.Insert.Before', array($element, $innerHTML)); + } + + /** + * Insert a HTML fragement below the element. + * @param TControl|string control element or element id + * @param TControl|string HTML fragement, otherwise if TControl, its render + * method will be called. + */ + public function insertBelow($element, $innerHTML) + { + if($innerHTML instanceof TControl) + $innerHTML = $innerHTML->render(); + $this->callClientFunction('Prado.Element.Insert.Below', array($element, $innerHTML)); + } + + /** + * Insert a HTML fragement above the element. + * @param TControl|string control element or element id + * @param TControl|string HTML fragement, otherwise if TControl, its render + * method will be called. + */ + public function insertAbove($element, $innerHTML) + { + if($innerHTML instanceof TControl) + $innerHTML = $innerHTML->render(); + $this->callClientFunction('Prado.Element.Insert.Above', array($element, $innerHTML)); + } + + /** + * Add a visual effect the element. + * @param string visual effect function name. + * @param TControl|string control element or element id + * @param array visual effect key-value pair options. + */ + public function visualEffect($type, $element, $options=null) + { + $this->callClientFunction($type, is_array($options) ? array($element, $options) : $element); + } + + /** + * Visual Effect: Gradually make the element appear. + * @param TControl|string control element or element id + * @param array visual effect key-value pair options. + */ + public function appear($element, $options=null) + { + $this->visualEffect('Effect.Appear', $element, $options); + } + + /** + * Visual Effect: Blind down. + * @param TControl|string control element or element id + * @param array visual effect key-value pair options. + */ + public function blindDown($element, $options=null) + { + $this->visualEffect('Effect.BlindDown', $element, $options); + } + + /** + * Visual Effect: Blind up. + * @param TControl|string control element or element id + * @param array visual effect key-value pair options. + */ + public function blindUp($element, $options=null) + { + $this->visualEffect('Effect.BlindUp', $element, $options); + + } + + /** + * Visual Effect: Drop out. + * @param TControl|string control element or element id + * @param array visual effect key-value pair options. + */ + public function dropOut($element, $options=null) + { + $this->visualEffect('Effect.DropOut', $element, $options); + } + + /** + * Visual Effect: Gradually fade the element. + * @param TControl|string control element or element id + * @param array visual effect key-value pair options. + */ + public function fade($element, $options=null) + { + $this->visualEffect('Effect.Fade', $element, $options); + } + + /** + * Visual Effect: Fold. + * @param TControl|string control element or element id + * @param array visual effect key-value pair options. + */ + public function fold($element, $options = null) + { + $this->visualEffect('Effect.Fold', $element, $options); + } + + /** + * Visual Effect: Gradually make an element grow to a predetermined size. + * @param TControl|string control element or element id + * @param array visual effect key-value pair options. + */ + public function grow($element, $options=null) + { + $this->visualEffect('Effect.Grow', $element, $options); + } + + /** + * Visual Effect: Gradually grow and fade the element. + * @param TControl|string control element or element id + * @param array visual effect key-value pair options. + */ + public function puff($element, $options=null) + { + $this->visualEffect('Effect.Puff', $element, $options); + } + + /** + * Visual Effect: Pulsate. + * @param TControl|string control element or element id + * @param array visual effect key-value pair options. + */ + public function pulsate($element, $options=null) + { + $this->visualEffect('Effect.Pulsate', $element, $options); + } + + /** + * Visual Effect: Shake the element. + * @param TControl|string control element or element id + * @param array visual effect key-value pair options. + */ + public function shake($element, $options=null) + { + $this->visualEffect('Effect.Shake', $element, $options); + } + + /** + * Visual Effect: Shrink the element. + * @param TControl|string control element or element id + * @param array visual effect key-value pair options. + */ + public function shrink($element, $options=null) + { + $this->visualEffect('Effect.Shrink', $element, $options); + } + + /** + * Visual Effect: Slide down. + * @param TControl|string control element or element id + * @param array visual effect key-value pair options. + */ + public function slideDown($element, $options=null) + { + $this->visualEffect('Effect.SlideDown', $element, $options); + } + + /** + * Visual Effect: Side up. + * @param TControl|string control element or element id + * @param array visual effect key-value pair options. + */ + public function slideUp($element, $options=null) + { + $this->visualEffect('Effect.SlideUp', $element, $options); + } + + /** + * Visual Effect: Squish the element. + * @param TControl|string control element or element id + * @param array visual effect key-value pair options. + */ + public function squish($element, $options=null) + { + $this->visualEffect('Effect.Squish', $element, $options); + } + + /** + * Visual Effect: Switch Off effect. + * @param TControl|string control element or element id + * @param array visual effect key-value pair options. + */ + public function switchOff($element, $options=null) + { + $this->visualEffect('Effect.SwitchOff', $element, $options); + } + + /** + * Visual Effect: High light the element for about 2 seconds. + * @param TControl|string control element or element id + * @param array visual effect key-value pair options. + */ + public function highlight($element, $options=null) + { + $this->visualEffect('Effect.Highlight', $element, $options); + } +} + +?> -- cgit v1.2.3