/* Copyright (c) 2001 - 2007 TOPP - www.openplans.org. All rights reserved.
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.web.wicket;
import java.util.HashMap;
import java.util.Map;
import org.apache.wicket.PageParameters;
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;
/**
* 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
*/
@SuppressWarnings("serial")
public class SimpleBookmarkableLink extends Panel {
BookmarkablePageLink link;
Label label;
public SimpleBookmarkableLink(String id, Class 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");
Map<String, String> paramMap = new HashMap<String, String>();
for (int i = 0; i < pageParams.length; i += 2) {
paramMap.put(pageParams[i], pageParams[i+1]);
}
return new PageParameters(paramMap);
}
public SimpleBookmarkableLink(String id, Class pageClass, IModel labelModel, PageParameters params) {
super(id, labelModel);
add(link = new BookmarkablePageLink("link", pageClass, params));
link.add(label = new Label("label", labelModel));
}
public BookmarkablePageLink getLink() {
return link;
}
public Label getLabel() {
return label;
}
}