package fr.openwide.core.wicket.more.markup.html.template.model; import java.io.Serializable; import org.apache.wicket.Component; import org.apache.wicket.Page; import org.apache.wicket.model.IModel; import org.apache.wicket.request.mapper.parameter.PageParameters; import fr.openwide.core.wicket.more.link.descriptor.generator.ILinkGenerator; import fr.openwide.core.wicket.more.markup.html.template.component.LinkBreadCrumbElementPanel; import fr.openwide.core.wicket.more.markup.html.template.component.LinkGeneratorBreadCrumbElementPanel; import fr.openwide.core.wicket.more.markup.html.template.component.SimpleBreadCrumbElementPanel; @SuppressWarnings("deprecation") public class BreadCrumbElement implements Serializable { private static final long serialVersionUID = -44367801976105581L; private IModel<String> labelModel; private ILinkGenerator linkGenerator; private Class<? extends Page> pageClass; private PageParameters pageParameters; public BreadCrumbElement(IModel<String> labelModel) { this.labelModel = labelModel; } @Deprecated public BreadCrumbElement(IModel<String> labelModel, Class<? extends Page> pageClass) { this(labelModel, pageClass, null); } @Deprecated public BreadCrumbElement(IModel<String> labelModel, Class<? extends Page> pageClass, PageParameters pageParameters) { this.labelModel = labelModel; this.pageClass = pageClass; this.pageParameters = pageParameters; } public BreadCrumbElement(IModel<String> labelModel, ILinkGenerator linkGenerator) { this.labelModel = labelModel; this.linkGenerator = linkGenerator; } public IModel<String> getLabelModel() { return labelModel; } @Deprecated public Class<? extends Page> getPageClass() { return pageClass; } @Deprecated public PageParameters getPageParameters() { return pageParameters; } public ILinkGenerator getLinkGenerator() { return linkGenerator; } public Component component(String wicketId, BreadCrumbMarkupTagRenderingBehavior renderingBehavior) { if (linkGenerator != null) { return new LinkGeneratorBreadCrumbElementPanel(wicketId, this, renderingBehavior); } else { if (pageClass != null) { return new LinkBreadCrumbElementPanel(wicketId, this, renderingBehavior); } else { return new SimpleBreadCrumbElementPanel(wicketId, this, renderingBehavior); } } } public void detach() { if (labelModel != null) { labelModel.detach(); } } }