Donnerstag, 17. September 2009

Favicon with Wicket and HeaderContributer

Based on Michael's example, I did a complete example for a Wicket header contributer generating a favicon entry:

public class FavIconHeaderContributor extends AbstractHeaderContributor {

private static final long serialVersionUID = 1L;

private final FavIconContributor contributor;

private static final class FavIconContributor implements IHeaderContributor {

private static final long serialVersionUID = 1L;

ResourceReference _resourceReference;

public FavIconContributor(ResourceReference resourceReference) {
_resourceReference = resourceReference;
}

public void renderHead(IHeaderResponse response) {
CharSequence url = RequestCycle.get().urlFor(_resourceReference);
response.renderString(getFavIconReference(url));
}

private CharSequence getFavIconReference(CharSequence url) {
StringBuilder sb = new StringBuilder();
sb.append("<link rel=\"shortcut icon\" href=\"");
sb.append(url);
sb.append("\" type=\"image/x-icon\">\n");
return sb.toString();
}

}

public FavIconHeaderContributor(ResourceReference resourceReference) {
contributor = new FavIconContributor(resourceReference);
}

@Override
public final IHeaderContributor[] getHeaderContributors() {
return new IHeaderContributor[] { contributor };
}

@Override
public String toString() {
return contributor._resourceReference.getName();
}

}