package lt.inventi.wicket.component.breadcrumb.collapse;
import java.util.List;
import lt.inventi.wicket.component.breadcrumb.BEquality;
import lt.inventi.wicket.component.breadcrumb.Breadcrumb;
public class RepeatingBreadcrumbCollapser implements IBreadcrumbCollapser {
private final int timesToRepeatBeforeCollapse;
private final BEquality<Breadcrumb> collapsibilityEq;
public RepeatingBreadcrumbCollapser(int timesToRepeatBeforeCollapse, BEquality<Breadcrumb> collapsibilityEq) {
this.timesToRepeatBeforeCollapse = timesToRepeatBeforeCollapse;
this.collapsibilityEq = collapsibilityEq;
}
@Override
public List<DisplayedBreadcrumb> collapse(List<Breadcrumb> crumbs) {
return CollapseUtils.collapse(crumbs, new BEquality<Breadcrumb>() {
@Override
public boolean equal(Breadcrumb a, Breadcrumb b) {
return a == b;
}
}, collapsibilityEq, new BFun<Breadcrumb, DisplayedBreadcrumb>() {
@Override
public DisplayedBreadcrumb apply(Breadcrumb f) {
return new SingleDisplayedBreadcrumb(f.title(), f);
}
}, new BFun<Iterable<Breadcrumb>, DisplayedBreadcrumb>() {
@Override
public DisplayedBreadcrumb apply(Iterable<Breadcrumb> f) {
return new CollapsedDisplayedBreadcrumb(f);
}
}, timesToRepeatBeforeCollapse);
}
}