Vistas

Vamos con las vistas creamos en src/main/webapp el archivo plantilla.xhtml
 
     
	<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">
    
    <h:head>
    </h:head>

    <h:body>
    
    
 <ui:insert name="header">
				<ui:include src="encabezado.xhtml"></ui:include>
</ui:insert>
  <ui:insert name="content">
				<ui:include src="contenido.xhtml"></ui:include>
</ui:insert>      
        
    </h:body>
</html>   
	   
	   
	   
	     
     

En el mismo directorio creamos la clase encabezado.xhtml
 
   
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">
    
    <h:head>
    </h:head>

    <h:body>
    
    
    <ui:composition>
        <div class="card">
    <h:form>
<p:growl id="messages"/>
<p:menubar>
<p:submenu label="Manager Activity" icon="pi pi-fw pi-file">
<p:menuitem value="#{msn['encabezado.registrar_actividades']}"  icon="pi pi-fw pi-pencil"  />
<p:menuitem value="#{msn['encabezado.usuario']}" rendered="#{loginView.usuario.hasRoleAdmin(loginView.rolUser)}" icon="pi pi-fw pi-pencil" outcome="usuario"  />
<p:menuitem value="#{msn['encabezado.cliente']}" rendered="#{loginView.usuario.hasRoleAdmin(loginView.rolUser)}" icon="pi pi-fw pi-pencil" outcome="cliente"  />
<p:menuitem value="#{msn['encabezado.proyecto']}" rendered="#{loginView.usuario.hasRoleAdmin(loginView.rolUser)}" icon="pi pi-fw pi-pencil" outcome="proyecto" />
</p:submenu>


            <p:menuitem value="#{msn['encabezado.salir']}" action="#{loginView.logout()}" icon="pi pi-fw pi-power-off"/>

</p:menubar>

</h:form>

</div>
        
    </ui:composition>    
                
        
    </h:body>
</html>


  
     
     

Creamos el archivo contenido.xhtml
 
   
	<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">
    
    <h:head>
    </h:head>

    <h:body>
    
    
  <ui:composition>
     
       <h:form> 
    <p:panel header="Manager Activity" footer="Tutosoftware">
       
      
     <h1><h:outputText value="#{msn['contenido.saludo']}" /> <h:outputText value=" #{loginView.nombreUsuario}" />  </h1> 
      
      
     
      </p:panel>
      
     </h:form> 
      
      
        
  </ui:composition>              
        
    </h:body>
</html>
	   
	 
     

Realizamos la vista login.xhtml
 
   
	<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">
    
    <h:head>
    </h:head>

    <h:body>
    
    <div style="margin:0 auto;width:70%">
 <ui:composition template="plantilla.xhtml" >
 <ui:define name="header">
 <h:form>
 <div class="field col-12 md:col-4">
                
                <h:outputText value="#{msn['login.idioma']}" />
            <h:selectOneMenu value="#{idiomaView.codigoIdioma}" onchange="submit()"
                valueChangeListener="#{idiomaView.doCambioIdiomaConLista}">
                <f:selectItems value="#{idiomaView.listaIdiomas}" />
            </h:selectOneMenu>
            </div>
 
 
 </h:form>
 
 
 
 
 <h1><h:outputText value="#{msn['login.saludo']}" /></h1>
 </ui:define>
 
 <ui:define name="content"  >
 
 
 
 <h:form>
 <p:growl id="messagesLogin"/>
  <p:panel header="#{msn['login.header_panel']}" footer="Tutosoftware">
  
  
  <h:panelGrid columns="2" cellpadding="5">
<h:outputLabel value="Email:" for="email"  style="color:white" />
<p:inputText id="email"   value="#{loginView.email}" required="true" label="#{msn['login.user_label']}">
</p:inputText>

<h:outputLabel value="#{msn['login.password']}" for="contrasena" style="color:white"  />
<p:password id="contrasena" value="#{loginView.contrasena}"     required="true" label="password">
</p:password>

<f:facet name="footer">

<p:commandButton  value="#{msn['login.acceder']}" action="#{loginView.loginAccess}" update="messagesLogin" >  </p:commandButton>

</f:facet>

</h:panelGrid>
  
  
  
  
        
   </p:panel>
 
 
 
 
 
 
 
 </h:form>
 
 
 

 
 
 
 </ui:define>
 </ui:composition>
 
      </div>   
    </h:body>
</html>
  
	
	
	 
     

Cremos el archivo admin.xhtml
 
   
  <html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">
    
    <h:head>
    </h:head>

    <h:body>
    
    <ui:composition template="plantilla.xhtml">
	</ui:composition>
    
        
        
                
        
    </h:body>
</html>
  
  
  
 
     

Creamos la clase usuario.xhtml
 
   
  
  <html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">
    
    <h:head>
    </h:head>

    <h:body>
   <f:view locale="#{idiomaView.codigoIdioma}"> 
    
  <ui:composition   template="plantilla.xhtml">
   <ui:define name="content"  >  
       <h:form id="form1"> 
    <p:panel header="Manager Activity" footer="Tutosoftware">
       
      
     <h1><h:outputText value="#{msn['usuario.admin']}"  />  </h1> 
    <p:toolbar>
            <p:toolbarGroup>
                <p:commandButton value="#{msn['usuario.crear']}" icon="pi pi-plus" actionListener="#{usuarioView.abrirNuevoUsuario}"
                    update=":dialogs:manage-usuario-content" oncomplete="PF('manageUsuarioDialog').show()"
                    styleClass="ui-button-success" style="margin-right: .5rem">
                    <p:resetInput target=":dialogs:manage-usuario-content" />
                </p:commandButton>
               
            </p:toolbarGroup>
        </p:toolbar>  
   
   <p:dataTable id="dt-usuario" var="usuario" value="#{usuarioView.usuarios}"
            reflow="true"  paginator="true" rows="5" selectionRowMode="add" paginatorPosition="bottom">
            
            <p:column headerText="#{msn['usuario.nombre']}" >
                <h:outputText value="#{usuario.nombre}" />
            </p:column>
            <p:column headerText="#{msn['usuario.apellido_paterno']}">
                <h:outputText value="#{usuario.apellidoPaterno}" />
            </p:column>
            
            <p:column headerText="#{msn['usuario.apellido_materno']}">
                <h:outputText value="#{usuario.apellidoMaterno}" />
            </p:column>
            <p:column headerText="#{msn['usuario.email']}" sortBy="#{usuario.email}" filterBy="#{usuario.email}">
                <h:outputText value="#{usuario.email}" />
            </p:column>
            <p:column headerText="#{msn['usuario.contrasena']}">
                  <h:outputText value="#{usuario.contrasena}" />
            </p:column>
            <p:column headerText="#{msn['usuario.rol']}">
                <h:outputText value="#{usuario.rol}" />
            </p:column>
            <p:column  headerText="#{msn['usuario.accion']}">
                <p:commandButton icon="pi pi-pencil" update=":dialogs:manage-usuario-content"
                    oncomplete="PF('manageUsuarioDialog').show()"
                    styleClass="edit-button rounded-button ui-button-success" process="@this">
                    <f:setPropertyActionListener value="#{usuario}" target="#{usuarioView.nuevoUsuario}" />
                    <p:resetInput target=":dialogs:manage-usuario-content" />
                </p:commandButton>
                
                
                 <p:commandButton class="ui-button-warning rounded-button" icon="pi pi-trash"
                                 process="@this"
                                 oncomplete="PF('deleteUsuarioDialog').show()">
                    <f:setPropertyActionListener value="#{usuario}" target="#{usuarioView.nuevoUsuario}" />
                </p:commandButton>
                
                
                
                
                
            </p:column>

        </p:dataTable>
   
   
  </p:panel>
      
     </h:form> 
      <h:form id="dialogs">
      <p:dialog header="#{msn['usuario.detalles']}" showEffect="fade" modal="true" widgetVar="manageUsuarioDialog"
            responsive="true">
            <p:outputPanel id="manage-usuario-content" class="ui-fluid">
                <p:outputPanel rendered="#{not empty usuarioView.nuevoUsuario}">
                    
                    <div class="field">
                        <p:outputLabel for="nombre"><h:outputText value="#{msn['usuario.nombre']}"  /></p:outputLabel>
                        <p:inputText id="nombre" value="#{usuarioView.nuevoUsuario.nombre}" required="true" />
                    </div>
                    <div class="field">
                        <p:outputLabel for="apellidoPaterno"><h:outputText value="#{msn['usuario.apellido_paterno']}"  /></p:outputLabel>
                        <p:inputText id="apellidoPaterno" value="#{usuarioView.nuevoUsuario.apellidoPaterno}" required="true" />
                    </div>
                    <div class="field">
                        <p:outputLabel for="apellidoMaterno"><h:outputText value="#{msn['usuario.apellido_materno']}"  /></p:outputLabel>
                        <p:inputText id="apellidoMaterno" value="#{usuarioView.nuevoUsuario.apellidoMaterno}"  />
                    </div>
                    <div class="field">
                        <p:outputLabel for="email"><h:outputText value="#{msn['usuario.email']}"  /></p:outputLabel>
                        <p:inputText id="email" value="#{usuarioView.nuevoUsuario.email}" required="true" />
                    </div>
                     <div class="field">
                        <p:outputLabel for="contrasena"><h:outputText value="#{msn['usuario.contrasena']}"  /></p:outputLabel>
                        <p:inputText id="contrasena" value="#{usuarioView.nuevoUsuario.contrasena}" required="true" />
                    </div>
                    
                   <div class="field">
                       <p:outputLabel for="rol"><h:outputText value="#{msn['usuario.rol']}"  /></p:outputLabel>
                      <p:selectOneMenu id="rol" value="#{usuarioView.nuevoUsuario.rol}">
                    <f:selectItem itemLabel="#{msn['usuario.sel']}" itemValue=""/>
                    <f:selectItem itemLabel="Admin" itemValue="admin"/>
                    <f:selectItem itemLabel="PM" itemValue="pm"/>
                    <f:selectItem itemLabel="User" itemValue="user"/>
                    
                </p:selectOneMenu>
                    </div>
                    
                   
                </p:outputPanel>
            </p:outputPanel>

            <f:facet name="footer">
                <p:commandButton value="#{msn['usuario.guardar']}" icon="pi pi-check" actionListener="#{usuarioView.crearUsuario}"
                    update="manage-usuario-content,form1:dt-usuario" process="manage-usuario-content @this" />
                <p:commandButton value="#{msn['usuario.cancelar']}" icon="pi pi-times" onclick="PF('manageUsuarioDialog').hide()"
                    class="ui-button-secondary" type="button" />
            </f:facet>
        </p:dialog>
        
        
        
        <p:confirmDialog widgetVar="deleteUsuarioDialog" showEffect="fade" width="300"
            message="#{msn['usuario.eliminar']}" header="#{msn['usuario.confirmacion']}" severity="warn">
            <p:commandButton value="#{msn['usuario.si']}" icon="pi pi-check" actionListener="#{usuarioView.eliminarUsuario}"
                process="@this" update="form1:dt-usuario"
                oncomplete="PF('deleteUsuarioDialog').hide()" />
            <p:commandButton value="No" type="button" styleClass="ui-button-secondary" icon="pi pi-times"
                onclick="PF('deleteUsuarioDialog').hide()" />
        </p:confirmDialog>
        
        
        
        
        
        
        
      
      </h:form>
      
     </ui:define> 
        
  </ui:composition>              
    </f:view>    
    </h:body>
</html>
  
     

Creamos el archivo cliente.xhtml
 
   
  <html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">
    
    <h:head>
    </h:head>

    <h:body>
   <f:view locale="#{idiomaView.codigoIdioma}"> 
    
  <ui:composition   template="plantilla.xhtml">
   <ui:define name="content"  >  
       <h:form id="form1"> 
    <p:panel header="Manager Activity" footer="Tutosoftware">
       
      
     <h1><h:outputText value="#{msn['cliente.admin']}"  />  </h1> 
    <p:toolbar>
            <p:toolbarGroup>
                <p:commandButton value="#{msn['cliente.crear']}" icon="pi pi-plus" actionListener="#{clienteView.abrirNuevoCliente}"
                    update=":dialogs:manage-cliente-content" oncomplete="PF('manageClienteDialog').show()"
                    styleClass="ui-button-success" style="margin-right: .5rem">
                    <p:resetInput target=":dialogs:manage-cliente-content" />
                </p:commandButton>
               
            </p:toolbarGroup>
        </p:toolbar>  
   
   <p:dataTable id="dt-cliente" var="cliente" value="#{clienteView.clientes}"
            reflow="true"  paginator="true" rows="5" selectionRowMode="add" paginatorPosition="bottom">
            
            <p:column headerText="#{msn['cliente.id']}" >
                <h:outputText value="#{cliente.clienteId}" />
            </p:column>
            <p:column headerText="#{msn['cliente.nombre']}"  sortBy="#{cliente.nombre}" filterBy="#{cliente.nombre}"  >
                <h:outputText value="#{cliente.nombre}" />
            </p:column>
            
            <p:column headerText="#{msn['usuario.email']}" >
                <h:outputText value="#{cliente.email}" />
            </p:column>
            
            <p:column headerText="#{msn['cliente.telefono']}" >
                <h:outputText value="#{cliente.telefono}" />
            </p:column>
            
            
            
            <p:column headerText="#{msn['cliente.contacto']}">
                <h:outputText value="#{cliente.contacto}" />
            </p:column>
            <p:column  headerText="#{msn['usuario.accion']}">
                <p:commandButton icon="pi pi-pencil" update=":dialogs:manage-cliente-content"
                    oncomplete="PF('manageClienteDialog').show()"
                    styleClass="edit-button rounded-button ui-button-success" process="@this">
                    <f:setPropertyActionListener value="#{cliente}" target="#{clienteView.nuevoCliente}" />
                    <p:resetInput target=":dialogs:manage-cliente-content" />
                </p:commandButton>
                
                
                 <p:commandButton class="ui-button-warning rounded-button" icon="pi pi-trash"
                                 process="@this"
                                 oncomplete="PF('deleteClienteDialog').show()">
                    <f:setPropertyActionListener value="#{cliente}" target="#{clienteView.nuevoCliente}" />
                </p:commandButton>
                
                
                
                
                
            </p:column>

        </p:dataTable>
   
   
  </p:panel>
      
     </h:form> 
      <h:form id="dialogs">
      <p:dialog header="#{msn['cliente.detalles']}" showEffect="fade" modal="true" widgetVar="manageClienteDialog"
            responsive="true">
            <p:outputPanel id="manage-cliente-content" class="ui-fluid">
                <p:outputPanel rendered="#{not empty clienteView.nuevoCliente}">
                    <div class="field">
                        <p:outputLabel for="clienteId"><h:outputText value="#{msn['cliente.id']}"  /></p:outputLabel>
                        <p:inputText id="clienteId" value="#{clienteView.nuevoCliente.clienteId}" readonly="true" size="20" />
                    </div>
                    
                    
                    <div class="field">
                        <p:outputLabel for="nombre"><h:outputText value="#{msn['cliente.nombre']}"  /></p:outputLabel>
                        <p:inputText id="nombre" value="#{clienteView.nuevoCliente.nombre}" required="true" size="50" />
                    </div>
                    <div class="field">
                        <p:outputLabel for="email"><h:outputText value="#{msn['usuario.email']}"  /></p:outputLabel>
                        <p:inputText id="email" value="#{clienteView.nuevoCliente.email}" required="true" size="50" />
                    </div>
                    <div class="field">
                        <p:outputLabel for="telefono"><h:outputText value="#{msn['cliente.telefono']}"  /></p:outputLabel>
                        <p:inputText id="telefono" value="#{clienteView.nuevoCliente.telefono}" size="20"  />
                    </div>
                   
                     <div class="field">
                        <p:outputLabel for="contacto"><h:outputText value="#{msn['cliente.contacto']}"  /></p:outputLabel>
                        <p:inputText id="contacto" value="#{clienteView.nuevoCliente.contacto}"  size="150"   required="true" />
                    </div>
                    
                   
                    
                   
                </p:outputPanel>
            </p:outputPanel>

            <f:facet name="footer">
                <p:commandButton value="#{msn['usuario.guardar']}" icon="pi pi-check" actionListener="#{clienteView.crearCliente}"
                    update="manage-cliente-content,form1:dt-cliente" process="manage-cliente-content @this" />
                <p:commandButton value="#{msn['usuario.cancelar']}" icon="pi pi-times" onclick="PF('manageClienteDialog').hide()"
                    class="ui-button-secondary" type="button" />
            </f:facet>
        </p:dialog>
        
        
        
        <p:confirmDialog widgetVar="deleteClienteDialog" showEffect="fade" width="300"
            message="#{msn['cliente.eliminar']}" header="#{msn['usuario.confirmacion']}" severity="warn">
            <p:commandButton value="#{msn['usuario.si']}" icon="pi pi-check" actionListener="#{clienteView.eliminarCliente}"
                process="@this" update="form1:dt-cliente"
                oncomplete="PF('deleteClienteDialog').hide()" />
            <p:commandButton value="No" type="button" styleClass="ui-button-secondary" icon="pi pi-times"
                onclick="PF('deleteClienteDialog').hide()" />
        </p:confirmDialog>
        
     
        
      
      </h:form>
      
     </ui:define> 
        
  </ui:composition>              
    </f:view>    
    </h:body>
</html>
  
  
     

Creamos la vista proyecto.xhtml
 
    
  <html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">
    
    <h:head>
    
    <script>
    PrimeFaces.locales['es'] = {
            monthNames: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'],
            monthNamesShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'],
            dayNames: ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'],
            dayNamesShort: ['Dom', 'Lun', 'Mar', 'Mie', 'Jue', 'Vie', 'Sab'],
            dayNamesMin: ['D', 'L', 'M', 'X', 'J', 'V', 'S'],
            weekHeader: 'Semana',
            firstDay: 1,
            isRTL: false,
            showMonthAfterYear: false,
            yearSuffix: '',
            timeOnlyTitle: 'Sólo hora',
            timeText: 'Tiempo',
            hourText: 'Hora',
            minuteText: 'Minuto',
            secondText: 'Segundo',
            millisecondText: 'Milisegundo',
            ampm: false,
            month: 'Mes',
            week: 'Semana',
            day: 'Día',
            allDayText: 'Todo el día',
            today: 'Hoy',
            now: 'Ahora',
            clear: 'Limpiar',
            aria: {
               close: 'Cerrar',
               previous: 'Anterior',
               next: 'Siguiente',
           }
        };
    
    </script>
    
    </h:head>

    <h:body>
   <f:view locale="#{idiomaView.codigoIdioma}"> 
    
  <ui:composition   template="plantilla.xhtml">
   <ui:define name="content"  >  
       <h:form id="form1"> 
    <p:panel header="Manager Activity" footer="Tutosoftware">
       
      
     <h1><h:outputText value="#{msn['proyecto.admin']}"  />  </h1> 
    <p:toolbar>
            <p:toolbarGroup>
                <p:commandButton value="#{msn['proyecto.crear']}" icon="pi pi-plus" actionListener="#{proyectoView.abrirNuevoProyecto}"
                    update=":dialogs:manage-proyecto-content" oncomplete="PF('manageProyectoDialog').show()"
                    styleClass="ui-button-success" style="margin-right: .5rem">
                    <p:resetInput target=":dialogs:manage-proyecto-content" />
                </p:commandButton>
               
            </p:toolbarGroup>
        </p:toolbar>  
   
   <p:dataTable id="dt-proyecto" var="proyecto" value="#{proyectoView.proyectos}"
            reflow="true"  paginator="true" rows="5" selectionRowMode="add" paginatorPosition="bottom">
            
            <p:column headerText="#{msn['cliente.id']}" >
                <h:outputText value="#{proyecto.proyectoId}" />
            </p:column>
            <p:column headerText="#{msn['proyecto.nombre']}"  sortBy="#{proyecto.nombreProyecto}" filterBy="#{proyecto.nombreProyecto}"  >
                <h:outputText value="#{proyecto.nombreProyecto}" />
            </p:column>
            
            <p:column headerText="#{msn['proyecto.cliente']}" >
                <h:outputText value="#{proyecto.cliente}" />
            </p:column>
            
            <p:column headerText="#{msn['proyecto.lidercliente']}" >
                <h:outputText value="#{proyecto.liderProyectoCliente}" />
            </p:column>
            
            <p:column headerText="#{msn['proyecto.liderinterno']}" >
                <h:outputText value="#{proyecto.liderProyectoInterno}" />
            </p:column>
            
            <p:column headerText="#{msn['proyecto.emaillidercliente']}" >
                <h:outputText value="#{proyecto.emailLiderCliente}" />
            </p:column>
            
            <p:column headerText="#{msn['proyecto.emailliderinterno']}" >
                <h:outputText value="#{proyecto.emailLiderInterno}" />
            </p:column>
            
            <p:column headerText="#{msn['proyecto.telefonolidercliente']}" >
                <h:outputText value="#{proyecto.telefonoLiderCliente}" />
            </p:column>
            
            <p:column headerText="#{msn['proyecto.telefonoliderinterno']}" >
                <h:outputText value="#{proyecto.telefonoLiderInterno}" />
            </p:column>
            
             <p:column headerText="#{msn['proyecto.ubicacion']}" >
                <h:outputText value="#{proyecto.ubicacion}" />
            </p:column>
            
            
            <p:column headerText="#{msn['proyecto.fechainicio']}" >
                <h:outputText value="#{proyecto.fechaInicio}" >
                <f:convertDateTime pattern="MM-dd-yyyy" />
                </h:outputText>
            </p:column>
            
            <p:column headerText="#{msn['proyecto.status']}" >
                <h:outputText value="#{proyecto.status}" />
            </p:column>
            
            <p:column headerText="#{msn['proyecto.fechaentrega']}" >
                <h:outputText value="#{proyecto.fechaEntrega}">
                <f:convertDateTime pattern="MM-dd-yyyy" />
                </h:outputText>
            </p:column>
            
            
            
            
            
            <p:column  headerText="#{msn['usuario.accion']}">
                <p:commandButton icon="pi pi-pencil" update=":dialogs:manage-proyecto-content"
                    oncomplete="PF('manageProyectoDialog').show()"
                    styleClass="edit-button rounded-button ui-button-success" process="@this">
                    <f:setPropertyActionListener value="#{proyecto}" target="#{proyectoView.nuevoProyecto}" />
                    <p:resetInput target=":dialogs:manage-proyecto-content" />
                </p:commandButton>
                
                
                 <p:commandButton class="ui-button-warning rounded-button" icon="pi pi-trash"
                                 process="@this"
                                 oncomplete="PF('deleteProyectoDialog').show()">
                    <f:setPropertyActionListener value="#{proyecto}" target="#{proyectoView.nuevoProyecto}" />
                </p:commandButton>
                
                
                
                
                
            </p:column>

        </p:dataTable>
   
   
  </p:panel>
      
     </h:form> 
      <h:form id="dialogs">
      <p:dialog header="#{msn['proyecto.detalles']}" showEffect="fade" modal="true" widgetVar="manageProyectoDialog"
            responsive="true"  blockScroll="true">
            <p:outputPanel id="manage-proyecto-content" class="ui-fluid">
                <p:outputPanel rendered="#{not empty proyectoView.nuevoProyecto}"  >
                    <div class="field">
                        <p:outputLabel for="proyectoId"><h:outputText value="#{msn['cliente.id']}"  /></p:outputLabel>
                        <p:inputText id="proyectoId" value="#{proyectoView.nuevoProyecto.proyectoId}" readonly="true" size="20" />
                    </div>
                    
                    
                    <div class="field">
                        <p:outputLabel for="nombreProyecto"><h:outputText value="#{msn['proyecto.nombre']}"  /></p:outputLabel>
                        <p:inputText id="nombreProyecto" value="#{proyectoView.nuevoProyecto.nombreProyecto}" required="true" size="50" />
                    </div>
                    
                  
                    <div class="field">
                        <p:outputLabel for="cliente"><h:outputText value="#{msn['proyecto.cliente']}"  /></p:outputLabel>
                        <p:selectOneMenu id="cliente" value="#{proyectoView.nuevoProyecto.cliente}"  required="true">
                         <f:selectItem itemLabel="#{msn['usuario.sel']}" itemValue=""/>
                         <f:selectItems value="#{proyectoView.clientes}" var="cliente"
                                itemLabel="#{cliente.nombre}" itemValue="#{cliente.nombre}"/>
                        </p:selectOneMenu>
                    </div>
                    
                    
                    
                    <div class="field">
                        <p:outputLabel for="liderProyectoCliente"><h:outputText value="#{msn['proyecto.lidercliente']}"  /></p:outputLabel>
                        <p:inputText id="liderProyectoCliente" value="#{proyectoView.nuevoProyecto.liderProyectoCliente}" required="true" size="150" />
                    </div>
                    
                    
                    <div class="field">
                        <p:outputLabel for="liderProyectoInterno"><h:outputText value="#{msn['proyecto.liderinterno']}"  /></p:outputLabel>
                        <p:inputText id="liderProyectoInterno" value="#{proyectoView.nuevoProyecto.liderProyectoInterno}" required="true" size="150" />
                    </div>
                    
      
                    
                    
                  <div class="field">
                        <p:outputLabel for="emailLiderCliente"><h:outputText value="#{msn['proyecto.emaillidercliente']}"  /></p:outputLabel>
                        <p:inputText id="emailLiderCliente" value="#{proyectoView.nuevoProyecto.emailLiderCliente}" required="true" size="50" />
                         <p:outputLabel for="telefonoLiderCliente"><h:outputText value="#{msn['proyecto.telefonolidercliente']}"  /></p:outputLabel>
                        <p:inputText id="telefonoLiderCliente" value="#{proyectoView.nuevoProyecto.telefonoLiderCliente}" size="20"  />
                    </div>
                    
                    
                    <div class="field">
                        <p:outputLabel for="emailLiderInterno"><h:outputText value="#{msn['proyecto.emailliderinterno']}"  /></p:outputLabel>
                        <p:inputText id="emailLiderInterno" value="#{proyectoView.nuevoProyecto.emailLiderInterno}" required="true" size="50" />
                         <p:outputLabel for="telefonoLiderInterno"><h:outputText value="#{msn['proyecto.telefonoliderinterno']}"  /></p:outputLabel>
                        <p:inputText id="telefonoLiderInterno" value="#{proyectoView.nuevoProyecto.telefonoLiderInterno}" size="20"  />
                    </div> 
                    
                    
                   
                    
                     <div class="field">
                        <p:outputLabel for="ubicacion"><h:outputText value="#{msn['proyecto.ubicacion']}"  /></p:outputLabel>
                        <p:inputText id="ubicacion" value="#{proyectoView.nuevoProyecto.ubicacion}" size="20"  />
                        
                    
				
				     </div>
                     <div class="field">
                         <p:outputLabel for="fechaInicio"><h:outputText value="#{msn['proyecto.fechainicio']}"  /></p:outputLabel>
					<p:datePicker id="fechaInicio" value="#{proyectoView.nuevoProyecto.fechaInicio}" locale="#{idiomaView.codigoIdioma}" monthNavigator="true"  size="20" /> 
                     </div>
					
					<div class="field">
                        <p:outputLabel for="status"><h:outputText value="#{msn['proyecto.status']}"  /></p:outputLabel>
                        <p:inputText id="status" value="#{proyectoView.nuevoProyecto.status}" size="20"  />
                        
                        <p:outputLabel for="fechaEntrega" value="#{msn['proyecto.fechaentrega']}" ></p:outputLabel>
						<p:datePicker id="fechaEntrega" value="#{proyectoView.nuevoProyecto.fechaEntrega}" locale="#{idiomaView.codigoIdioma}" monthNavigator="true"  size="20" /> 
                        
                        
                    </div>
                   
                    
                   
                    
                    
                    
                   
                </p:outputPanel>
            </p:outputPanel>

            <f:facet name="footer">
                <p:commandButton value="#{msn['usuario.guardar']}" icon="pi pi-check" actionListener="#{proyectoView.crearProyecto}"
                    update="manage-proyecto-content,form1:dt-proyecto" process="manage-proyecto-content @this" />
                <p:commandButton value="#{msn['usuario.cancelar']}" icon="pi pi-times" onclick="PF('manageProyectoDialog').hide()"
                    class="ui-button-secondary" type="button" />
            </f:facet>
        </p:dialog>
        
        
        
        <p:confirmDialog widgetVar="deleteProyectoDialog" showEffect="fade" width="300"
            message="#{msn['proyecto.eliminar']}" header="#{msn['usuario.confirmacion']}" severity="warn">
            <p:commandButton value="#{msn['usuario.si']}" icon="pi pi-check" actionListener="#{proyectoView.eliminarProyecto}"
                process="@this" update="form1:dt-proyecto"
                oncomplete="PF('deleteProyectoDialog').hide()" />
            <p:commandButton value="No" type="button" styleClass="ui-button-secondary" icon="pi pi-times"
                onclick="PF('deleteProyectoDialog').hide()" />
        </p:confirmDialog>
        
        
        
        
        
        
        
      
      </h:form>
      
     </ui:define> 
        
  </ui:composition>              
    </f:view>    
    </h:body>
</html>