package fr.openwide.core.basicapp.web.application.history.component;
import java.util.List;
import org.apache.wicket.markup.html.panel.GenericPanel;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import fr.openwide.core.basicapp.core.business.history.model.HistoryDifference;
import fr.openwide.core.basicapp.core.business.history.model.HistoryLog;
import fr.openwide.core.basicapp.core.util.binding.Bindings;
import fr.openwide.core.basicapp.web.application.history.component.factory.IHistoryComponentFactory;
import fr.openwide.core.wicket.markup.html.basic.CoreLabel;
import fr.openwide.core.wicket.more.model.BindingModel;
public class HistoryLogDetailColumnPanel extends GenericPanel<HistoryLog> {
private static final long serialVersionUID = 1188689543635870482L;
public HistoryLogDetailColumnPanel(String id, IModel<HistoryLog> model,
IHistoryComponentFactory historyComponentFactory, final Predicate<? super HistoryDifference> filter) {
super(id, model);
IModel<List<HistoryDifference>> historyDifferenceListModel = new AbstractReadOnlyModel<List<HistoryDifference>>() {
private static final long serialVersionUID = 1L;
@Override
public List<HistoryDifference> getObject() {
List<HistoryDifference> original = getModelObject().getDifferences();
if (filter == null) {
return original;
} else {
return Lists.newArrayList(Iterables.filter(
original,
filter
));
}
}
};
add(
new CoreLabel("action", BindingModel.of(model, Bindings.historyLog().eventType())),
new HistoryDifferenceListPanel("differences", historyDifferenceListModel, historyComponentFactory)
);
}
}