Created
December 29, 2014 20:23
-
-
Save cortix/7a5453cddac75b90f29a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import base.ApplicationJavaScript; | |
import base.DocsCssResourceReference; | |
import base.FixBootstrapStylesCssResourceReference; | |
import de.agilecoders.wicket.core.Bootstrap; | |
import de.agilecoders.wicket.core.markup.html.bootstrap.behavior.CssClassNameAppender; | |
import de.agilecoders.wicket.core.markup.html.bootstrap.block.Code; | |
import de.agilecoders.wicket.core.markup.html.bootstrap.button.dropdown.DropDownButton; | |
import de.agilecoders.wicket.core.markup.html.bootstrap.button.dropdown.MenuBookmarkablePageLink; | |
import de.agilecoders.wicket.core.markup.html.bootstrap.button.dropdown.MenuDivider; | |
import de.agilecoders.wicket.core.markup.html.bootstrap.button.dropdown.MenuHeader; | |
import de.agilecoders.wicket.core.markup.html.bootstrap.html.HtmlTag; | |
import de.agilecoders.wicket.core.markup.html.bootstrap.image.GlyphIconType; | |
import de.agilecoders.wicket.core.markup.html.bootstrap.navbar.*; | |
import de.agilecoders.wicket.core.markup.html.bootstrap.tabs.AjaxBootstrapTabbedPanel; | |
import de.agilecoders.wicket.core.settings.IBootstrapSettings; | |
import de.agilecoders.wicket.core.settings.ITheme; | |
import org.apache.wicket.Component; | |
import org.apache.wicket.markup.ComponentTag; | |
import org.apache.wicket.markup.MarkupStream; | |
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.head.filter.FilteredHeaderItem; | |
import org.apache.wicket.markup.head.filter.HeaderResponseContainer; | |
import org.apache.wicket.markup.html.GenericWebPage; | |
import org.apache.wicket.markup.html.TransparentWebMarkupContainer; | |
import org.apache.wicket.markup.html.WebMarkupContainer; | |
import org.apache.wicket.markup.html.link.AbstractLink; | |
import org.apache.wicket.markup.html.link.BookmarkablePageLink; | |
import org.apache.wicket.markup.html.link.Link; | |
import org.apache.wicket.model.Model; | |
import org.apache.wicket.model.StringResourceModel; | |
import org.apache.wicket.request.http.WebResponse; | |
import org.apache.wicket.request.mapper.parameter.PageParameters; | |
import org.apache.wicket.util.string.StringValue; | |
import util.MultiLanguage; | |
import util.MultiLanguage2; | |
import web.WicketApplication; | |
import web.management.ManagementPage; | |
import javax.servlet.http.Cookie; | |
import java.util.ArrayList; | |
import java.util.List; | |
import java.util.Locale; | |
/** | |
* Created by HasanCelik on 22.09.2014. | |
*/ | |
public abstract class BasePage<T> extends GenericWebPage<T>{ | |
public BasePage2(final PageParameters parameters) { | |
super(parameters); | |
add(new HtmlTag("html")); | |
add(newNavbar("navbar")); | |
add(new Footer("footer")); | |
add(new Code("code-internal")); | |
} | |
protected Navbar newNavbar(String markupId) { | |
Navbar navbar = new Navbar(markupId) { | |
@Override | |
protected TransparentWebMarkupContainer newCollapseContainer(String componentId) { | |
TransparentWebMarkupContainer container = super.newCollapseContainer(componentId); | |
container.add(new CssClassNameAppender("bs-navbar-collapse")); | |
return container; | |
} | |
}; | |
navbar.setPosition(Navbar.Position.TOP); | |
navbar.setInverted(true); | |
//navbar.setBrandName(Model.of("Berkadem")); | |
DropDownButton dropdown = new NavbarDropDownButton(new StringResourceModel("choose_language", this, null)) { | |
@Override | |
public boolean isActive(Component item) { | |
return false; | |
} | |
@Override | |
protected List<AbstractLink> newSubMenuButtons(String buttonMarkupId) { | |
List<AbstractLink> languages = new ArrayList<AbstractLink>(); | |
languages.add(newLanguageOption(buttonMarkupId, "tr")); | |
languages.add(newLanguageOption(buttonMarkupId, "gb")); | |
return languages; | |
} | |
}.setIconType(GlyphIconType.globe); | |
navbar.addComponents(new ImmutableNavbarComponent(dropdown, Navbar.ComponentPosition.RIGHT)); | |
navbar.addComponents(NavbarComponents.transform(Navbar.ComponentPosition.RIGHT, | |
new NavbarExternalLink(Model.of("/j_spring_security_logout")) | |
.setLabel(Model.of("Logout")) | |
.setIconType(GlyphIconType.logout) | |
) | |
); | |
return navbar; | |
} | |
/** | |
* sets the theme for the current user. | |
* | |
* @param pageParameters current page parameters | |
*/ | |
private void configureTheme(PageParameters pageParameters) { | |
StringValue theme = pageParameters.get("theme"); | |
if (!theme.isEmpty()) { | |
IBootstrapSettings settings = Bootstrap.getSettings(getApplication()); | |
settings.getActiveThemeProvider().setActiveTheme(theme.toString("")); | |
} | |
} | |
protected ITheme activeTheme() { | |
IBootstrapSettings settings = Bootstrap.getSettings(getApplication()); | |
return settings.getActiveThemeProvider().getActiveTheme(); | |
} | |
@Override | |
protected void onConfigure() { | |
super.onConfigure(); | |
configureTheme(getPageParameters()); | |
} | |
@Override | |
public void renderHead(IHeaderResponse response) { | |
super.renderHead(response); | |
response.render(CssHeaderItem.forReference(FixBootstrapStylesCssResourceReference.INSTANCE)); | |
response.render(new FilteredHeaderItem(JavaScriptHeaderItem.forReference(ApplicationJavaScript.INSTANCE), "footer-container")); | |
if ("google".equalsIgnoreCase(activeTheme().name())) { | |
response.render(CssHeaderItem.forReference(DocsCssResourceReference.GOOGLE)); | |
} | |
} | |
protected boolean hasNavigation() { | |
return false; | |
} | |
/** | |
* creates a new navigation component. | |
* | |
* @param markupId The component's markup id | |
* @return a new navigation component. | |
*/ | |
private Component newNavigation(String markupId) { | |
WebMarkupContainer navigation = new WebMarkupContainer(markupId); | |
navigation.add(new AffixBehavior("200")); | |
navigation.setVisible(hasNavigation()); | |
return navigation; | |
} | |
private Link<Void> newLanguageOption(final String buttonMarkupId, final String localeString) { | |
Link<Void> languageOptionLink = new Link<Void>(buttonMarkupId) { | |
private static final long serialVersionUID = -1704794810431937803L; | |
@Override | |
public void onClick() { | |
Cookie languageCookie = new Cookie(WicketApplication.LANGUAGE_COOKIE_NAME, localeString); | |
languageCookie.setMaxAge(WicketApplication.LANGUAGE_COOKIE_AGE); | |
((WebResponse)getResponse()).addCookie(languageCookie); | |
getSession().setLocale(new Locale(localeString)); | |
} | |
@Override | |
public void onComponentTagBody(MarkupStream markupStream, ComponentTag openTag) { | |
replaceComponentTagBody(markupStream, openTag, getString(localeString)); | |
} | |
}; | |
return languageOptionLink; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment