]> git.pond.sub.org Git - eow/blobdiff - static/dojo-release-1.1.1/dojox/wire/demos/markup/demo_ActionChaining.html
add Dojo 1.1.1
[eow] / static / dojo-release-1.1.1 / dojox / wire / demos / markup / demo_ActionChaining.html
diff --git a/static/dojo-release-1.1.1/dojox/wire/demos/markup/demo_ActionChaining.html b/static/dojo-release-1.1.1/dojox/wire/demos/markup/demo_ActionChaining.html
new file mode 100644 (file)
index 0000000..596d6ec
--- /dev/null
@@ -0,0 +1,108 @@
+<!--
+       This file demonstrates how the dojox.wire code can be used to do declarative
+       wiring of events.  Specifically, it shows how you can chain actions together
+       in a sequence.  In this case the setting of a value on one textbox triggers a 
+       copy over to another textbox.  That in turn triggers yet another copy to another
+       text box.
+-->
+<html>
+<head>
+       <title>Sample Action Chaining</title>
+       <style type="text/css">
+
+               @import "../../../../dijit/themes/tundra/tundra.css";
+               @import "../../../../dojo/resources/dojo.css";
+               @import "../../../../dijit/tests/css/dijitTests.css";
+               @import "../TableContainer.css";
+
+               .splitView {
+                       width: 90%;
+                       height: 90%;
+                       border: 1px solid #bfbfbf;
+                       border-collapse: separate;
+               }
+       </style>
+
+       <script type="text/javascript" src="../../../../dojo/dojo.js" djConfig="isDebug: true, parseOnLoad: true"></script>
+       <script type="text/javascript">
+               dojo.require("dojo.parser");
+               dojo.require("dojox.wire");
+               dojo.require("dojox.wire.ml.Invocation");
+               dojo.require("dojox.wire.ml.DataStore");
+               dojo.require("dojox.wire.ml.Transfer");
+               dojo.require("dojox.wire.ml.Data");
+               dojo.require("dijit.form.TextBox");
+       </script>
+</head>
+
+<body class="tundra">
+
+       <!-- Layout -->
+       <font size="3"><b>Demo of Chaining Actions:</b></font><br/><br/>
+       This demo shows how you can chain actions together to fire in a sequence.  
+       Such as the completion of setting one value on a widget triggers the setting of another value on the widget
+       <br/>
+       <br/>
+       <table>
+               <tr>
+                       <td>
+                               <div dojoType="dijit.form.TextBox" id="inputField" value="" size="50"></div>
+                       </td>
+               </tr>
+               <tr>
+                       <td>
+                               <div dojoType="dijit.form.TextBox" id="targetField1" value="" disabled="true" size="50"></div>
+                       </td>
+               </tr>
+               <tr>
+                       <td>
+                               <div dojoType="dijit.form.TextBox" id="targetField2" value="" disabled="true" size="50"></div>
+                       </td>
+               </tr>
+       </table>
+
+
+       <!-------------------------------- Using dojox.wire, declaratively wire up the widgets. --------------------------->
+
+       <!--
+               This is an example of using the declarative data value definition.
+               These are effectively declarative variables to act as placeholders
+               for data values.
+       -->
+       <div dojoType="dojox.wire.ml.Data"
+               id="data">
+               <div dojoType="dojox.wire.ml.DataProperty"
+                       name="tempData"
+                       value="">
+               </div>
+       </div>
+
+       <!-- 
+               Whenever a key is entered into the textbox, copy the value somewhere, then invoke a method on another widget, in this case
+               on just another text box.
+       -->
+       <div dojoType="dojox.wire.ml.Action"
+               id="action1"
+               trigger="inputField"
+               triggerEvent="onkeyup">
+               <div dojoType="dojox.wire.ml.Invocation" object="inputField"    method="getValue" result="data.tempData"></div>
+               <div dojoType="dojox.wire.ml.Invocation" id="targetCopy" object="targetField1"  method="setValue" parameters="data.tempData"></div>
+       </div>    
+
+       <!-- 
+               Whenever the primary cloning invocation completes, invoke a secondary cloning action.
+       -->
+       <div dojoType="dojox.wire.ml.Action"
+               id="action2"
+               trigger="targetCopy"
+               triggerEvent="onComplete">
+               <!--
+                       Note that this uses the basic 'property' form of copying the property over and setting it.  The Wire
+                       code supports both getX and setX functions of setting a property as well as direct access.  It first looks
+                       for the getX/setX functions and if present, uses them.  If missing, it will just do direct access.  Because
+                       of the standard getValue/setValue API of dijit form widgets, these transfers work really well and are very compact.   
+               -->
+               <div dojoType="dojox.wire.ml.Transfer" source="targetField1.value" target="targetField2.value"></div>
+       </div>    
+</body>
+</html>