Incluido selector de tema de primefaces en pagina de bienvenida (home).

* El tema seleccionado se conserva durante la sesión.
* Ya se muestran los iconos de primefaces para el tema seleccionado.
This commit is contained in:
mgarcianun
2019-11-28 19:19:57 +01:00
parent 8fcc5d7697
commit c460c6125c
10 changed files with 69 additions and 40 deletions

View File

@@ -25,7 +25,7 @@
</context-param>
<context-param>
<param-name>primefaces.THEME</param-name>
<param-value>aristo</param-value>
<param-value>#{sessionPreferences.currentTheme}</param-value>
</context-param>
<!-- JSF mapping -->

View File

@@ -24,12 +24,14 @@
<h:body>
<div id="layout">
<div id="top" class="top">
<h1 class="Titulo">myHealth Site</h1>
<!-- <h1 class="Titulo">myHealth Site</h1> -->
<h:graphicImage library="images" name="logo-small.png" />
</div>
<hr />
<div id="menuDiv">
<h:form>
<p:growl id="messages" sticky="true" showDetail="true" life="3000" />
<p:menubar>
<p:menuitem label="Home" icon="pi pi-home" outcome="home" />
<p:submenu label="Administración del sistema" icon="pi pi-briefcase">

View File

@@ -10,12 +10,15 @@
<ui:composition template="./header.xhtml">
<ui:define name="content">
<h:form>
<p:messages id="mesgs" showDetail="true" closable="true" autoupdate="true" />
<p:panel header="Pagina principal">
<p:panelGrid>
<p:outputLabel for="basic" value="Cambio de tema" />
<p:themeSwitcher id="basic" style="width:165px">
<p:outputLabel for="selectorTema" value="Cambio de tema" />
<p:themeSwitcher id="selectorTema" style="width:165px" value="#{sessionPreferences.currentTheme}">
<f:selectItem itemLabel="Seleccione un tema" itemValue="" noSelectionOption="true" />
<f:selectItems value="#{home.themes}" var="theme" itemLabel="#{theme.displayName}" itemValue="#{theme.name}" />
<p:ajax listener="#{sessionPreferences.updateCurrentTheme}" />
</p:themeSwitcher>
</p:panelGrid>
<h:panelGrid columns="2">
@@ -31,6 +34,13 @@
</h:panelGrid>
</h:panelGroup>
</p:panel>
<p:panel>
<h:panelGroup>
<h:panelGrid columns="1">
<p:commandButton value="Usar tema en este sesión" update="mesgs" action="#{sessionPreferences.updateCurrentTheme}" icon="pi pi-save" />
</h:panelGrid>
</h:panelGroup>
</p:panel>
</h:form>
</ui:define>
</ui:composition>

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -1,26 +0,0 @@
package managedbean.common;
import java.io.Serializable;
import javax.annotation.ManagedBean;
import javax.enterprise.context.SessionScoped;
@ManagedBean
@SessionScoped
public class CurrentTheme implements Serializable {
private Theme currentTheme;
public CurrentTheme() {
}
public Theme getCurrentTheme() {
return currentTheme;
}
public void setCurrentTheme(Theme currentTheme) {
this.currentTheme = currentTheme;
}
}

View File

@@ -0,0 +1,40 @@
package managedbean.common;
import java.io.Serializable;
import javax.annotation.ManagedBean;
import javax.enterprise.context.SessionScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Named;
@ManagedBean
@Named("sessionPreferences")
@SessionScoped
public class SessionPreferences implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String currentTheme = "pepper-grinder";
public SessionPreferences() {
}
public String getCurrentTheme() {
return currentTheme;
}
public void setCurrentTheme(String themeName) {
this.currentTheme = themeName;
}
public void updateCurrentTheme() {
// TODO: Se podría guardar el tema seleccionado en base de datos para el usuario
// (en caso de que esté logeado en el sistema
FacesContext.getCurrentInstance().addMessage(null,
new FacesMessage(FacesMessage.SEVERITY_INFO, "Tema guardado", "El tema seleccionado será utilizado durante esta sesión."));
}
}

View File

@@ -5,6 +5,8 @@ import java.util.List;
import javax.annotation.PostConstruct;
import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;

View File

@@ -3,6 +3,8 @@ package managedbean.profile;
import java.util.Properties;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Named;
import javax.naming.Context;
import javax.naming.InitialContext;
@@ -30,4 +32,11 @@ public class ProfileMBeanBase {
remoteManager = (ProfileFacadeRemote) ctx.lookup("java:app/MyHealth.jar/ProfileFacadeBean!ejb.profile.ProfileFacadeRemote");
}
protected void addFacesMessage(FacesMessage.Severity severity, String summary, String detail) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(severity, summary, detail));
}
protected void manageException(Exception ex) {
this.addFacesMessage(FacesMessage.SEVERITY_ERROR, "Se ha producido un error inesperado", "Descripción del error: " + ex.getLocalizedMessage());
}
}

View File

@@ -193,14 +193,6 @@ public class RegisterUserMBean extends ProfileMBeanBase implements Serializable
// FacesContext.getCurrentInstance().addMessage(null, msg);
}
private void addFacesMessage(FacesMessage.Severity severity, String summary, String detail) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(severity, summary, detail));
}
private void manageException(Exception ex) {
this.addFacesMessage(FacesMessage.SEVERITY_ERROR, "Se ha producido un error inesperado", "Descripción del error: " + ex.getLocalizedMessage());
}
public String getPasswordRepeat() {
return passwordRepeat;
}

View File

@@ -58,6 +58,6 @@ public class LoginMBean {
public String logout() {
HttpSession session = SessionUtils.getSession();
session.invalidate();
return "home";
return "home?refresh=1&faces-redirect=true";
}
}