/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.wicket.util.tester.apps_3;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.Check;
import org.apache.wicket.markup.html.form.CheckBox;
import org.apache.wicket.markup.html.form.CheckBoxMultipleChoice;
import org.apache.wicket.markup.html.form.CheckGroup;
import org.apache.wicket.markup.html.form.ChoiceRenderer;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.IChoiceRenderer;
import org.apache.wicket.markup.html.form.ListChoice;
import org.apache.wicket.markup.html.form.ListMultipleChoice;
import org.apache.wicket.markup.html.form.Radio;
import org.apache.wicket.markup.html.form.RadioChoice;
import org.apache.wicket.markup.html.form.RadioGroup;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.util.tester.apps_1.Book;
/**
* @author Ingram Chen
*/
public class ChoicePage extends WebPage
{
private static final long serialVersionUID = 1L;
/** test DropDownChoice */
public Book dropDownChoice;
/** test ListChoice */
public Book listChoice;
/** test RadioChoice */
public Book radioChoice;
/** test RadioChoice */
public Book radioGroup;
/** test CheckBox initial value */
public boolean checkBox;
/** test CheckGroup initial value */
public List<Book> initialCheckGroup = new ArrayList<Book>();
/** test ListMultipleChoice initial values */
public List<Book> initialListMultipleChoice = new ArrayList<Book>();
/** test CheckBoxMultipleChoice initial values */
public List<Book> initialCheckBoxMultipleChoice = new ArrayList<Book>();
/** test CheckBoxMultipleChoice */
public List<Book> checkBoxMultipleChoice = new ArrayList<Book>();
/** test CheckGroup */
public List<Book> checkGroup = new ArrayList<Book>();
/** test ListMultipleChoice */
public List<Book> listMultipleChoice = new ArrayList<Book>();
/** test multiple button */
public boolean buttonPressed;
/** test multiple button */
public boolean anotherButtonPressed;
/**
* Test page for FormTester.select()
*
* @param candidateChoices
*/
public ChoicePage(List<Book> candidateChoices)
{
IChoiceRenderer<Book> bookChoiceRenderer = new ChoiceRenderer<>("name", "id");
Form<ChoicePage> form = new Form<ChoicePage>("choiceForm");
add(form);
form.setDefaultModel(new CompoundPropertyModel<>(this));
// setting initial values
dropDownChoice = candidateChoices.get(1);
listChoice = candidateChoices.get(3);
radioChoice = candidateChoices.get(2);
checkBox = true;
initialListMultipleChoice.add(candidateChoices.get(1));
initialListMultipleChoice.add(candidateChoices.get(2));
initialCheckBoxMultipleChoice.add(candidateChoices.get(0));
initialCheckBoxMultipleChoice.add(candidateChoices.get(3));
initialCheckGroup.add(candidateChoices.get(2));
initialCheckGroup.add(candidateChoices.get(3));
// single select family
form.add(new DropDownChoice<Book>("dropDownChoice", candidateChoices, bookChoiceRenderer));
form.add(new ListChoice<Book>("listChoice", candidateChoices, bookChoiceRenderer).setMaxRows(4));
form.add(new RadioChoice<Book>("radioChoice", candidateChoices, bookChoiceRenderer));
form.add(new CheckBox("checkBox"));
form.add(newRadioGroup(candidateChoices));
// multiple select family
form.add(new ListMultipleChoice<Book>("initialListMultipleChoice", candidateChoices,
bookChoiceRenderer));
form.add(new CheckBoxMultipleChoice<Book>("initialCheckBoxMultipleChoice",
candidateChoices, bookChoiceRenderer));
form.add(newCheckGroup("initialCheckGroup", candidateChoices));
form.add(new ListMultipleChoice<Book>("listMultipleChoice", candidateChoices,
bookChoiceRenderer).setMaxRows(4));
form.add(new CheckBoxMultipleChoice<Book>("checkBoxMultipleChoice", candidateChoices,
bookChoiceRenderer));
form.add(newCheckGroup("checkGroup", candidateChoices));
form.add(new Button("buttonWithModel", Model.of("ButtonWithModel"))
{
private static final long serialVersionUID = 1L;
@Override
public void onSubmit()
{
buttonPressed = true;
}
});
form.add(new Button("anotherButton")
{
private static final long serialVersionUID = 1L;
@Override
public void onSubmit()
{
anotherButtonPressed = true;
}
});
}
private <S extends Serializable> CheckGroup<S> newCheckGroup(final String id,
List<S> candidateChoices)
{
CheckGroup<S> checkGroupComponent = new CheckGroup<S>(id);
ListView<S> listView = new ListView<S>("loop", candidateChoices)
{
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(ListItem<S> item)
{
item.add(new Check<S>("check", new Model<S>(item.getModelObject())));
}
};
checkGroupComponent.add(listView);
return checkGroupComponent;
}
private RadioGroup<Book> newRadioGroup(List<Book> candidateChoices)
{
RadioGroup<Book> radioGroupComponent = new RadioGroup<Book>("radioGroup");
ListView<Book> listView = new ListView<Book>("loop", candidateChoices)
{
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(ListItem<Book> item)
{
item.add(new Radio<Book>("radio", new Model<Book>(item.getModelObject())));
}
};
radioGroupComponent.add(listView);
return radioGroupComponent;
}
}