package org.appfuse.webapp;
import de.agilecoders.wicket.core.Bootstrap;
import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationMessage;
import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel;
import org.apache.wicket.markup.head.CssHeaderItem;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.request.IRequestParameters;
import org.apache.wicket.util.time.Duration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.ServletContext;
/**
* Abstract WebPage for every page in a project.
*
* @author Marcin ZajÄ…czkowski, 2011-02-07
*/
public abstract class AbstractWebPage extends WebPage {
private static final String LOCALE_REQUEST_PARAMETER_NAME = "locale";
protected final Logger log = LoggerFactory.getLogger(getClass());
protected ServletContext getServletContext() {
return ((WebApplication)getApplication()).getServletContext();
}
protected NotificationPanel createFeedbackPanel() {
return new NotificationPanel("feedback");
}
@Override
public void renderHead(IHeaderResponse response) {
super.renderHead(response);
Bootstrap.renderHead(response);
addCommonStyles(response);
addCommonScripts(response);
}
private void addCommonStyles(IHeaderResponse response) {
response.render(CssHeaderItem.forUrl("styles/style.css"));
}
private void addCommonScripts(IHeaderResponse response) {
response.render(JavaScriptHeaderItem.forUrl("scripts/script.js"));
}
@Override
protected void onConfigure() {
super.onConfigure();
changeLocaleIfRequestedByRequestParameter();
}
private void changeLocaleIfRequestedByRequestParameter() {
IRequestParameters queryParameters = getRequest().getQueryParameters();
if (queryParameters.getParameterNames().contains(LOCALE_REQUEST_PARAMETER_NAME)) {
//with "locale" GET parameter available LocaleFilter overrides getLocale() for request with that value
getSession().setLocale(getRequest().getLocale());
}
}
protected NotificationMessage createDefaultInfoNotificationMessage(IModel<String> messageModel) {
return new NotificationMessage(messageModel)
.hideAfter(Duration.seconds(5));
}
protected Label createPageTitleTag(String resourceKey) {
return new Label("pageTitle", new ResourceModel(resourceKey));
}
protected Label createPageHeading(String resourceKey) {
return new Label("pageHeading", new ResourceModel(resourceKey));
}
protected Label createPageMessage(String resourceKey) {
return new Label("pageMessage", new ResourceModel(resourceKey));
}
}