package de.alpharogroup.swap; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.AjaxFallbackLink; import org.apache.wicket.ajax.markup.html.form.AjaxFallbackButton; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.markup.html.panel.Fragment; import org.apache.wicket.model.CompoundPropertyModel; import org.apache.wicket.model.IModel; public class PersonPanel extends SwapFragmentPanel<PersonModel> { private static final long serialVersionUID = 1L; public PersonPanel(String id, IModel<PersonModel> model) { super(id, model); setDefaultModel(new CompoundPropertyModel<PersonModel>(model)); setOutputMarkupPlaceholderTag(true); add(view = newFragmentView(FRAGMENT_ID)); edit = newFragmentEdit(FRAGMENT_ID); } /** * Creates the fragment to edit person. * * @return the fragment */ protected Fragment newFragmentEdit(final String id) { Fragment editFragment = new Fragment(id, "edit", this, getDefaultModel()); editFragment.setOutputMarkupPlaceholderTag(true); Form<PersonModel> form = new Form<PersonModel>("editPersonForm"); form.add(new TextField<String>("firstName")); form.add(new TextField<String>("lastName")); form.add(new TextField<String>("gender")); form.add(new TextField<String>("age")); form.add(new AjaxFallbackButton("submit", form) { private static final long serialVersionUID = 1L; public void onSubmit(final AjaxRequestTarget target, final Form<?> form) { target.add(edit); swapFragments(); } }); editFragment.add(form); return editFragment; } /** * Creates the fragment to view person. * * @return the fragment */ protected Fragment newFragmentView(final String id) { Fragment viewFragment = new Fragment(id, "view", this, getDefaultModel()); viewFragment.add(new AjaxFallbackLink<Object>("editLink") { private static final long serialVersionUID = 1L; @Override public void onClick(AjaxRequestTarget target) { swapFragments(); target.add(view); } }); viewFragment.add(new Label("firstName")); viewFragment.add(new Label("lastName")); viewFragment.add(new Label("gender")); viewFragment.add(new Label("age")); viewFragment.setOutputMarkupPlaceholderTag(true); return viewFragment; } }