CVS: TapestryBook/examples/src/examples DirectArea.java,NONE,1.1

Howard Lewis Ship <[email protected]> Sat, 15 Mar 2003 18:55:43 -0800
Newsgroups gmane.comp.java.tapestry.cvs
Message-ID <[email protected]>
Update of /cvsroot/tapestry/TapestryBook/examples/src/examples
In directory sc8-pr-cvs1:/tmp/cvs-serv9012/examples/src/examples

Added Files:
	DirectArea.java 
Log Message:
Update book, adding chapter 06.

--- NEW FILE: DirectArea.java ---
package examples;

import org.apache.tapestry.AbstractComponent;
import org.apache.tapestry.IActionListener;
import org.apache.tapestry.IBinding;
import org.apache.tapestry.IDirect;
import org.apache.tapestry.IMarkupWriter;
import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.Tapestry;
import org.apache.tapestry.engine.IEngineService;
import org.apache.tapestry.engine.ILink;
import org.apache.tapestry.link.DirectLink;

public abstract class DirectArea extends AbstractComponent implements IDirect
{
    public abstract IBinding getListenerBinding();
    public abstract Object getParameters();

    protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle)
    {
        if (cycle.isRewinding())
            return;

        Object[] parameters = DirectLink.constructServiceParameters(getParameters());

        IEngineService service = cycle.getEngine().getService(Tapestry.DIRECT_SERVICE);
        ILink link = service.getLink(cycle, this, parameters);

        writer.beginEmpty("area");
        writer.attribute("href", link.getURL());

        generateAttributes(writer, cycle);
    }

    public void trigger(IRequestCycle cycle)
    {
        IBinding listenerBinding = getListenerBinding();

        IActionListener listener = null;

        listener = (IActionListener) listenerBinding.getObject("listener", IActionListener.class);

        if (listener == null)
            throw Tapestry.createRequiredParameterException(this, "listener");

        listener.actionTriggered(this, cycle);
    }

    public boolean isStateful()
    {
        return false;
    }

}



-------------------------------------------------------
This SF.net email is sponsored by:Crypto Challenge is now open! 
Get cracking and register here for some mind boggling fun and 
the chance of winning an Apple iPod:
http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0031en