package com.evolveum.midpoint.web.page.admin.reports.component;
import java.util.List;
import java.util.function.Function;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.util.ListModel;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
public class SingleValueChoosePanel<U, T extends ObjectType> extends ConvertingMultiValueChoosePanel<U,T> {
private static final long serialVersionUID = 1L;
private IModel<U> singleTargetModel;
public SingleValueChoosePanel(String id, List<Class<? extends T>> types,
Function<T, U> transformFunction, IModel<U> targetModel) {
super(id, types, transformFunction, new ListModel<U>(), false);
singleTargetModel = targetModel;
}
@Override
protected void choosePerformedHook(AjaxRequestTarget target, List<T> selected) {
super.choosePerformedHook(target, selected);
if(selected != null) {
U transformedSelectedObject = selected.stream()
.findFirst()
.map(this::transform)
.orElse(null);
AuditLogViewerPanel.LOGGER.debug("Setting model object to {}", transformedSelectedObject);
singleTargetModel.setObject(transformedSelectedObject);
}
}
@Override
protected void removePerformedHook(AjaxRequestTarget target, T value) {
super.removePerformedHook(target, value);
singleTargetModel.setObject(null);
}
}