package fr.openwide.core.wicket.more.console.maintenance.task.component;
import java.util.Collection;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.FormComponent;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.navigation.paging.IPageable;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.ResourceModel;
import fr.openwide.core.jpa.more.business.task.util.TaskResult;
import fr.openwide.core.jpa.more.business.task.util.TaskStatus;
import fr.openwide.core.wicket.markup.html.basic.CountLabel;
import fr.openwide.core.wicket.more.console.maintenance.task.model.QueuedTaskHolderDataProvider;
import fr.openwide.core.wicket.more.markup.html.form.LabelPlaceholderBehavior;
public class TaskFilterPanel extends Panel {
private static final long serialVersionUID = -3803340118726908397L;
private final IPageable pageable;
public TaskFilterPanel(String id, final QueuedTaskHolderDataProvider queuedTaskHolderDataProvider,
IPageable pageable) {
super(id);
this.pageable = pageable;
final IModel<Long> rowCountModel = new LoadableDetachableModel<Long>() {
private static final long serialVersionUID = 1L;
@Override
protected Long load() {
return queuedTaskHolderDataProvider.size();
}
};
add(new CountLabel("topCount", "console.maintenance.task.common.count", rowCountModel) {
private static final long serialVersionUID = 1L;
@Override
protected void onConfigure() {
super.onConfigure();
setVisible(queuedTaskHolderDataProvider.size() > 0);
}
});
Form<Void> filterForm = new Form<Void>("filterForm") {
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit() {
super.onSubmit();
TaskFilterPanel.this.pageable.setCurrentPage(0);
}
};
add(filterForm);
FormComponent<String> name = new TextField<String>("name", queuedTaskHolderDataProvider.getNameModel());
name.setLabel(new ResourceModel("console.maintenance.task.common.name"));
name.add(new LabelPlaceholderBehavior());
filterForm.add(name);
FormComponent<Collection<String>> taskTypes = new TaskTypeListMultipleChoice("taskTypes",
queuedTaskHolderDataProvider.getTaskTypesModel());
filterForm.add(taskTypes);
FormComponent<Collection<String>> queueIds = new TaskQueueIdListMultipleChoice("queueIds",
queuedTaskHolderDataProvider.getQueueIdsModel());
filterForm.add(queueIds);
FormComponent<Collection<TaskStatus>> statuses = new TaskStatusListMultipleChoice("statuses",
queuedTaskHolderDataProvider.getStatusesModel());
filterForm.add(statuses);
FormComponent<Collection<TaskResult>> results = new TaskResultListMultipleChoice("results",
queuedTaskHolderDataProvider.getResultsModel());
filterForm.add(results);
}
}