package lt.inventi.wicket.component.breadcrumb; import org.apache.wicket.markup.html.link.Link; import org.apache.wicket.model.IModel; /** * This is kind of a hack and doesn't work with WicketTester. Tester resolves * the URL for the link with a {@code PageInstanceMapper} as this type of link * is an instance of a {@link Link}. Thus, the link becomes stateful. * <p> * However, this way links become copy-paste'able. * * @author zhilvis, vplatonov * */ class BreadcrumbLink extends Link<IBreadcrumbTargetProvider> { BreadcrumbLink(String id, IModel<IBreadcrumbTargetProvider> model) { super(id, model); } @Override public void onClick() { if (BreadcrumbsSettings.useStatefulBreadcrumbLinks()) { getRequestCycle().scheduleRequestHandlerAfterCurrent(getModelObject().getHandler()); } else { throw new IllegalStateException("#onClick invoked for a stateless breadcrumb link " + this + "!"); } } @Override protected CharSequence getURL() { if (BreadcrumbsSettings.useStatefulBreadcrumbLinks()) { return super.getURL(); } return getModelObject().getURL(getRequestCycle()); } @Override protected boolean getStatelessHint() { return !BreadcrumbsSettings.useStatefulBreadcrumbLinks(); } }