Subversion Repositories Applications.papyrus

Rev

Blame | Last modification | View Log | RSS feed

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">
<html>
        <head>
                <title>Testing dojo.behavior</title>
                <style type="text/css">
                        @import "../resources/dojo.css";
                </style>
                <script type="text/javascript" 
                        src="../dojo.js" djConfig="isDebug: false"></script>
                <script type="text/javascript">
                        dojo.require("doh.runner");
                        dojo.require("dojo.behavior");

                        var applyCount = 0;

                        var behaviorObj = {
                                ".bar":                 function(elem){ 
                                        dojo.style(elem, "opacity", 0.5);
                                        applyCount++;
                                },
                                ".foo > span":  function(elem){ 
                                        elem.style.fontStyle = "italic";
                                        applyCount++;
                                }
                        }

                        var topicCount = 0;
                        dojo.subscribe("/foo", function(){ topicCount++; });

                        // no behaviors should be executed when onload fires
                        dojo.addOnLoad(function(){
                                doh.register("t", 
                                        [
                                                function add(t){
                                                        t.f(dojo.behavior._behaviors[".bar"]);
                                                        t.f(dojo.behavior._behaviors[".foo > span"]);
                                                        dojo.behavior.add(behaviorObj);
                                                        // make sure they got plopped in
                                                        t.t(dojo.behavior._behaviors[".bar"]);
                                                        t.is(1, dojo.behavior._behaviors[".bar"].length);
                                                        t.t(dojo.behavior._behaviors[".foo > span"]);
                                                        t.is(1, dojo.behavior._behaviors[".foo > span"].length);
                                                },
                                                function apply(t){
                                                        t.is(0, applyCount);
                                                        dojo.behavior.apply();
                                                        t.is(2, applyCount);

                                                        // reapply and make sure we only match once
                                                        dojo.behavior.apply();
                                                        t.is(2, applyCount);
                                                },
                                                function reapply(t){
                                                        t.is(2, applyCount);
                                                        // add the rules again
                                                        dojo.behavior.add(behaviorObj);
                                                        dojo.behavior.apply();
                                                        t.is(4, applyCount);
                                                        // dojo.behavior.apply();
                                                        // t.is(4, applyCount);
                                                        // dojo.query(".bar").styles("opacity", 1.0);
                                                },
                                                function topics(t){
                                                        t.is(0, topicCount);
                                                        dojo.behavior.add({ ".foo": "/foo" });
                                                        dojo.behavior.apply();
                                                        t.is(2, topicCount);

                                                        dojo.behavior.add({ ".foo": {
                                                                        "onfocus": "/foo" 
                                                                }
                                                        });
                                                        dojo.behavior.apply();
                                                        t.is(2, topicCount);
                                                        dojo.byId("blah").focus();
                                                        t.is(3, topicCount);
                                                        dojo.byId("blah").blur();
                                                        dojo.byId("blah").focus();
                                                        t.is(4, topicCount);

                                                }
                                        ]
                                );
                                doh.run();
                        });
                </script>
        </head>
        <body>
                <div class="foo" id="fooOne">
                        <span>.foo &gt; span</span>     
                        <div class="bar">
                                <span>.foo &gt; .bar &gt; span</span>   
                        </div>
                </div>
                <input type="text" id="blah" class="foo blah" name="thinger" value="thinger">
        </body>
</html>