You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

import wicket.markup.html.WebPage;
import wicket.markup.html.panel.FeedbackPanel;
import wicket.markup.html.form.Form;
import wicket.markup.html.form.TextField;
import wicket.markup.html.form.Button;
import wicket.markup.html.link.Link;
import wicket.markup.html.basic.Label;
import wicket.markup.html.list.ListView;
import wicket.markup.html.list.ListItem;
import wicket.model.CompoundPropertyModel;
import wicket.IFeedback;

import java.util.List;

class PersonList extends WebPage {
{panel}
    private List peopleList;
{panel}

{panel}
    public PersonList(final List peopleList) {
        this.peopleList = peopleList;
        this.peopleList.add(new Person("Lila"));
        this.peopleList.add(new Person("Bender"));
        this.peopleList.add(new Person("Fry"));
{panel}

{panel}
        add(new ListView("peopleList", this.peopleList) {
            protected void populateItem(ListItem listItem) {
                final Person person = (Person) listItem.getModelObject();
                add(new Label("name", person.getName()));
                add(new Link("editPerson") {
{panel}

{panel}
                    public void onClick() {
                        setResponsePage(new PersonEdit(person, peopleList));
                    }
                });
            }
        });
{panel}

{panel}
        add(new Link("newPerson") {
{panel}

{panel}
            public void onClick() {
                setResponsePage(new PersonEdit(new Person(), peopleList));
            }
        });
    }
{panel}
}

class PersonEdit extends WebPage {
{panel}
    private FeedbackPanel feedbackPanel;
    private Person person;
    private List peopleList;
{panel}

{panel}
    public PersonEdit(Person person, List peopleList) {
        feedbackPanel = new FeedbackPanel("feedbackPanel");
        add(feedbackPanel);
{panel}

{panel}
        add(new PersonForm("personForm", person, feedbackPanel));
    }
{panel}

{panel}
    class PersonForm extends Form {
        public PersonForm(String s, Person person, IFeedback iFeedback) {
            super(s, new CompoundPropertyModel(person), iFeedback);
            add(new TextField("name"));
            add(new Button("save"));
        }
{panel}

{panel}
        public void onSubmit() {
            if (!peopleList.contains(person)) {
                peopleList.add(person);
            }
            setResponsePage(new PersonList(peopleList));
        }
    }
{panel}
}


class Person {
{panel}
    public Person() {
    }
{panel}

{panel}
    public Person(String name) {
        this.name = name;
    }
{panel}

{panel}
    public String getName() {
        return name;
    }
{panel}

{panel}
    public void setName(String name) {
        this.name = name;
    }
{panel}

{panel}
    private String name;
{panel}
}

Click on "Discussion" above for another way of doing it.

  • No labels