package fr.openwide.core.wicket.more.console.maintenance.task.component; import java.util.Arrays; import java.util.Collection; import java.util.List; import org.apache.wicket.markup.html.form.ChoiceRenderer; import org.apache.wicket.markup.html.form.ListMultipleChoice; import org.apache.wicket.model.IModel; import org.apache.wicket.model.LoadableDetachableModel; import org.apache.wicket.model.Model; import org.apache.wicket.model.StringResourceModel; import org.apache.wicket.util.lang.Classes; import fr.openwide.core.jpa.more.business.task.util.TaskStatus; public class TaskStatusListMultipleChoice extends ListMultipleChoice<TaskStatus> { private static final long serialVersionUID = 3147073422245294521L; public TaskStatusListMultipleChoice(String id, IModel<? extends Collection<TaskStatus>> statusListModel) { super(id, statusListModel, new LoadableDetachableModel<List<TaskStatus>>() { private static final long serialVersionUID = 1L; @Override protected List<TaskStatus> load() { return Arrays.asList(TaskStatus.values()); } }); setChoiceRenderer(new TaskStatusChoiceRenderer()); } private class TaskStatusChoiceRenderer extends ChoiceRenderer<TaskStatus> { private static final long serialVersionUID = 1L; @Override public Object getDisplayValue(final TaskStatus object) { return object != null ? new StringResourceModel(Classes.simpleName(TaskStatus.class) + ".${}", TaskStatusListMultipleChoice.this, Model.of(object.name())).getString() : ""; } @Override public String getIdValue(TaskStatus object, int index) { return object != null ? String.valueOf(index) : "-1"; } } }