package fr.openwide.core.wicket.more.console.maintenance.task.component; import java.util.Collection; import java.util.List; import org.apache.wicket.injection.Injector; 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.spring.injection.annot.SpringBean; import com.google.common.collect.Lists; import fr.openwide.core.jpa.more.business.task.model.IQueueId; import fr.openwide.core.jpa.more.business.task.service.IQueuedTaskHolderManager; public class TaskQueueIdListMultipleChoice extends ListMultipleChoice<String> { private static final long serialVersionUID = 3147073422245294521L; private static final String DEFAULT_QUEUE_ID_VALUE = IQueueId.RESERVED_DEFAULT_QUEUE_ID_STRING; public TaskQueueIdListMultipleChoice(String id, IModel<? extends Collection<String>> typeListModel) { super(id, typeListModel, new QueueIdsChoicesModel()); setChoiceRenderer(new QueueIdChoiceRenderer()); } private static class QueueIdsChoicesModel extends LoadableDetachableModel<List<String>> { private static final long serialVersionUID = 1L; @SpringBean private IQueuedTaskHolderManager taskManager; public QueueIdsChoicesModel() { Injector.get().inject(this); } @Override protected List<String> load() { List<String> result = Lists.newArrayList(); result.add(null); for (IQueueId queueId : taskManager.getQueueIds()) { result.add(queueId.getUniqueStringId()); } return result; } } private class QueueIdChoiceRenderer extends ChoiceRenderer<String> { private static final long serialVersionUID = 1L; @Override public Object getDisplayValue(String object) { if (object == null) { return getString("console.maintenance.task.common.queue.default"); } return object; } @Override public String getIdValue(String object, int index) { if (object == null) { return DEFAULT_QUEUE_ID_VALUE; } return object; } } }