CVS: TapestryBook/examples/src/java/examples DirectArea.java,NONE,1.1 JSPForm.java,NONE,1.1 DatePickerResult.java,NONE,1.1 Login.java,NONE,1.1 Toppings.java,NONE,1.1 ToppingsResult.java,NONE,1.1 DatePicker.java,NONE,1.1 JSP.java,NONE,1.1

Howard Lewis Ship <[email protected]> Fri, 11 Jul 2003 21:16:45 -0700
Newsgroups gmane.comp.java.tapestry.cvs
Message-ID <[email protected]>
Update of /cvsroot/tapestry/TapestryBook/examples/src/java/examples
In directory sc8-pr-cvs1:/tmp/cvs-serv6871/examples/src/java/examples

Added Files:
	DirectArea.java JSPForm.java DatePickerResult.java Login.java 
	Toppings.java ToppingsResult.java DatePicker.java JSP.java 
Log Message:
Reorganize examples application to reflect standard organization

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

import org.apache.tapestry.AbstractComponent;
import org.apache.tapestry.IActionListener;
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 IActionListener getListener();
    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());

        renderInformalParameters(writer, cycle);
    }

    public void trigger(IRequestCycle cycle)
    {
        IActionListener listener = getListener();

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

        listener.actionTriggered(this, cycle);
    }

    public boolean isStateful()
    {
        return false;
    }

}

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

import org.apache.tapestry.IExternalPage;
import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.html.BasePage;

public abstract class JSPForm extends BasePage implements IExternalPage
{
    protected abstract void setUserName(String userName);

    public void activateExternalPage(Object[] parameters, IRequestCycle cycle)
    {
        String userName = cycle.getRequestContext().getParameter("userName");
        setUserName(userName);
    }

}

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

import java.text.DateFormat;
import java.util.Date;

import org.apache.tapestry.html.BasePage;

public abstract class DatePickerResult extends BasePage
{
    public abstract void setDate(Date date);

    public DateFormat getDateFormat()
    {
        return DateFormat.getDateInstance(DateFormat.MEDIUM, getLocale());
    }
}

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

import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.html.BasePage;

/**
 *  Demonstration of very simple form support.
 *
 *  @author Howard Lewis Ship
 *  @version $Id: Login.java,v 1.1 2003/07/12 04:16:43 hship Exp $
 *
 **/

public abstract class Login extends BasePage
{
    // Abstract accessors provided by Tapestry in enhanced
    // subclass.  We only declare the accessors we need in code,
    // but the properties are always read/write.

    public abstract String getUserName();
    public abstract String getPassword();
    public abstract void setMessage(String message);

    public void login(IRequestCycle cycle)
    {
        if (isValidLogin(getUserName(), getPassword()))
        {
            cycle.activate("Main");
            return;
        }

        setMessage("Invalid user name or password.");
    }

    private boolean isValidLogin(String userName, String password)
    {
        return "tapestry".equalsIgnoreCase(userName);
    }

}

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

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.event.PageEvent;
import org.apache.tapestry.event.PageRenderListener;
import org.apache.tapestry.html.BasePage;

public abstract class Toppings extends BasePage implements PageRenderListener
{
    private static String[] TOPPINGS =
        { "Lettuce", "Tomato", "Cheese", "Onions", "Pickles", "Relish", "Mustard", "Ketchup" };

    public String[] getAllToppings()
    {
        return TOPPINGS;
    }

    public abstract String getTopping();

    public abstract void setSelectedToppings(Set toppings);

    public abstract Set getSelectedToppings();

    public boolean isToppingSelected()
    {
        return getSelectedToppings().contains(getTopping());
    }

    public void setToppingSelected(boolean toppingSelected)
    {
        if (toppingSelected)
            getSelectedToppings().add(getTopping());
        else
            getSelectedToppings().remove(getTopping());
    }

    public void selectToppings(IRequestCycle cycle)
    {
        String toppings = getToppingsList();

        ToppingsResult page = (ToppingsResult) cycle.getPage("ToppingsResult");
        page.setToppings(toppings);
        cycle.activate(page);
    }

    private String getToppingsList()
    {
        if (getSelectedToppings().isEmpty())
            return "No toppings.";

        StringBuffer buffer = new StringBuffer();

        int count = getSelectedToppings().size();

        int x = 0;
        Iterator i = getSelectedToppings().iterator();

        while (i.hasNext())
        {
            if (++x > 1)
            {
                if (x == count)
                    buffer.append(" and ");
                else
                    buffer.append(", ");
            }

            String topping = (String) i.next();

            buffer.append(topping);
        }

        buffer.append(".");

        return buffer.toString();
    }

    public void pageBeginRender(PageEvent event)
    {
        setSelectedToppings(new HashSet());
    }

}

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

import org.apache.tapestry.html.BasePage;

public abstract class ToppingsResult extends BasePage
{
	public abstract void setToppings(String toppings);
}

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

import java.util.Date;

import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.html.BasePage;


public abstract class DatePicker extends BasePage
{
	public abstract Date getDate();
	
	public void formSubmit(IRequestCycle cycle)
	{
		DatePickerResult page = (DatePickerResult)cycle.getPage("DatePickerResult");
		page.setDate(getDate());
		cycle.activate(page);
	}
}

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

import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.RedirectException;
import org.apache.tapestry.html.BasePage;


public class JSP extends BasePage
{
	public void displayPageTagDemo(IRequestCycle cycle)
	{
		throw new RedirectException("PageTagDemo.jsp");
	}
	
	public void displayExternalTagDemo(IRequestCycle cycle)
	{
		throw new RedirectException("ExternalTagDemo.jsp");
	}
}



-------------------------------------------------------
This SF.Net email sponsored by: Parasoft
Error proof Web apps, automate testing & more.
Download & eval WebKing and get a free book.
www.parasoft.com/bulletproofapps1