Forgot to say :  is for tapestry 4.1

Alex

On 9/10/06, Alexandru Dragomir <[EMAIL PROTECTED]> wrote:

Hi!

I took some dojo code, from their tests (hope nobody will be  upset .... )
, and i made a tapestry component out of it.
Is an animation and the good part is that is working.
Well the component is of no real use.. just a sample of how it can be
done.

But i'm not sure that this is the way it should be done.
I tried to attach the library in the first place but the message got
bounced.

So i pasted the files here.

If anybody has few minutes to try it and give any feedback would be great
!!
if not , maybe it helps somebody else..... who's looking for the same
thing. It was no more than copy/paste from dojo tests to tapestry.

To use it all you have to do is put this in the html file <span
jwcid="@Animation2" />
And you also have to take two more files from dojo svn :  html.style.jsand
html.display.js
The result is that you'll see some animations....
I can give more directions if needed.

By the way , i 've used the sample tests/animation/test_animation.html
found in dojo svn !

Thanks!

Alex



Animation.html
------------------------------
<style type="text/css">
    #Mover {
        position : absolute;
        background : #ccc;
        left : 200px;
        top : 200px;
    }

    #Repeat1 {
        position : absolute;
        background : red;
        top : 100px;
        left : 100px;
    }

    #circ {
        position : absolute;
        width : 4px;
        height : 4px;
        line-height : 1px;
        overflow : hidden;
        margin : -2px 0 0 -2px;
        background : #333;
        -moz-border-radius : 4px;
    }
</style>


<p>This demo kinda sucks, but you can see what goes on.</p>
        <a href="javascript:q.playPause()">Play/Pause</a> (sequence)
        |
        <a href="javascript:a.gotoPercent(35, true)">Goto 35% and play</a>
(move animation)
        <div id="Mover">I'm a mover</div>
        <div id="Repeat1" onclick=" r.play()">I repeat a few times!</div>
        <br />
        <div id="circ"></div>
        <a href="javascript:c.playPause()">Play/Pause</a> (circle, repeats
forever)



Animation.jwc
------------------------------
<?xml version="1.0"?>


<!DOCTYPE component-specification PUBLIC
  "-//Apache Software Foundation//Tapestry Specification 4.0//EN"
  "http://tapestry.apache.org/dtd/Tapestry_4_0.dtd";>

<component-specification class="animation.Animation">

<inject property="script" type="script" object="Animation.script"/>

</component-specification>


Animation.script
--------------------------------
<?xml version="1.0"?>
<!DOCTYPE script PUBLIC
  "-//Apache Software Foundation//Tapestry Script Specification 3.0//EN"
  " http://jakarta.apache.org/tapestry/dtd/Script_3_0.dtd";>
<script>
    <body>
        <unique>
            dojo.require("dojo.animation.*");
            dojo.require(" dojo.html.display");
            dojo.require("dojo.event.*");
        </unique>

        var Line = dojo.math.curves.Line;
        var Circle = dojo.math.curves.Circle;
        var Anim = dojo.animation.Animation;
    </body>
    <initialization>
    <![CDATA[
function init(){
                var line = new Line([200,200], [400, 20]);
                a = new Anim(line, 1000, 0);
                var mover = document.getElementById("Mover");
                a.handler = function(e) {
                    switch(e.type) {
                        case "play":
                            dojo.html.setOpacity(mover, 1);
                            break;
                        case "animate":
                            mover.style.left = e.x + "px";
                            mover.style.top = e.y + "px";
                            break;
                        case "end":
                            break;
                    }
                }

                b = new Anim(new Line([1],[0]), 500, 0);
                b.onAnimate = function(e) {
                    if(e.x){
                        dojo.html.setOpacity(mover, e.x);
                    }
                }

                q = new dojo.animation.AnimationSequence ();
                q.add(a, b);

                r = new Anim(new dojo.math.curves.Bezier([[100,100],
[80,80], [200,200], [400,30], [100,100]]), 2000, 0, 3);
                r.onAnimate = function(e) {
                    with( document.getElementById("Repeat1").style) {
                        left = e.x + "px";
                        top = e.y + "px";
                    }
                }

                // repeats forever (4th arg of -1)
                c = new dojo.animation.Animation(new Circle([500,120],
40), 1000, 0, -1);
                dojo.event.connect(c, "onAnimate", function(e) {
                    with(document.getElementById ("circ").style) {
                        left = e.x + "px";
                        top = e.y + "px";
                    }
                });
                c.play(true);
            }

            dojo.addOnLoad(init);
            ]]>
    </initialization>
</script>



Animation.java
---------------------------------

package animation;

import java.util.HashMap;
import java.util.Map;

import org.apache.tapestry.BaseComponent;
import org.apache.tapestry.IMarkupWriter;
import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.IScript ;
import org.apache.tapestry.PageRenderSupport;
import org.apache.tapestry.TapestryUtils;
import org.apache.tapestry.event.PageBeginRenderListener;
import org.apache.tapestry.event.PageEndRenderListener;
import org.apache.tapestry.event.PageEvent;


public abstract  class Animation extends BaseComponent{

    protected void renderComponent(IMarkupWriter writer ,IRequestCycle
cycle ) {
        super.renderComponent (writer, cycle);
        IScript sc = getScript();
        PageRenderSupport prs = TapestryUtils.getPageRenderSupport(cycle,
this);
        Map parms = new HashMap();
        sc.execute(this ,cycle, prs, parms);
    }



    public abstract IScript getScript();

}




Reply via email to