/* (c) 2014 - 2016 Open Source Geospatial Foundation - all rights reserved * (c) 2001 - 2013 OpenPlans * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.web.wicket; import org.apache.wicket.Page; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.link.BookmarkablePageLink; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.IModel; import org.apache.wicket.request.mapper.parameter.PageParameters; /** * A simple bookmarkable link with a label inside. This is a utility component, * avoid some boilerplate code in case the link is really just pointing to a bookmarkable * page without side effects * * @author Andrea Aime - OpenGeo */ public class SimpleBookmarkableLink extends Panel { private static final long serialVersionUID = -7688902365198291065L; BookmarkablePageLink<?> link; Label label; public <C extends Page> SimpleBookmarkableLink(String id, Class<C> pageClass, IModel<?> labelModel, String... pageParams) { this(id, pageClass, labelModel, toPageParameters(pageParams)); } private static PageParameters toPageParameters(String[] pageParams) { if(pageParams.length % 2 == 1) throw new IllegalArgumentException("The page parameters array should contain an even number of elements"); PageParameters result = new PageParameters(); for (int i = 0; i < pageParams.length; i += 2) { String name = pageParams[i]; String value = pageParams[i+1]; // starting with wicket 6 the value cannot be null, in that case the // param sould not be provided if(value != null) { result.add(name, value); } } return result; } public <C extends Page> SimpleBookmarkableLink(String id, Class<C> pageClass, IModel<?> labelModel, PageParameters params) { super(id, labelModel); add(link = new BookmarkablePageLink<Object>("link", pageClass, params)); link.add(label = new Label("label", labelModel)); } public BookmarkablePageLink<?> getLink() { return link; } public Label getLabel() { return label; } }