<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui">
<p:commandButton id="themeButton" value="#{guestPreferences.theme}" type="button" />
<p:menu widgetVar="themeMenu" position="dynamic" trigger="themeButton" my="left top" at="left bottom"
styleClass="themeMenu">
<p:submenu label="Temas">
<p:menuitem value="Aristo" ajax="false">
<f:setPropertyActionListener value="aristo" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="Black-Tie" ajax="false">
<f:setPropertyActionListener value="black-tie" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="Blitzer" ajax="false">
<f:setPropertyActionListener value="blitzer" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="Bluesky" ajax="false">
<f:setPropertyActionListener value="bluesky" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="Casablanca" ajax="false">
<f:setPropertyActionListener value="casablanca" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="Cupertino" ajax="false">
<f:setPropertyActionListener value="cupertino" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="Dark-Hive" ajax="false">
<f:setPropertyActionListener value="dark-hive" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="Dot-Luv" ajax="false">
<f:setPropertyActionListener value="dot-luv" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="Eggplant" ajax="false">
<f:setPropertyActionListener value="eggplant" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="Excite-Bike" ajax="false">
<f:setPropertyActionListener value="excite-bike" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="Flick" ajax="false">
<f:setPropertyActionListener value="flick" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="Glass-X" ajax="false">
<f:setPropertyActionListener value="Glass-x" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="Hot-Speaks" ajax="false">
<f:setPropertyActionListener value="hot-speaks" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="Humanity" ajax="false">
<f:setPropertyActionListener value="humanity" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="Le-Frog" ajax="false">
<f:setPropertyActionListener value="le-frog" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="Midnight" ajax="false">
<f:setPropertyActionListener value="midnight" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="Mint-Choc" ajax="false">
<f:setPropertyActionListener value="mint-choc" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="Overcast" ajax="false">
<f:setPropertyActionListener value="overcast" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="Pepper-Grinder" ajax="false">
<f:setPropertyActionListener value="pepper-grinder" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="Redmond" ajax="false">
<f:setPropertyActionListener value="redmond" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="Rocket" ajax="false">
<f:setPropertyActionListener value="rocket" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="Smoothness" ajax="false">
<f:setPropertyActionListener value="smoothness" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="Sout-Stret" ajax="false">
<f:setPropertyActionListener value="sout-stret" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="Start" ajax="false">
<f:setPropertyActionListener value="start" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="Sunny" ajax="false">
<f:setPropertyActionListener value="sunny" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="Swanky-Purse" ajax="false">
<f:setPropertyActionListener value="swanky-purse" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="Trontastic" ajax="false">
<f:setPropertyActionListener value="trontastic" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="UI-Darkness" ajax="false">
<f:setPropertyActionListener value="ui-darkness" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="UI-Lightness" ajax="false">
<f:setPropertyActionListener value="ui-lightness" target="#{guestPreferences.theme}" />
</p:menuitem>
<p:menuitem value="Vader" ajax="false">
<f:setPropertyActionListener value="vader" target="#{guestPreferences.theme}" />
</p:menuitem>
</p:submenu>
</p:menu>
<!--
-->
</ui:composition>
web.xml
<context-param>
<param-name>primefaces.THEME</param-name>
<param-value>#{guestPreferences.theme}</param-value>
</context-param>
package Themas;
import java.io.Serializable;
import java.util.Map;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
@ManagedBean
@SessionScoped
public class GuestPreferences implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String theme = "redmond";
public String getTheme() {
System.out.println("getTheme:" +theme);
//theme = new String();
Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
if( params.containsKey(theme) ){
theme = params.get(theme);
}/*
try {
ThemeSwitcherBean ts = new ThemeSwitcherBean();
ts.saveTheme();
} catch (NullPointerException e) {
e.printStackTrace();
}*/
return theme;
}
public void setTheme(String theme) {
System.out.println("setTheme:" +theme);
this.theme = theme;
}
}
package Themas;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
@ManagedBean
public class ThemeSwitcherBean {
private Map<String, String> themes;
private List<Theme> advacedThemes;
private String theme;
@ManagedProperty(value="#{guestPreferences}")
private GuestPreferences gp;
public List<Theme> getAdvacedThemes() {
return advacedThemes;
}
public GuestPreferences getGp() {
return gp;
}
public String getTheme() {
return theme;
}
public Map<String, String> getThemes() {
return themes;
}
@PostConstruct
public void init(){
System.out.println("Init Theme");
theme = gp.getTheme();
advacedThemes = new ArrayList<Theme>();
advacedThemes.add(new Theme("aristo"));
advacedThemes.add(new Theme("cupertino"));
advacedThemes.add(new Theme("trontastic"));
themes = new TreeMap<String, String>();
themes.put("Aristo", "aristo");
themes.put("Black-Tie", "black-tie");
themes.put("Blitzer", "blitzer");
themes.put("Bluesky", "bluesky");
themes.put("Casablanca", "casablanca");
themes.put("Cupertino", "cupertino");
themes.put("Dark-Hive", "dark-hive");
themes.put("Dot-Luv", "dot-luv");
themes.put("Eggplant", "Eggplant");
themes.put("Excite-Bike", "excite-bike");
themes.put("Flick", "flick");
themes.put("Glass-X", "glass-x");
themes.put("Hot-Speaks", "ht-speaks");
themes.put("Humanity", "humanity");
themes.put("Le-Frog", "le-frog");
themes.put("Midnight", "midnight");
themes.put("Mint-Choc", "mint-choc");
themes.put("Overcast", "overcast");
themes.put("Pepper-Grinder", "pepper-grinder");
themes.put("Redmond", "redmond");
themes.put("Rocket", "rocket");
themes.put("Smoothness", "smoothness");
themes.put("Sout-Stret", "sout-street");
themes.put("Start", "start");
themes.put("Sunny", "sunny");
themes.put("Swanky-Purse", "swanky-purse");
themes.put("Trontastic", "trontastic");
themes.put("UI-Darkness", "ui-darkness");
themes.put("UI-Lightness", "ui-lightness");
themes.put("Vader", "vader");
}
public void saveTheme(){
System.out.println("saveTheme");
gp.setTheme(theme);
}
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
public void setAdvacedThemes(List<Theme> advacedThemes) {
this.advacedThemes = advacedThemes;
}
public void setGp(GuestPreferences gp) {
this.gp = gp;
}
public void setTheme(String theme) {
this.theme = theme;
}
public void setThemes(Map<String, String> themes) {
this.themes = themes;
}
}
package Themas;
import java.io.Serializable;
@SuppressWarnings("serial")
public class Theme implements Serializable{
private String name;
public Theme() {
}
public Theme(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return name;
}
}