/**
* Copyright (C) 2010 Asterios Raptis
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package de.alpharogroup.wicket.base.components.viewmode.examples;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import de.alpharogroup.test.objects.Gender;
import de.alpharogroup.test.objects.Person;
import de.alpharogroup.wicket.base.BasePage;
import de.alpharogroup.wicket.components.editable.textarea.EditableTextArea;
import de.alpharogroup.wicket.components.editable.textfield.EditableTextField;
import de.alpharogroup.wicket.components.labeled.checkbox.LabeledCheckboxPanel;
public class ViewOrEditPage extends BasePage
{
private static final long serialVersionUID = 1L;
private boolean enableFields = true;
public ViewOrEditPage(final PageParameters parameters)
{
super(parameters);
final Person person = new Person();
person.setGender(Gender.UNDEFINED);
person.setName("");
person.setAbout("bla");
person.setMarried(false);
setDefaultModel(Model.of(person));
final CompoundPropertyModel<Person> cpm = new CompoundPropertyModel<>(person);
final Form<Person> form = new Form<>("form", cpm);
add(form);
final EditableTextField<String> nameTextField = new EditableTextField<>("name",
new PropertyModel<>(person, "name"), Model.of("Name"));
form.add(nameTextField);
final EditableTextArea<String> about = new EditableTextArea<>("about",
new PropertyModel<>(person, "about"), Model.of("About"));
form.add(about);
final LabeledCheckboxPanel<Boolean, Person> married = new LabeledCheckboxPanel<>("married",
cpm, Model.of("Married:"));
form.add(married);
// Create submit button for the form
final Button submitButton = new AjaxButton("submitButton", form)
{
/**
* The serialVersionUID.
*/
private static final long serialVersionUID = 1L;
@Override
public void onSubmit(final AjaxRequestTarget target, final Form<?> form)
{
info("Person:" + getDefaultModelObjectAsString());
ViewOrEditPage.this.enableFields = !ViewOrEditPage.this.enableFields;
if (ViewOrEditPage.this.enableFields)
{
about.getSwapPanel().onSwapToEdit(target, form);
nameTextField.getSwapPanel().onSwapToEdit(target, form);
}
else
{
about.getSwapPanel().onSwapToView(target, form);
nameTextField.getSwapPanel().onSwapToView(target, form);
}
}
};
form.add(submitButton);
add(new FeedbackPanel("feedbackpanel"));
}
}