-
Notifications
You must be signed in to change notification settings - Fork 162
Themes
By default wicket-bootstrap uses the
BootswatchThemeProvider
, which provides access to all free bootswatch themes (link), and theSessionThemeProvider
, which uses theSession
to store and read the active theme.
All theme specific css files will be rendered automatically by BootstrapBaseBahavior
. You can access the available themes by calling List<Theme> Bootstrap.getSettings(application).getThemeProvider().available()
. If you want to change the active theme just update the ActiveThemeProvider
by calling Bootstrap.getSettings(application).getActiveThemeProvider().setActiveTheme(theme or theme name)
.
IBootstrapSettings settings = Bootstrap.getSettings(getApplication());
List<Theme> themes = settings.getThemeProvider().available();
for (Theme theme : themes) {
PageParameters params = new PageParameters();
params.set("theme", theme.name());
dropdown.addMenuButton(new MenuPageButton<Page>(getPage().getPageClass(), params, Model.of(theme.name())));
}
StringValue theme = pageParameters.get("theme");
if (!theme.isEmpty()) {
IBootstrapSettings settings = Bootstrap.getSettings(getApplication());
settings.getActiveThemeProvider().setActiveTheme(theme.toString(""));
}
public interface ThemeProvider {
/**
* returns a theme by its name. If
*
* @param name The name of the theme
* @return the theme according to given name
*/
Theme byName(final String name);
/**
* @return a list of all available themes
*/
List<Theme> available();
/**
* @return the default theme
*/
Theme defaultTheme();
}
public interface ActiveThemeProvider {
/**
* returns the current active theme (can be user/session scoped). If none is
* set a default theme should be returned (implementation specific).
* There is a session scoped implementation: {@code SessionThemeProvider}
*
* @return the current active theme
*/
Theme getActiveTheme();
/**
* sets the active theme by its name.
*
* @param themeName the theme name
*/
void setActiveTheme(String themeName);
/**
* sets the active theme
*
* @param theme the theme to set
*/
void setActiveTheme(Theme theme);
}
Copyright 2012 AgileCoders.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with the License. You may obtain a copy of the License in the LICENSE file, or at:
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.