package fr.openwide.core.wicket.more.markup.html.template.component;
import java.util.List;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.panel.GenericPanel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import fr.openwide.core.wicket.more.condition.Condition;
import fr.openwide.core.wicket.more.markup.html.template.model.BreadCrumbElement;
import fr.openwide.core.wicket.more.markup.html.template.model.BreadCrumbElementListConcatModel;
import fr.openwide.core.wicket.more.markup.html.template.model.BreadCrumbMarkupTagRenderingBehavior;
import fr.openwide.core.wicket.more.model.ReadOnlyModel;
public class BodyBreadCrumbPanel extends GenericPanel<List<BreadCrumbElement>> {
private static final long serialVersionUID = -3398120588294325073L;
protected IModel<String> dividerModel = ReadOnlyModel.of(Model.of("/"));
private boolean trailingSeparator = false;
public BodyBreadCrumbPanel(
String id,
IModel<List<BreadCrumbElement>> prependedBreadCrumbElementsModel,
IModel<List<BreadCrumbElement>> breadCrumbElementsModel) {
this(id, prependedBreadCrumbElementsModel, breadCrumbElementsModel, 0);
}
public BodyBreadCrumbPanel(
String id,
IModel<List<BreadCrumbElement>> prependedBreadCrumbElementsModel,
IModel<List<BreadCrumbElement>> breadCrumbElementsModel, int numberOfElementsToSubstract) {
super(id, new BreadCrumbElementListConcatModel(prependedBreadCrumbElementsModel, breadCrumbElementsModel, numberOfElementsToSubstract));
}
@Override
protected void onInitialize() {
super.onInitialize();
add(new BreadCrumbListView("breadCrumbElementListView", getModel(), BreadCrumbMarkupTagRenderingBehavior.HTML_BODY, dividerModel));
add(Condition.collectionModelNotEmpty(getModel()).thenShowInternal());
add(new WebMarkupContainer("trailingLi") {
private static final long serialVersionUID = 1L;
@Override
protected void onConfigure() {
super.onConfigure();
setVisible(trailingSeparator);
}
});
}
public BodyBreadCrumbPanel setDividerModel(IModel<String> dividerModel) {
this.dividerModel = dividerModel;
return this;
}
public BodyBreadCrumbPanel setTrailingSeparator(boolean trailingSeparator) {
this.trailingSeparator = trailingSeparator;
return this;
}
}