package org.github.etcd.viewer.html.pages;
import org.apache.wicket.Page;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.devutils.debugbar.DebugBar;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.panel.EmptyPanel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.StringResourceModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.github.etcd.viewer.html.resource.WebResources;
public class TemplatePage extends WebPage {
private static final long serialVersionUID = 1L;
public TemplatePage() {
super();
createPage();
}
public TemplatePage(IModel<?> model) {
super(model);
createPage();
}
public TemplatePage(PageParameters parameters) {
super(parameters);
createPage();
}
protected IModel<?> getPageTitleModel() {
return new StringResourceModel("page.title", this, getDefaultModel(), getDefaultPageTitle());
}
protected String getDefaultPageTitle() {
return "etcd viewer";
}
private Label title;
protected SelectRegistryPanel selectRegistryPanel;
private void createPage() {
add(title = new Label("title", new LoadableDetachableModel<Object>() {
private static final long serialVersionUID = 1L;
@Override
protected Object load() {
return getPageTitleModel().getObject();
}
}));
title.setOutputMarkupId(true);
if (getApplication().getDebugSettings().isDevelopmentUtilitiesEnabled()) {
add(new DebugBar("debug"));
} else {
add(new EmptyPanel("debug").setVisible(false));
}
add(createMenuItem("homeMenuItem", "home", HomePage.class));
add(createMenuItem("aboutMenuItem", "about", AboutPage.class));
add(selectRegistryPanel = new SelectRegistryPanel("selectRegistry"));
selectRegistryPanel.setOutputMarkupId(true);
add(new SignInPanel("authPanel"));
add(new SignOutPanel("signOut"));
}
private <C extends Page> WebMarkupContainer createMenuItem(String menuId, String linkId, final Class<C> pageClass) {
WebMarkupContainer menuItem = new WebMarkupContainer(menuId) {
private static final long serialVersionUID = 1L;
@Override
protected void onConfigure() {
super.onConfigure();
if (getPageClass().equals(pageClass)) {
add(AttributeAppender.append("class", "active"));
}
}
};
menuItem.add(new BookmarkablePageLink<>(linkId, pageClass));
return menuItem;
}
protected void updatePageTitle(AjaxRequestTarget target) {
target.add(title);
}
@Override
public void renderHead(IHeaderResponse response) {
super.renderHead(response);
WebResources.renderBootstrapHeader(response);
WebResources.renderBootstrapThemeHeader(response);
WebResources.renderFontAwesomeHeader(response);
}
}