From e97adceac80d8d71b2a59b0f7becfc9235fb6f2a Mon Sep 17 00:00:00 2001
From: Fabiano Sluzarski <fs09@inf.ufpr.br>
Date: Fri, 14 Feb 2014 10:50:54 -0200
Subject: [PATCH] =?UTF-8?q?adicionado=20*=20nas=20labels=20dos=20campos=20?=
 =?UTF-8?q?obrigatorios,=20tooltips=20aparecem=20onmouseover=20e=20arrumad?=
 =?UTF-8?q?a=20convers=C3=A3o=20para=20string=20de=20org=C3=A3o=20executor?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../estacaojuventude/OcorrenciaMunicipal.java |  8 ++++----
 ...plicationConversionServiceFactoryBean.java |  6 ++++--
 .../web/LocalizacaoController.java            |  9 ++++++++-
 .../web/MunicipioController.java              |  9 +++++++--
 .../web/OcorrenciaMunicipalController.java    | 17 ++++++++++++++--
 .../web/UsuarioController.java                |  2 +-
 .../WEB-INF/tags/form/fields/datetime.tagx    | 12 +++++++++--
 .../WEB-INF/tags/form/fields/editor.tagx      |  3 +++
 .../WEB-INF/tags/form/fields/input.tagx       | 20 ++++++++++++++-----
 .../WEB-INF/tags/form/fields/reference.tagx   |  3 +++
 .../WEB-INF/tags/form/fields/select.tagx      | 18 +++++++++++++----
 .../WEB-INF/tags/form/fields/textarea.tagx    | 17 ++++++++++++----
 12 files changed, 97 insertions(+), 27 deletions(-)

diff --git a/src/main/java/br/ufpr/c3sl/estacaojuventude/OcorrenciaMunicipal.java b/src/main/java/br/ufpr/c3sl/estacaojuventude/OcorrenciaMunicipal.java
index 7591aef..dbe0b38 100644
--- a/src/main/java/br/ufpr/c3sl/estacaojuventude/OcorrenciaMunicipal.java
+++ b/src/main/java/br/ufpr/c3sl/estacaojuventude/OcorrenciaMunicipal.java
@@ -65,19 +65,19 @@ public class OcorrenciaMunicipal {
     @DateTimeFormat(style = "S-")
     private Date ultimaAlteracao;
 
-    public static List<Programa> findAllOcorrenciasCandidatos() {
+    public static List<OcorrenciaMunicipal> findAllOcorrenciasCandidatos() {
         return entityManager().createNativeQuery("SELECT * FROM Ocorrencia_Municipal WHERE status = 'Candidato'", OcorrenciaMunicipal.class).getResultList();
     }
 
-    public static List<Programa> findAllOcorrenciasEfetivos() {
+    public static List<OcorrenciaMunicipal> findAllOcorrenciasEfetivos() {
         return entityManager().createNativeQuery("SELECT * FROM Ocorrencia_Municipal WHERE status = 'Efetivo'", OcorrenciaMunicipal.class).getResultList();
     }
 
-    public static List<Programa> findAllOcorrenciasRejeitados() {
+    public static List<OcorrenciaMunicipal> findAllOcorrenciasRejeitados() {
         return entityManager().createNativeQuery("SELECT * FROM Ocorrencia_Municipal WHERE status = 'Rejeitado'", OcorrenciaMunicipal.class).getResultList();
     }
 
-    public static List<Programa> findMinhasOcorrencias() {
+    public static List<OcorrenciaMunicipal> findMinhasOcorrencias() {
         String login = SecurityContextHolder.getContext().getAuthentication().getName();
         return entityManager().createNativeQuery("SELECT * FROM Ocorrencia_Municipal o, Usuario u WHERE o.usuario = u.id and o.status = 'Candidato' and u.login = '" + login + "'", OcorrenciaMunicipal.class).getResultList();
     }
diff --git a/src/main/java/br/ufpr/c3sl/estacaojuventude/web/ApplicationConversionServiceFactoryBean.java b/src/main/java/br/ufpr/c3sl/estacaojuventude/web/ApplicationConversionServiceFactoryBean.java
index d25f119..770c5ed 100644
--- a/src/main/java/br/ufpr/c3sl/estacaojuventude/web/ApplicationConversionServiceFactoryBean.java
+++ b/src/main/java/br/ufpr/c3sl/estacaojuventude/web/ApplicationConversionServiceFactoryBean.java
@@ -41,7 +41,7 @@ public class ApplicationConversionServiceFactoryBean extends FormattingConversio
         return new org.springframework.core.convert.converter.Converter<br.ufpr.c3sl.estacaojuventude.OrgaoExecutor, java.lang.String>() {
             public String convert(OrgaoExecutor orgaoExecutor) {
             	if (orgaoExecutor.getSigla() == null)
-            		return new StringBuilder().append("").append(" - ").append(orgaoExecutor.getNome()).toString();
+            		return new StringBuilder().append(orgaoExecutor.getNome()).toString();
                 return new StringBuilder().append(orgaoExecutor.getSigla()).append(" - ").append(orgaoExecutor.getNome()).toString();
             }
         };
@@ -76,7 +76,7 @@ public class ApplicationConversionServiceFactoryBean extends FormattingConversio
 	public Converter<Localizacao, String> getLocalizacaoToStringConverter() {
         return new org.springframework.core.convert.converter.Converter<br.ufpr.c3sl.estacaojuventude.Localizacao, java.lang.String>() {
             public String convert(Localizacao localizacao) {
-                return new StringBuilder().append(localizacao.getOcorrencia().getProgramaVinculado().getNomeOficial()).append(" - ").append(localizacao.getOcorrencia().getMunicipio().getNome()).append(" - ").append(localizacao.getLocal()).toString();
+                return new StringBuilder().append(localizacao.getOcorrencia().getProgramaVinculado().getNomeOficial()).append(" - ").append(localizacao.getOcorrencia().getMunicipio().getNome()).toString();
             }
         };
     }
@@ -84,6 +84,8 @@ public class ApplicationConversionServiceFactoryBean extends FormattingConversio
 	public Converter<OcorrenciaMunicipal, String> getOcorrenciaMunicipalToStringConverter() {
         return new org.springframework.core.convert.converter.Converter<br.ufpr.c3sl.estacaojuventude.OcorrenciaMunicipal, java.lang.String>() {
             public String convert(OcorrenciaMunicipal ocorrenciaMunicipal) {
+            	if (ocorrenciaMunicipal.getProgramaVinculado() == null || ocorrenciaMunicipal.getMunicipio() == null)
+            		return new StringBuilder().append("").toString();
                 return new StringBuilder().append(ocorrenciaMunicipal.getProgramaVinculado().getNomeOficial()).append(" - ").append(ocorrenciaMunicipal.getMunicipio().getNome()).toString();
             }
         };
diff --git a/src/main/java/br/ufpr/c3sl/estacaojuventude/web/LocalizacaoController.java b/src/main/java/br/ufpr/c3sl/estacaojuventude/web/LocalizacaoController.java
index 22eadcc..5a17796 100644
--- a/src/main/java/br/ufpr/c3sl/estacaojuventude/web/LocalizacaoController.java
+++ b/src/main/java/br/ufpr/c3sl/estacaojuventude/web/LocalizacaoController.java
@@ -2,6 +2,7 @@ package br.ufpr.c3sl.estacaojuventude.web;
 
 import java.util.Arrays;
 import java.util.Calendar;
+import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.validation.Valid;
@@ -184,7 +185,13 @@ public class LocalizacaoController {
 	
 	void populateEditForm(Model uiModel, Localizacao localizacao) {
         uiModel.addAttribute("localizacao", localizacao);
-        uiModel.addAttribute("ocorrenciamunicipais", OcorrenciaMunicipal.findAllOcorrenciaMunicipals());
+        
+        List<OcorrenciaMunicipal> lo = OcorrenciaMunicipal.findAllOcorrenciasEfetivos();
+        OcorrenciaMunicipal o = new OcorrenciaMunicipal();
+        o.setId((long) 0);
+        lo.add(0, o);
+        uiModel.addAttribute("ocorrenciamunicipais", lo);
+        
         uiModel.addAttribute("usuarios", Usuario.findAllUsuarios());
         uiModel.addAttribute("tipostatuses", Arrays.asList(TipoStatus.values()));
         uiModel.addAttribute("situacaos", Arrays.asList(Situacao.values()));
diff --git a/src/main/java/br/ufpr/c3sl/estacaojuventude/web/MunicipioController.java b/src/main/java/br/ufpr/c3sl/estacaojuventude/web/MunicipioController.java
index 9aa60e4..c376988 100644
--- a/src/main/java/br/ufpr/c3sl/estacaojuventude/web/MunicipioController.java
+++ b/src/main/java/br/ufpr/c3sl/estacaojuventude/web/MunicipioController.java
@@ -66,9 +66,14 @@ public class MunicipioController {
 	void populateEditForm(Model uiModel, Municipio municipio) {
         uiModel.addAttribute("municipio", municipio);
         addDateTimeFormatPatterns(uiModel);
-        uiModel.addAttribute("estadoes", Estado.findAllEstadoes());
         
-        uiModel.addAttribute("municipios", Municipio.findAllMunicipios());
+        List<Estado> le = Estado.findAllEstadoes();
+        Estado e = new Estado();
+        e.setNome("");
+        le.add(0, e);
+        uiModel.addAttribute("estadoes", le);
+        
+        //uiModel.addAttribute("municipios", Municipio.findAllMunicipios());
         List<Municipio> lm = Municipio.findAllMunicipios();
         Municipio m = new Municipio();
         m.setNome("");
diff --git a/src/main/java/br/ufpr/c3sl/estacaojuventude/web/OcorrenciaMunicipalController.java b/src/main/java/br/ufpr/c3sl/estacaojuventude/web/OcorrenciaMunicipalController.java
index 32f446b..1260c82 100644
--- a/src/main/java/br/ufpr/c3sl/estacaojuventude/web/OcorrenciaMunicipalController.java
+++ b/src/main/java/br/ufpr/c3sl/estacaojuventude/web/OcorrenciaMunicipalController.java
@@ -188,9 +188,22 @@ public class OcorrenciaMunicipalController {
 	void populateEditForm(Model uiModel, OcorrenciaMunicipal ocorrenciaMunicipal) {
         uiModel.addAttribute("ocorrenciaMunicipal", ocorrenciaMunicipal);
         uiModel.addAttribute("localizacaos", Localizacao.findAllLocalizacaos());
-        uiModel.addAttribute("municipios", Municipio.findAllMunicipios());
+        
+        List<Municipio> lm = Municipio.findAllMunicipios();
+        Municipio m = new Municipio();
+        m.setId((long) 0);
+        m.setNome("");
+        lm.add(0, m);
+        uiModel.addAttribute("municipios", lm);
+        
         uiModel.addAttribute("orgaoexecutores", OrgaoExecutor.findAllOrgaoExecutors());
-        uiModel.addAttribute("programas", Programa.findAllProgramasEfetivos());
+        
+        List<Programa> lp = Programa.findAllProgramasEfetivos();
+        Programa p = new Programa();
+        p.setId((long) 0);
+        lp.add(0, p);
+        uiModel.addAttribute("programas", lp);
+        
         uiModel.addAttribute("tipostatuses", Arrays.asList(TipoStatus.values()));
         uiModel.addAttribute("situacaos", Arrays.asList(Situacao.values()));
         uiModel.addAttribute("usuarios", Usuario.findAllUsuarios());
diff --git a/src/main/java/br/ufpr/c3sl/estacaojuventude/web/UsuarioController.java b/src/main/java/br/ufpr/c3sl/estacaojuventude/web/UsuarioController.java
index e782c77..af5872d 100644
--- a/src/main/java/br/ufpr/c3sl/estacaojuventude/web/UsuarioController.java
+++ b/src/main/java/br/ufpr/c3sl/estacaojuventude/web/UsuarioController.java
@@ -75,7 +75,7 @@ public class UsuarioController {
     
     void populateEditForm(Model uiModel, Usuario usuario) {
         uiModel.addAttribute("usuario", usuario);
-        uiModel.addAttribute("tipousuarios", Arrays.asList(TipoUsuario.Usuario, TipoUsuario.Administrador/*TipoUsuario.values()*/));
+        uiModel.addAttribute("tipousuarios", Arrays.asList(" ", TipoUsuario.Usuario, TipoUsuario.Administrador/*TipoUsuario.values()*/));
     }
 	
 	@RequestMapping(value = "changepassword", method = RequestMethod.GET)
diff --git a/src/main/webapp/WEB-INF/tags/form/fields/datetime.tagx b/src/main/webapp/WEB-INF/tags/form/fields/datetime.tagx
index 9346612..0f0efba 100644
--- a/src/main/webapp/WEB-INF/tags/form/fields/datetime.tagx
+++ b/src/main/webapp/WEB-INF/tags/form/fields/datetime.tagx
@@ -33,9 +33,12 @@
     </c:if>
 
     <script type="text/javascript">dojo.require('dijit.form.DateTextBox')</script>
-    <div id="_${sec_id}_id">
+    <div id="_${sec_id}_id" onmouseover="dijit.Tooltip.defaultPosition=['after']" style="margin-right: 25%;">
       <label for="_${sec_field}_id">
         <c:out value="${label}" />
+        <c:if test="${required}">
+        *
+        </c:if>
         :
       </label>
       <c:choose>
@@ -68,7 +71,12 @@
         <c:set var="sec_dateTimePattern">
           <spring:escapeBody javaScriptEscape="true">${dateTimePattern}</spring:escapeBody>
         </c:set>
-        Spring.addDecoration(new Spring.ElementDecoration({elementId : '_${sec_field}_id', widgetType : 'dijit.form.DateTextBox', widgetAttrs : {promptMessage: '${sec_field_validation}', invalidMessage: '${sec_field_invalid}', required: ${required}, constraints: {datePattern : '${sec_dateTimePattern}', required : ${required}}, datePattern : '${sec_dateTimePattern}'}})); </script>
+        Spring.addDecoration(new Spring.ElementDecoration({elementId : '_${sec_field}_id', widgetType : 'dijit.form.DateTextBox', widgetAttrs : {invalidMessage: '${sec_field_invalid}', required: ${required}, constraints: {datePattern : '${sec_dateTimePattern}', required : ${required}}, datePattern : '${sec_dateTimePattern}'}}));
+        new dijit.Tooltip({
+    		connectId: ["_${sec_id}_id"],
+    		label: "${sec_field_validation}",
+		});
+      </script>
     </div>
     <br />
   </c:if>
diff --git a/src/main/webapp/WEB-INF/tags/form/fields/editor.tagx b/src/main/webapp/WEB-INF/tags/form/fields/editor.tagx
index c4c6192..a9b3d0c 100644
--- a/src/main/webapp/WEB-INF/tags/form/fields/editor.tagx
+++ b/src/main/webapp/WEB-INF/tags/form/fields/editor.tagx
@@ -34,6 +34,9 @@
     <div id="_${fn:escapeXml(id)}_id">
       <label for="_${sec_field}_id">
         <c:out value="${fn:escapeXml(label)}" />
+        <c:if test="${required}">
+        *
+        </c:if>
         :
       </label>
       <form:hidden id="_${sec_field}_id" path="${sec_field}" />
diff --git a/src/main/webapp/WEB-INF/tags/form/fields/input.tagx b/src/main/webapp/WEB-INF/tags/form/fields/input.tagx
index b675439..bd0fa45 100644
--- a/src/main/webapp/WEB-INF/tags/form/fields/input.tagx
+++ b/src/main/webapp/WEB-INF/tags/form/fields/input.tagx
@@ -57,22 +57,26 @@
       <spring:escapeBody javaScriptEscape="true" >${field}</spring:escapeBody>
     </c:set>
     
-    <div id="_${fn:escapeXml(id)}_id">
+    <div id="_${fn:escapeXml(id)}_id" onmouseover="dijit.Tooltip.defaultPosition=['after']" style="margin-right: 25%;">
+    <!--  style="margin-right: auto;" -->
       <label for="_${sec_field}_id">
         <c:out value="${fn:escapeXml(label)}" />
+        <c:if test="${required}">
+        *
+        </c:if>
         :
       </label>
       <c:choose>
         <c:when test="${disableFormBinding}">
-          <input id="_${sec_field}_id" name="${sec_field}" type="${fn:escapeXml(type)}" />
+          <input id="_${sec_field}_id" name="${sec_field}" type="${fn:escapeXml(type)}"/>
         </c:when>
         <c:otherwise>
           <c:choose>
             <c:when test="${type eq 'password'}">
-              <form:password id="_${sec_field}_id" path="${sec_field}" disabled="${disabled}" />
+              <form:password id="_${sec_field}_id" path="${sec_field}" disabled="${disabled}"/>
             </c:when>
             <c:otherwise>
-              <form:input id="_${sec_field}_id" path="${sec_field}" disabled="${disabled}" />
+              <form:input id="_${sec_field}_id" path="${sec_field}" disabled="${disabled}"/>
             </c:otherwise>
           </c:choose>
           <br />
@@ -108,8 +112,14 @@
       <c:if test="${!empty validationRegex}">
         <c:set var="sec_validation_regex" value="regExp : '${validationRegex}', " />
       </c:if>
+      
       <script type="text/javascript">
-        Spring.addDecoration(new Spring.ElementDecoration({elementId : '_${sec_field}_id', widgetType : 'dijit.form.ValidationTextBox', widgetAttrs : {promptMessage: '${sec_field_validation}', invalidMessage: '${sec_field_invalid}', required : ${required}, ${sec_validation_regex} missingMessage : '${sec_field_required}' }})); 
+        //promptMessage: '${sec_field_validation}',
+        Spring.addDecoration(new Spring.ElementDecoration({elementId : '_${sec_field}_id', widgetType : 'dijit.form.ValidationTextBox', widgetAttrs : { invalidMessage: '${sec_field_invalid}', required : ${required}, ${sec_validation_regex} missingMessage : '${sec_field_required}'}}));
+        new dijit.Tooltip({
+    		connectId: ["_${fn:escapeXml(id)}_id"],
+    		label: "${sec_field_validation}",
+		});
       </script>
     </div>
     <br />
diff --git a/src/main/webapp/WEB-INF/tags/form/fields/reference.tagx b/src/main/webapp/WEB-INF/tags/form/fields/reference.tagx
index a99eb1c..0a4e5b7 100644
--- a/src/main/webapp/WEB-INF/tags/form/fields/reference.tagx
+++ b/src/main/webapp/WEB-INF/tags/form/fields/reference.tagx
@@ -18,6 +18,9 @@
     <div id="_${fn:escapeXml(id)}_id">
       <label for="_${fn:escapeXml(field)}_id">
         <c:out value="${fn:escapeXml(label)}" />
+        <c:if test="${required}">
+        *
+        </c:if>
         :
       </label>
       <spring:url value="${path}" var="create_url">
diff --git a/src/main/webapp/WEB-INF/tags/form/fields/select.tagx b/src/main/webapp/WEB-INF/tags/form/fields/select.tagx
index e1f136e..ee30df0 100644
--- a/src/main/webapp/WEB-INF/tags/form/fields/select.tagx
+++ b/src/main/webapp/WEB-INF/tags/form/fields/select.tagx
@@ -56,11 +56,14 @@
       <spring:escapeBody htmlEscape="true" >${itemLabel}</spring:escapeBody>
     </c:set>
 
-    <div id="_${fn:escapeXml(id)}_id">
+    <div id="_${fn:escapeXml(id)}_id" onmouseover="dijit.Tooltip.defaultPosition=['after']" style="margin-right: 25%;">
       <c:choose>
         <c:when test="${not empty items}">
           <label for="_${sec_field}_id">
             <c:out value="${fn:escapeXml(label)}" />
+            <c:if test="${required}">
+        	*
+        	</c:if>
             :
           </label>
           <c:choose>
@@ -200,10 +203,10 @@
           
           <c:choose>
              <c:when test="${empty hintValue}">
-               <spring:message argumentSeparator="," arguments="${label}, " code="field_simple_validation" var="field_validation" htmlEscape="false" />
+               <spring:message argumentSeparator="," arguments="${label}, " code="field_simple_validation" var="sec_field_validation" htmlEscape="false" />
              </c:when>
              <c:otherwise>
-               <spring:message code="${hintValue}" var="field_validation" htmlEscape="false" />
+               <spring:message code="${hintValue}" var="sec_field_validation" htmlEscape="false" />
              </c:otherwise>
           </c:choose>
           
@@ -220,7 +223,7 @@
             </c:when> 
           
             <c:when test="${multiple == false}">
-              <script type="text/javascript">Spring.addDecoration(new Spring.ElementDecoration({elementId : '_${sec_field}_id', widgetType: 'dijit.form.FilteringSelect', widgetAttrs : {promptMessage: '${sec_field_validation}', hasDownArrow : true}})); </script>
+              <script type="text/javascript">Spring.addDecoration(new Spring.ElementDecoration({elementId : '_${sec_field}_id', widgetType: 'dijit.form.FilteringSelect', widgetAttrs : {hasDownArrow : true}})); </script>
             </c:when>
             
             <!-- disabled due to http://jira.springframework.org/browse/ROO-909   dijit.form.MultiSelect    dojox.form.CheckedMultiSelect <c:otherwise> <script type="text/javascript">Spring.addDecoration(new Spring.ElementDecoration({elementId : '_${field}_id', widgetType: 'dojox.form.CheckedMultiSelect', widgetAttrs : {multiple: true}})); </script> </c:otherwise> -->
@@ -260,6 +263,13 @@
           <field:reference field="${label}" id="${id}" path="${path}" required="${required}" />
         </c:otherwise>
       </c:choose>
+      
+      <script type="text/javascript">
+      	new dijit.Tooltip({
+  			connectId: ["_${fn:escapeXml(id)}_id"],
+  			label: "${sec_field_validation}",
+		});
+      </script>
     </div>
     <br />
   </c:if>
diff --git a/src/main/webapp/WEB-INF/tags/form/fields/textarea.tagx b/src/main/webapp/WEB-INF/tags/form/fields/textarea.tagx
index c950714..aba57a8 100644
--- a/src/main/webapp/WEB-INF/tags/form/fields/textarea.tagx
+++ b/src/main/webapp/WEB-INF/tags/form/fields/textarea.tagx
@@ -34,23 +34,32 @@
     
     <c:choose>
       <c:when test="${empty hintValue}">
-        <spring:message argumentSeparator="," arguments="${label}, " code="field_simple_validation" var="field_validation" htmlEscape="false" />
+        <spring:message argumentSeparator="," arguments="${label}, " code="field_simple_validation" var="sec_field_validation" htmlEscape="false" />
       </c:when>
       <c:otherwise>
-        <spring:message code="${hintValue}" var="field_validation" htmlEscape="false" />
+        <spring:message code="${hintValue}" var="sec_field_validation" htmlEscape="false" />
       </c:otherwise>
     </c:choose>
 
     <script type="text/javascript">dojo.require("dijit.form.SimpleTextarea");</script>
-    <div id="_${fn:escapeXml(id)}_id">
+    <div id="_${fn:escapeXml(id)}_id" onmouseover="dijit.Tooltip.defaultPosition=['after']" style="margin-right: 25%;">
       <label for="_${sec_field}_id">
         <c:out value="${fn:escapeXml(label)}" />
+        <c:if test="${required}">
+        *
+        </c:if>
         :
       </label>
       <form:textarea id="_${sec_field}_id" path="${sec_field}" disabled="${disabled}" />
       <br />
       <form:errors cssClass="errors" id="_${sec_field}_error_id" path="${sec_field}" />
-      <script type="text/javascript">Spring.addDecoration(new Spring.ElementDecoration({elementId : '_${sec_field}_id', widgetType : 'dijit.form.SimpleTextarea', widgetAttrs : {promptMessage: '${sec_field_validation}', disabled : ${disabled}}})); </script>
+      <script type="text/javascript">
+      	Spring.addDecoration(new Spring.ElementDecoration({elementId : '_${sec_field}_id', widgetType : 'dijit.form.SimpleTextarea', widgetAttrs : {disabled : ${disabled}}}));
+      	new dijit.Tooltip({
+    		connectId: ["_${fn:escapeXml(id)}_id"],
+    		label: "${sec_field_validation}",
+		});
+      </script>
     </div>
     <br />
 
-- 
GitLab