From d0b4388c5b6435eff54deeabe5f2e1c3e6d1e3a6 Mon Sep 17 00:00:00 2001
From: Fabiano Sluzarski <fs09@inf.ufpr.br>
Date: Thu, 30 Jan 2014 10:57:21 -0200
Subject: [PATCH] =?UTF-8?q?auto=20completar=20no=20munic=C3=ADpio,=20label?=
 =?UTF-8?q?=20ocorrencia=20trocada=20para=20PRograma=20-=20Municipio,=20ar?=
 =?UTF-8?q?rumado=20componentes=20de=20sele=C3=A7=C3=A3o,=20listagem=20de?=
 =?UTF-8?q?=20localiza=C3=A7=C3=A3o=20aprimorada,=20arrumado=20problema=20?=
 =?UTF-8?q?em=20nivel=20e=20temporalidade=20onde=20vazio=20n=C3=A3o=20era?=
 =?UTF-8?q?=20selecionado=20por=20padr=C3=A3o=20e=20adicionado=20component?=
 =?UTF-8?q?e=20checkedmultiselect,=20testes=20necessarios=20para=20essa=20?=
 =?UTF-8?q?componente?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../c3sl/estacaojuventude/Localizacao.java    |   8 +-
 .../ufpr/c3sl/estacaojuventude/Municipio.java |   5 +
 .../Municipio_Roo_Jpa_ActiveRecord.aj         |   4 -
 .../ufpr/c3sl/estacaojuventude/Tematica.java  |   2 +-
 ...plicationConversionServiceFactoryBean.java |   2 +
 .../web/MunicipioController.java              |  15 +++
 .../web/MunicipioController_Roo_Controller.aj |   7 --
 .../web/OcorrenciaMunicipalController.java    |   1 +
 .../web/ProgramaController.java               |   4 +-
 .../WEB-INF/tags/form/fields/select.tagx      |  54 +++++++--
 .../WEB-INF/tags/util/load-scripts.tagx       |  13 ++-
 .../WEB-INF/views/localizacoes/list.jspx      |   4 +-
 .../WEB-INF/views/localizacoes/mylist.jspx    |   2 +-
 .../WEB-INF/views/municipios/create.jspx      |   3 +-
 .../views/ocorrenciamunicipais/create.jspx    |   4 +-
 .../views/ocorrenciamunicipais/update.jspx    |  10 +-
 .../WEB-INF/views/programas/update.jspx       |   8 +-
 src/main/webapp/styles/CheckedMultiSelect.js  | 107 ++++++++++++++++++
 18 files changed, 210 insertions(+), 43 deletions(-)
 create mode 100644 src/main/webapp/styles/CheckedMultiSelect.js

diff --git a/src/main/java/br/ufpr/c3sl/estacaojuventude/Localizacao.java b/src/main/java/br/ufpr/c3sl/estacaojuventude/Localizacao.java
index 190ce24..0e00e4a 100644
--- a/src/main/java/br/ufpr/c3sl/estacaojuventude/Localizacao.java
+++ b/src/main/java/br/ufpr/c3sl/estacaojuventude/Localizacao.java
@@ -57,19 +57,19 @@ public class Localizacao {
     private Date ultimaAlteracao;
 
     public static List<Localizacao> findAllLocalizacoesCandidatos() {
-        return entityManager().createNativeQuery("SELECT * FROM Localizacao WHERE status = 'Candidato'", Localizacao.class).getResultList();
+        return entityManager().createNativeQuery("SELECT * FROM Localizacao l, Ocorrencia_Municipal o, Programa p, Municipio m WHERE l.status = 'Candidato' AND l.ocorrencia = o.id AND o.programa_vinculado = p.id AND o.municipio = m.id ORDER BY p.nome_oficial, m.nome", Localizacao.class).getResultList();
     }
 
     public static List<Localizacao> findAllLocalizacoesEfetivos() {
-        return entityManager().createNativeQuery("SELECT * FROM Localizacao WHERE status = 'Efetivo'", Localizacao.class).getResultList();
+        return entityManager().createNativeQuery("SELECT * FROM Localizacao l, Ocorrencia_Municipal o, Programa p, Municipio m WHERE l.status = 'Efetivo' AND l.ocorrencia = o.id AND o.programa_vinculado = p.id AND o.municipio = m.id ORDER BY p.nome_oficial, m.nome", Localizacao.class).getResultList();
     }
 
     public static List<Localizacao> findAllLocalizacoesRejeitados() {
-        return entityManager().createNativeQuery("SELECT * FROM Localizacao WHERE status = 'Rejeitado'", Localizacao.class).getResultList();
+        return entityManager().createNativeQuery("SELECT * FROM Localizacao l, Ocorrencia_Municipal o, Programa p, Municipio m WHERE l.status = 'Rejeitado' AND l.ocorrencia = o.id AND o.programa_vinculado = p.id AND o.municipio = m.id ORDER BY p.nome_oficial, m.nome", Localizacao.class).getResultList();
     }
 
     public static List<Localizacao> findMinhasLocalizacoes() {
         String login = SecurityContextHolder.getContext().getAuthentication().getName();
-        return entityManager().createNativeQuery("SELECT * FROM Localizacao p, Usuario u WHERE p.usuario = u.id and p.status = 'Candidato' and u.login = '" + login + "'", Localizacao.class).getResultList();
+        return entityManager().createNativeQuery("SELECT * FROM Localizacao l, Ocorrencia_Municipal o, Programa p, Municipio m, Usuario u WHERE l.ocorrencia = o.id AND o.programa_vinculado = p.id AND o.municipio = m.id AND l.usuario = u.id AND l.status = 'Candidato' and u.login = '" + login + "' ORDER BY p.nome_oficial, m.nome", Localizacao.class).getResultList();
     }
 }
diff --git a/src/main/java/br/ufpr/c3sl/estacaojuventude/Municipio.java b/src/main/java/br/ufpr/c3sl/estacaojuventude/Municipio.java
index 656b67e..0b99bc1 100644
--- a/src/main/java/br/ufpr/c3sl/estacaojuventude/Municipio.java
+++ b/src/main/java/br/ufpr/c3sl/estacaojuventude/Municipio.java
@@ -1,6 +1,7 @@
 package br.ufpr.c3sl.estacaojuventude;
 
 import java.util.Date;
+import java.util.List;
 
 import javax.persistence.OneToOne;
 import javax.persistence.Temporal;
@@ -24,4 +25,8 @@ public class Municipio {
 	@Temporal(TemporalType.DATE)
     @DateTimeFormat(style = "S-")
     private Date ultimaAlteracao;
+	
+	public static List<Municipio> findAllMunicipios() {
+        return entityManager().createQuery("SELECT o FROM Municipio o ORDER BY nome", Municipio.class).getResultList();
+    }
 }
diff --git a/src/main/java/br/ufpr/c3sl/estacaojuventude/Municipio_Roo_Jpa_ActiveRecord.aj b/src/main/java/br/ufpr/c3sl/estacaojuventude/Municipio_Roo_Jpa_ActiveRecord.aj
index 14f22f2..8cf2cd4 100644
--- a/src/main/java/br/ufpr/c3sl/estacaojuventude/Municipio_Roo_Jpa_ActiveRecord.aj
+++ b/src/main/java/br/ufpr/c3sl/estacaojuventude/Municipio_Roo_Jpa_ActiveRecord.aj
@@ -24,10 +24,6 @@ privileged aspect Municipio_Roo_Jpa_ActiveRecord {
         return entityManager().createQuery("SELECT COUNT(o) FROM Municipio o", Long.class).getSingleResult();
     }
     
-    public static List<Municipio> Municipio.findAllMunicipios() {
-        return entityManager().createQuery("SELECT o FROM Municipio o", Municipio.class).getResultList();
-    }
-    
     public static Municipio Municipio.findMunicipio(Long id) {
         if (id == null) return null;
         return entityManager().find(Municipio.class, id);
diff --git a/src/main/java/br/ufpr/c3sl/estacaojuventude/Tematica.java b/src/main/java/br/ufpr/c3sl/estacaojuventude/Tematica.java
index f4dc721..3337fb2 100644
--- a/src/main/java/br/ufpr/c3sl/estacaojuventude/Tematica.java
+++ b/src/main/java/br/ufpr/c3sl/estacaojuventude/Tematica.java
@@ -1,6 +1,7 @@
 package br.ufpr.c3sl.estacaojuventude;
 
 import java.util.Date;
+import java.util.List;
 
 import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
@@ -20,5 +21,4 @@ public class Tematica {
 	@Temporal(TemporalType.DATE)
     @DateTimeFormat(style = "S-")
     private Date ultimaAlteracao;
-
 }
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 78d1a76..d25f119 100644
--- a/src/main/java/br/ufpr/c3sl/estacaojuventude/web/ApplicationConversionServiceFactoryBean.java
+++ b/src/main/java/br/ufpr/c3sl/estacaojuventude/web/ApplicationConversionServiceFactoryBean.java
@@ -66,6 +66,8 @@ public class ApplicationConversionServiceFactoryBean extends FormattingConversio
 	public Converter<Municipio, String> getMunicipioToStringConverter() {
         return new org.springframework.core.convert.converter.Converter<br.ufpr.c3sl.estacaojuventude.Municipio, java.lang.String>() {
             public String convert(Municipio municipio) {
+            	if (municipio.getUf() == null)
+            		return new StringBuilder().append(municipio.getNome()).toString();
                 return new StringBuilder().append(municipio.getNome()).append(" - ").append(municipio.getUf().getSigla()).toString();
             }
         };
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 50ea79a..9aa60e4 100644
--- a/src/main/java/br/ufpr/c3sl/estacaojuventude/web/MunicipioController.java
+++ b/src/main/java/br/ufpr/c3sl/estacaojuventude/web/MunicipioController.java
@@ -1,10 +1,12 @@
 package br.ufpr.c3sl.estacaojuventude.web;
 
 import java.util.Calendar;
+import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.validation.Valid;
 
+import br.ufpr.c3sl.estacaojuventude.Estado;
 import br.ufpr.c3sl.estacaojuventude.Municipio;
 
 import org.springframework.roo.addon.web.mvc.controller.scaffold.RooWebScaffold;
@@ -61,4 +63,17 @@ public class MunicipioController {
         return "redirect:/municipios";
     }
 	
+	void populateEditForm(Model uiModel, Municipio municipio) {
+        uiModel.addAttribute("municipio", municipio);
+        addDateTimeFormatPatterns(uiModel);
+        uiModel.addAttribute("estadoes", Estado.findAllEstadoes());
+        
+        uiModel.addAttribute("municipios", Municipio.findAllMunicipios());
+        List<Municipio> lm = Municipio.findAllMunicipios();
+        Municipio m = new Municipio();
+        m.setNome("");
+        lm.add(0, m);
+        uiModel.addAttribute("municipios", lm);
+    }
+	
 }
diff --git a/src/main/java/br/ufpr/c3sl/estacaojuventude/web/MunicipioController_Roo_Controller.aj b/src/main/java/br/ufpr/c3sl/estacaojuventude/web/MunicipioController_Roo_Controller.aj
index a654d6e..db3328d 100644
--- a/src/main/java/br/ufpr/c3sl/estacaojuventude/web/MunicipioController_Roo_Controller.aj
+++ b/src/main/java/br/ufpr/c3sl/estacaojuventude/web/MunicipioController_Roo_Controller.aj
@@ -3,7 +3,6 @@
 
 package br.ufpr.c3sl.estacaojuventude.web;
 
-import br.ufpr.c3sl.estacaojuventude.Estado;
 import br.ufpr.c3sl.estacaojuventude.Municipio;
 import br.ufpr.c3sl.estacaojuventude.web.MunicipioController;
 import java.io.UnsupportedEncodingException;
@@ -58,12 +57,6 @@ privileged aspect MunicipioController_Roo_Controller {
         uiModel.addAttribute("municipio_ultimaalteracao_date_format", DateTimeFormat.patternForStyle("S-", LocaleContextHolder.getLocale()));
     }
     
-    void MunicipioController.populateEditForm(Model uiModel, Municipio municipio) {
-        uiModel.addAttribute("municipio", municipio);
-        addDateTimeFormatPatterns(uiModel);
-        uiModel.addAttribute("estadoes", Estado.findAllEstadoes());
-    }
-    
     String MunicipioController.encodeUrlPathSegment(String pathSegment, HttpServletRequest httpServletRequest) {
         String enc = httpServletRequest.getCharacterEncoding();
         if (enc == null) {
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 039c37c..32f446b 100644
--- a/src/main/java/br/ufpr/c3sl/estacaojuventude/web/OcorrenciaMunicipalController.java
+++ b/src/main/java/br/ufpr/c3sl/estacaojuventude/web/OcorrenciaMunicipalController.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;
diff --git a/src/main/java/br/ufpr/c3sl/estacaojuventude/web/ProgramaController.java b/src/main/java/br/ufpr/c3sl/estacaojuventude/web/ProgramaController.java
index b87c2aa..083964b 100644
--- a/src/main/java/br/ufpr/c3sl/estacaojuventude/web/ProgramaController.java
+++ b/src/main/java/br/ufpr/c3sl/estacaojuventude/web/ProgramaController.java
@@ -210,9 +210,9 @@ public class ProgramaController {
         uiModel.addAttribute("tipostatuses", Arrays.asList(TipoStatus.values()));
         uiModel.addAttribute("situacaos", Arrays.asList(Situacao.values()));
         //uiModel.addAttribute("tipotemporalidades", Arrays.asList(TipoTemporalidade.values()));
-        uiModel.addAttribute("tipotemporalidades", Arrays.asList("",TipoTemporalidade.Eventual,TipoTemporalidade.Permanente,TipoTemporalidade.Temporario));
+        uiModel.addAttribute("tipotemporalidades", Arrays.asList(" ",TipoTemporalidade.Eventual,TipoTemporalidade.Permanente,TipoTemporalidade.Temporario));
         //uiModel.addAttribute("nivelprogramas", Arrays.asList(NivelPrograma.values()));
-        uiModel.addAttribute("nivelprogramas", Arrays.asList("",NivelPrograma.Estadual,NivelPrograma.Municipal,NivelPrograma.Nacional));
+        uiModel.addAttribute("nivelprogramas", Arrays.asList(" ",NivelPrograma.Estadual,NivelPrograma.Municipal,NivelPrograma.Nacional));
         uiModel.addAttribute("ocorrenciamunicipais", OcorrenciaMunicipal.findAllOcorrenciaMunicipals());
     }
     
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 108d7a8..e1f136e 100644
--- a/src/main/webapp/WEB-INF/tags/form/fields/select.tagx
+++ b/src/main/webapp/WEB-INF/tags/form/fields/select.tagx
@@ -17,6 +17,7 @@
   
   <jsp:directive.attribute name="hintValue" type="java.lang.String" required="false" rtexprvalue="true" description="Specify the code for a diferent hint to be displayed." />
   <jsp:directive.attribute name="comboboxform" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicates if the select can serve as well as an input and it has a warning message for repeated values. (default false)." />
+  <jsp:directive.attribute name="defaultmultiple" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Disable checked multiselect. (default false)" />
 
 
   <c:if test="${empty render or render}">
@@ -25,6 +26,10 @@
       <c:set value="false" var="comboboxform" />
     </c:if>
     
+    <c:if test="${empty defaultmultiple}">
+      <c:set value="false" var="defaultmultiple" />
+    </c:if>
+    
     <spring:message code="global_warning" var="warning" htmlEscape="false" />
 
     <c:if test="${empty disabled}">
@@ -194,12 +199,12 @@
           </c:choose>
           
           <c:choose>
-            <c:when test="${empty hintValue}">
-              <spring:message argumentSeparator="," arguments="${label}, " code="field_simple_validation" var="field_validation" htmlEscape="false" />
-            </c:when>
-            <c:otherwise>
-              <spring:message code="${hintValue}" var="field_validation" htmlEscape="false" />
-            </c:otherwise>
+             <c:when test="${empty hintValue}">
+               <spring:message argumentSeparator="," arguments="${label}, " code="field_simple_validation" var="field_validation" htmlEscape="false" />
+             </c:when>
+             <c:otherwise>
+               <spring:message code="${hintValue}" var="field_validation" htmlEscape="false" />
+             </c:otherwise>
           </c:choose>
           
           <c:choose>
@@ -212,12 +217,43 @@
             	            return true;
             	        }
             		}})); </script>
-            </c:when>
+            </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 : ${hasDownArrow}}})); </script>
+              <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>
             </c:when>
-            <!-- disabled due to http://jira.springframework.org/browse/ROO-909 <c:otherwise> <script type="text/javascript">Spring.addDecoration(new Spring.ElementDecoration({elementId : '_${field}_id', widgetType: 'dijit.form.MultiSelect', widgetAttrs : {}})); </script> </c:otherwise> -->
+            
+            <!-- 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> -->
+            
+<!-- adicionado para checkedmultiselect -->
+            <c:when test="${multiple == true}">
+     			<script type="text/javascript">
+     			//alert("${sec_field} -"+"- ${disableCheckedMulti}");
+     				if ("${defaultmultiple}" == "false") {
+	         			Spring.addDecoration(new Spring.ElementDecoration({elementId : '_${sec_field}_id', widgetType: 'dojox.form.CheckedMultiSelect', widgetAttrs : {multiple: true}}));
+     				}
+     			</script>
+     			<script type="text/javascript">
+     			if ("${defaultmultiple}" == "false") {
+     				var lisopt = dojo.byId('_${sec_field}_id').options;
+         			var values = new Array();
+         			for (var x = 0 ; x &lt; lisopt.length ; x++)
+         			{
+             			if (lisopt[x].selected)
+                 			values[x] = lisopt[x].value;
+         			}
+         			//if (values.length >= 1) {
+	         			//alert('_${sec_field}_id '+values);
+    	     			//dojo.addOnLoad(  function(){ var sel = dijit.byId('_${sec_field}_id'); sel.set('value', values); });
+    	     			dojo.ready( function(){ var sel = dijit.byId('_${sec_field}_id'); sel.set('value', values); });
+         			//}
+         		}
+ 				</script>
+ 				
+ 				
+			</c:when>
+<!-- adicionado para checkedmultiselect -->
+            
           </c:choose>
         </c:when>
         <c:otherwise>
diff --git a/src/main/webapp/WEB-INF/tags/util/load-scripts.tagx b/src/main/webapp/WEB-INF/tags/util/load-scripts.tagx
index 3aa5ace..2d83623 100644
--- a/src/main/webapp/WEB-INF/tags/util/load-scripts.tagx
+++ b/src/main/webapp/WEB-INF/tags/util/load-scripts.tagx
@@ -9,9 +9,17 @@
   <spring:url value="/resources/spring/Spring.js" var="spring_url" />
   <spring:url value="/resources/spring/Spring-Dojo.js" var="spring_dojo_url" />
   <spring:url value="/resources/images/favicon.ico" var="favicon" />
+  
+  <spring:url value="/styles/CheckedMultiSelect.js" var="fixed_checkedmultiselect_url" />
+    
   <link rel="stylesheet" type="text/css" href="${tundra_url}" />
   <link rel="stylesheet" type="text/css" media="screen" href="${roo_css_url}" />
   <link rel="SHORTCUT ICON" href="${favicon}" />
+  
+  <!-- adicionado para checkedmultiselect  -->
+  <spring:url value="/resources/dojox/form/resources/CheckedMultiSelect.css" var="CheckedMultiSelect_url" />
+  <link rel="stylesheet" type="text/css" href="${CheckedMultiSelect_url}"></link>
+  <!-- adicionado para checkedmultiselect -->
 
   <!-- Get the user local from the page context (it was set by Spring MVC's locale resolver) -->
   <c:set var="userLocale">
@@ -20,10 +28,13 @@
   </c:set>
 
   <script type="text/javascript">var djConfig = {parseOnLoad: false, isDebug: false, locale: '${fn:toLowerCase(userLocale)}'};</script>
-
+  
   <script src="${dojo_url}" type="text/javascript"><!-- required for FF3 and Opera --></script>
   <script src="${spring_url}" type="text/javascript"><!-- /required for FF3 and Opera --></script>
   <script src="${spring_dojo_url}" type="text/javascript"><!-- required for FF3 and Opera --></script>
+  
+  <script src="${fixed_checkedmultiselect_url}" type="text/javascript"><!-- required for FF3 and Opera --></script>
+  
   <script language="JavaScript" type="text/javascript">dojo.require("dojo.parser");</script>
 
 </jsp:root>
\ No newline at end of file
diff --git a/src/main/webapp/WEB-INF/views/localizacoes/list.jspx b/src/main/webapp/WEB-INF/views/localizacoes/list.jspx
index ac8c3ab..983f953 100644
--- a/src/main/webapp/WEB-INF/views/localizacoes/list.jspx
+++ b/src/main/webapp/WEB-INF/views/localizacoes/list.jspx
@@ -5,7 +5,7 @@
     <sec:authorize ifAnyGranted="Administrador">
         <page:list id="pl_br_ufpr_c3sl_estacaojuventude_Localizacao" items="${localizacoes}" z="user-managed">
             <table:table data="${localizacoes}" id="l_br_ufpr_c3sl_estacaojuventude_Localizacao" path="/localizacoes" z="user-managed">
-                <table:column id="c_br_ufpr_c3sl_estacaojuventude_Localizacao_ocorrencia" property="ocorrencia" z="Zh52x+nH2S0PROzIt5iOOf1mGt0="/>
+                <table:column id="c_br_ufpr_c3sl_estacaojuventude_Localizacao_ocorrencia" label="Programa - Município" property="ocorrencia" z="user-managed"/>
                 <table:column id="c_br_ufpr_c3sl_estacaojuventude_Localizacao_local" property="local" z="xSJytVXDQ3YxHNNm+4W+rn8r5o4="/>
                 <table:column id="c_br_ufpr_c3sl_estacaojuventude_Localizacao_endereco" property="endereco" z="yrJ1tAlCgO1+zcbuVBSF4tMH7jg="/>
                 <table:column id="c_br_ufpr_c3sl_estacaojuventude_Localizacao_horarioFuncionamento" property="horarioFuncionamento" z="GPr41iVapzEF8dbrfiVVgRh0lNk="/>
@@ -17,7 +17,7 @@
     <sec:authorize ifAnyGranted="Usuario">
         <page:list id="pl_br_ufpr_c3sl_estacaojuventude_Localizacao" items="${localizacoes}" z="e3STKf8oW/0oqDr/KihOxpAlGBY=">
             <table:table data="${localizacoes}" delete="false" id="l_br_ufpr_c3sl_estacaojuventude_Localizacao" path="/localizacoes" update="false" z="LCLLP2BD/iSyYc+oJVBSMRvXM+Q=">
-                <table:column id="c_br_ufpr_c3sl_estacaojuventude_Localizacao_ocorrencia" property="ocorrencia" z="Zh52x+nH2S0PROzIt5iOOf1mGt0="/>
+                <table:column id="c_br_ufpr_c3sl_estacaojuventude_Localizacao_ocorrencia" label="Programa - Município" property="ocorrencia" z="Zh52x+nH2S0PROzIt5iOOf1mGt0="/>
                 <table:column id="c_br_ufpr_c3sl_estacaojuventude_Localizacao_local" property="local" z="xSJytVXDQ3YxHNNm+4W+rn8r5o4="/>
                 <table:column id="c_br_ufpr_c3sl_estacaojuventude_Localizacao_endereco" property="endereco" z="yrJ1tAlCgO1+zcbuVBSF4tMH7jg="/>
                 <table:column id="c_br_ufpr_c3sl_estacaojuventude_Localizacao_horarioFuncionamento" property="horarioFuncionamento" z="GPr41iVapzEF8dbrfiVVgRh0lNk="/>
diff --git a/src/main/webapp/WEB-INF/views/localizacoes/mylist.jspx b/src/main/webapp/WEB-INF/views/localizacoes/mylist.jspx
index 8f4fecc..353ec2b 100644
--- a/src/main/webapp/WEB-INF/views/localizacoes/mylist.jspx
+++ b/src/main/webapp/WEB-INF/views/localizacoes/mylist.jspx
@@ -4,7 +4,7 @@
     <jsp:output omit-xml-declaration="yes"/>
   	<page:list id="pl_br_ufpr_c3sl_estacaojuventude_Localizacao" items="${localizacoes}" z="e3STKf8oW/0oqDr/KihOxpAlGBY=">
        	<table:table data="${localizacoes}" id="l_br_ufpr_c3sl_estacaojuventude_Localizacao" path="/localizacoes" z="LCLLP2BD/iSyYc+oJVBSMRvXM+Q=">
-   	        <table:column id="c_br_ufpr_c3sl_estacaojuventude_Localizacao_ocorrencia" property="ocorrencia" z="Zh52x+nH2S0PROzIt5iOOf1mGt0="/>
+   	        <table:column label="Programa - Município" id="c_br_ufpr_c3sl_estacaojuventude_Localizacao_ocorrencia" property="ocorrencia" z="Zh52x+nH2S0PROzIt5iOOf1mGt0="/>
             <table:column id="c_br_ufpr_c3sl_estacaojuventude_Localizacao_local" property="local" z="xSJytVXDQ3YxHNNm+4W+rn8r5o4="/>
            	<table:column id="c_br_ufpr_c3sl_estacaojuventude_Localizacao_endereco" property="endereco" z="yrJ1tAlCgO1+zcbuVBSF4tMH7jg="/>
        	    <table:column id="c_br_ufpr_c3sl_estacaojuventude_Localizacao_horarioFuncionamento" property="horarioFuncionamento" z="GPr41iVapzEF8dbrfiVVgRh0lNk="/>
diff --git a/src/main/webapp/WEB-INF/views/municipios/create.jspx b/src/main/webapp/WEB-INF/views/municipios/create.jspx
index 0152d5b..1125449 100644
--- a/src/main/webapp/WEB-INF/views/municipios/create.jspx
+++ b/src/main/webapp/WEB-INF/views/municipios/create.jspx
@@ -3,7 +3,8 @@
     <jsp:directive.page contentType="text/html;charset=UTF-8"/>
     <jsp:output omit-xml-declaration="yes"/>
     <form:create id="fc_br_ufpr_c3sl_estacaojuventude_Municipio" modelAttribute="municipio" path="/municipios" render="${empty dependencies}" z="38ISssqudMTSD9vTMbyC3gTOksQ=">
-        <field:input field="nome" id="c_br_ufpr_c3sl_estacaojuventude_Municipio_nome" z="9CD68eDTj0MN11p89Mok7Gxph7s="/>
+    	<field:select field="nome" comboboxform="true" disableFormBinding="true" id="c_br_ufpr_c3sl_estacaojuventude_Municipio_nome" itemValue="id" items="${municipios}" path="/municipios" z="user-managed"/>
+<!--         <field:input field="nome" id="c_br_ufpr_c3sl_estacaojuventude_Municipio_nome" z="9CD68eDTj0MN11p89Mok7Gxph7s="/> -->
         <field:select field="uf" id="c_br_ufpr_c3sl_estacaojuventude_Municipio_uf" itemValue="id" items="${estadoes}" path="/estados" z="wqt+9tlb6etcws03aPTvjNKd23Y="/>
         <field:datetime dateTimePattern="${municipio_ultimaalteracao_date_format}" field="ultimaAlteracao" id="c_br_ufpr_c3sl_estacaojuventude_Municipio_ultimaAlteracao" render="false" z="user-managed"/>
     </form:create>
diff --git a/src/main/webapp/WEB-INF/views/ocorrenciamunicipais/create.jspx b/src/main/webapp/WEB-INF/views/ocorrenciamunicipais/create.jspx
index ed3c636..428589a 100644
--- a/src/main/webapp/WEB-INF/views/ocorrenciamunicipais/create.jspx
+++ b/src/main/webapp/WEB-INF/views/ocorrenciamunicipais/create.jspx
@@ -6,8 +6,8 @@
         <field:select field="programaVinculado" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_programaVinculado" itemValue="id" items="${programas}" path="/programas" z="6peHWMq5LFS5h3Dz8xNLNeBW9Rc="/>
         <field:select field="municipio" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_municipio" itemValue="id" items="${municipios}" path="/municipios" z="NxsdqY2KIR81ibrmaLuEwZFQ0QM="/>
         <field:select field="orgaosExecutores" hintValue="hint_orgaos_executores" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_orgaosExecutores" itemValue="id" items="${orgaoexecutores}" multiple="true" path="/orgaoexecutores" z="user-managed"/>
-        <field:textarea field="beneficiosLocais" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_beneficiosLocais" z="4+gr9Eh5QnqAtYMJBTazSWU4OHY="/>
-<!--         <field:input field="beneficiosLocais" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_beneficiosLocais" z="4+gr9Eh5QnqAtYMJBTazSWU4OHY="/> -->
+        <field:textarea field="beneficiosLocais" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_beneficiosLocais" z="user-managed"/>
+        <!--         <field:input field="beneficiosLocais" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_beneficiosLocais" z="4+gr9Eh5QnqAtYMJBTazSWU4OHY="/> -->
         <field:input field="comoAcessar" hintValue="hint_como_acessar" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_comoAcessar" z="user-managed"/>
         <field:input field="inicioInscricoes" hintValue="hint_periodo_incricoes" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_inicioInscricoes" z="user-managed"/>
         <field:input field="fimInscricoes" hintValue="hint_periodo_incricoes" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_fimInscricoes" z="user-managed"/>
diff --git a/src/main/webapp/WEB-INF/views/ocorrenciamunicipais/update.jspx b/src/main/webapp/WEB-INF/views/ocorrenciamunicipais/update.jspx
index 1193086..ba2c421 100644
--- a/src/main/webapp/WEB-INF/views/ocorrenciamunicipais/update.jspx
+++ b/src/main/webapp/WEB-INF/views/ocorrenciamunicipais/update.jspx
@@ -7,12 +7,12 @@
             <field:select field="programaVinculado" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_programaVinculado" itemValue="id" items="${programas}" path="/programas" z="6peHWMq5LFS5h3Dz8xNLNeBW9Rc="/>
             <field:select field="municipio" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_municipio" itemValue="id" items="${municipios}" path="/municipios" z="NxsdqY2KIR81ibrmaLuEwZFQ0QM="/>
             <field:select field="orgaosExecutores" hintValue="hint_orgaos_executores" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_orgaosExecutores" itemValue="id" items="${orgaoexecutores}" multiple="true" path="/orgaoexecutores" z="user-managed"/>
-            <field:textarea field="beneficiosLocais" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_beneficiosLocais" z="4+gr9Eh5QnqAtYMJBTazSWU4OHY="/>
-<!--             <field:input field="beneficiosLocais" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_beneficiosLocais" z="4+gr9Eh5QnqAtYMJBTazSWU4OHY="/> -->
+            <field:textarea field="beneficiosLocais" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_beneficiosLocais" z="user-managed"/>
+            <!--             <field:input field="beneficiosLocais" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_beneficiosLocais" z="4+gr9Eh5QnqAtYMJBTazSWU4OHY="/> -->
             <field:input field="comoAcessar" hintValue="hint_como_acessar" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_comoAcessar" z="user-managed"/>
             <field:input field="inicioInscricoes" hintValue="hint_periodo_incricoes" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_inicioInscricoes" z="user-managed"/>
             <field:input field="fimInscricoes" hintValue="hint_periodo_incricoes" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_fimInscricoes" z="user-managed"/>
-            <field:select disabled="true" field="localizacoes" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_localizacoes" itemValue="id" items="${localizacaos}" multiple="true" path="/localizacoes" z="user-managed"/>
+            <field:select defaultmultiple="true" disabled="true" field="localizacoes" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_localizacoes" itemValue="id" items="${localizacaos}" multiple="true" path="/localizacoes" z="user-managed"/>
             <field:input field="quantidadeVagas" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_quantidadeVagas" validationMessageCode="field_invalid_integer" z="VVOME2kMr4+rxAFNbv5sTC6HvAw="/>
             <field:select field="status" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_status" items="${tipostatuses}" path="tipostatuses" z="F0r/fUzTX6lkoHa0mAWk5JT7EF8="/>
             <field:select field="usuario" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_usuario" itemValue="id" items="${usuarios}" path="/usuarios" z="Babmxc8XdBqVIn8xbkYKIAy+glA="/>
@@ -26,11 +26,11 @@
             <field:select field="municipio" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_municipio" itemValue="id" items="${municipios}" path="/municipios" z="NxsdqY2KIR81ibrmaLuEwZFQ0QM="/>
             <field:select field="orgaosExecutores" hintValue="hint_orgaos_executores" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_orgaosExecutores" itemValue="id" items="${orgaoexecutores}" multiple="true" path="/orgaoexecutores" z="user-managed"/>
             <field:textarea field="beneficiosLocais" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_beneficiosLocais" z="4+gr9Eh5QnqAtYMJBTazSWU4OHY="/>
-<!--             <field:input field="beneficiosLocais" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_beneficiosLocais" z="4+gr9Eh5QnqAtYMJBTazSWU4OHY="/> -->
+            <!--             <field:input field="beneficiosLocais" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_beneficiosLocais" z="4+gr9Eh5QnqAtYMJBTazSWU4OHY="/> -->
             <field:input field="comoAcessar" hintValue="hint_como_acessar" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_comoAcessar" z="37Av0vUvTAzeQQX4WrRT2KMcj7w="/>
             <field:input field="inicioInscricoes" hintValue="hint_periodo_incricoes" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_inicioInscricoes" z="G0XGhemETMWseRmD4VKjlzifEJ8="/>
             <field:input field="fimInscricoes" hintValue="hint_periodo_incricoes" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_fimInscricoes" z="fS41CZmEMANwCEqNQ+HlzbTnhE0="/>
-            <field:select disabled="true" field="localizacoes" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_localizacoes" itemValue="id" items="${localizacaos}" multiple="true" path="/localizacoes" z="user-managed"/>
+            <field:select defaultmultiple="true" disabled="true" field="localizacoes" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_localizacoes" itemValue="id" items="${localizacaos}" multiple="true" path="/localizacoes" z="user-managed"/>
             <field:input field="quantidadeVagas" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_quantidadeVagas" validationMessageCode="field_invalid_integer" z="VVOME2kMr4+rxAFNbv5sTC6HvAw="/>
             <field:select field="status" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_status" items="${tipostatuses}" path="tipostatuses" render="false" z="F0r/fUzTX6lkoHa0mAWk5JT7EF8="/>
             <field:select field="usuario" id="c_br_ufpr_c3sl_estacaojuventude_OcorrenciaMunicipal_usuario" itemValue="id" items="${usuarios}" path="/usuarios" render="false" z="Babmxc8XdBqVIn8xbkYKIAy+glA="/>
diff --git a/src/main/webapp/WEB-INF/views/programas/update.jspx b/src/main/webapp/WEB-INF/views/programas/update.jspx
index 2881b4e..e9acd23 100644
--- a/src/main/webapp/WEB-INF/views/programas/update.jspx
+++ b/src/main/webapp/WEB-INF/views/programas/update.jspx
@@ -24,11 +24,11 @@
             <field:textarea field="criteriosAcesso" id="c_br_ufpr_c3sl_estacaojuventude_Programa_criteriosAcesso" z="user-managed"/>
             <!--             <field:input field="criteriosAcesso" id="c_br_ufpr_c3sl_estacaojuventude_Programa_criteriosAcesso" z="46IIumERi7DTwwtpARnCfqhSkws="/> -->
             <field:input field="duracao" id="c_br_ufpr_c3sl_estacaojuventude_Programa_duracao" z="a7AOY/Yrtw4PcGueyAvhXIGAQFU="/>
-            <field:select field="tematicas" hintValue="hint_tematicas" id="c_br_ufpr_c3sl_estacaojuventude_Programa_tematicas" itemValue="id" items="${tematicas}" multiple="true" path="/tematicas" z="user-managed"/>
+            <field:select defaultmultiple="true" field="tematicas" hintValue="hint_tematicas" id="c_br_ufpr_c3sl_estacaojuventude_Programa_tematicas" itemValue="id" items="${tematicas}" multiple="true" path="/tematicas" z="user-managed"/>
             <field:select field="orgaosExecutores" id="c_br_ufpr_c3sl_estacaojuventude_Programa_orgaosExecutores" itemValue="id" items="${orgaoexecutores}" multiple="true" path="/orgaoexecutores" z="user-managed"/>
             <field:textarea field="parceiros" id="c_br_ufpr_c3sl_estacaojuventude_Programa_parceiros" z="user-managed"/>
             <!--             <field:input field="parceiros" id="c_br_ufpr_c3sl_estacaojuventude_Programa_parceiros" z="Jbi+j14QiuxyUynDmEoZrpR6n1Q="/> -->
-            <field:select disabled="true" field="ocorrencias" id="c_br_ufpr_c3sl_estacaojuventude_Programa_ocorrencias" itemValue="id" items="${ocorrenciamunicipais}" multiple="true" path="/ocorrenciamunicipais" z="user-managed"/>
+            <field:select defaultmultiple="true" disabled="true" field="ocorrencias" id="c_br_ufpr_c3sl_estacaojuventude_Programa_ocorrencias" itemValue="id" items="${ocorrenciamunicipais}" multiple="true" path="/ocorrenciamunicipais" z="user-managed"/>
             <field:select field="status" id="c_br_ufpr_c3sl_estacaojuventude_Programa_status" items="${tipostatuses}" path="tipostatuses" z="TWynnY2LlkTLv9vJJ6PYF11yQk0="/>
             <field:select field="usuario" id="c_br_ufpr_c3sl_estacaojuventude_Programa_usuario" itemValue="id" items="${usuarios}" path="/usuarios" z="gyBHEGJXuWI8xAN+JR0Z6EVyhMY="/>
             <field:select field="situacao" id="c_br_ufpr_c3sl_estacaojuventude_Programa_situacao" items="${situacaos}" path="situacaos" z="jCGDX8PAVbMAynepL96G296Jlxw="/>
@@ -57,11 +57,11 @@
             <field:textarea field="criteriosAcesso" id="c_br_ufpr_c3sl_estacaojuventude_Programa_criteriosAcesso" z="46IIumERi7DTwwtpARnCfqhSkws="/>
             <!--             <field:input field="criteriosAcesso" id="c_br_ufpr_c3sl_estacaojuventude_Programa_criteriosAcesso" z="46IIumERi7DTwwtpARnCfqhSkws="/> -->
             <field:input field="duracao" id="c_br_ufpr_c3sl_estacaojuventude_Programa_duracao" z="a7AOY/Yrtw4PcGueyAvhXIGAQFU="/>
-            <field:select field="tematicas" hintValue="hint_tematicas" id="c_br_ufpr_c3sl_estacaojuventude_Programa_tematicas" itemValue="id" items="${tematicas}" multiple="true" path="/tematicas" z="dNw66nQiqTH3NQvcrusAZ3M3oX0="/>
+            <field:select defaultmultiple="true" field="tematicas" hintValue="hint_tematicas" id="c_br_ufpr_c3sl_estacaojuventude_Programa_tematicas" itemValue="id" items="${tematicas}" multiple="true" path="/tematicas" z="user-managed"/>
             <field:select field="orgaosExecutores" id="c_br_ufpr_c3sl_estacaojuventude_Programa_orgaosExecutores" itemValue="id" items="${orgaoexecutores}" multiple="true" path="/orgaoexecutores" z="user-managed"/>
             <field:textarea field="parceiros" id="c_br_ufpr_c3sl_estacaojuventude_Programa_parceiros" z="Jbi+j14QiuxyUynDmEoZrpR6n1Q="/>
             <!--             <field:input field="parceiros" id="c_br_ufpr_c3sl_estacaojuventude_Programa_parceiros" z="Jbi+j14QiuxyUynDmEoZrpR6n1Q="/> -->
-            <field:select disabled="true" field="ocorrencias" id="c_br_ufpr_c3sl_estacaojuventude_Programa_ocorrencias" itemValue="id" items="${ocorrenciamunicipais}" multiple="true" path="/ocorrenciamunicipais" render="false" z="user-managed"/>
+            <field:select defaultmultiple="true" disabled="true" field="ocorrencias" id="c_br_ufpr_c3sl_estacaojuventude_Programa_ocorrencias" itemValue="id" items="${ocorrenciamunicipais}" multiple="true" path="/ocorrenciamunicipais" render="false" z="user-managed"/>
             <field:select field="status" id="c_br_ufpr_c3sl_estacaojuventude_Programa_status" items="${tipostatuses}" path="tipostatuses" render="false" z="TWynnY2LlkTLv9vJJ6PYF11yQk0="/>
             <field:select field="usuario" id="c_br_ufpr_c3sl_estacaojuventude_Programa_usuario" itemValue="id" items="${usuarios}" path="/usuarios" render="false" z="gyBHEGJXuWI8xAN+JR0Z6EVyhMY="/>
             <field:select disabled="true" field="situacao" id="c_br_ufpr_c3sl_estacaojuventude_Programa_situacao" items="${situacaos}" path="situacaos" z="jCGDX8PAVbMAynepL96G296Jlxw="/>
diff --git a/src/main/webapp/styles/CheckedMultiSelect.js b/src/main/webapp/styles/CheckedMultiSelect.js
new file mode 100644
index 0000000..81fe334
--- /dev/null
+++ b/src/main/webapp/styles/CheckedMultiSelect.js
@@ -0,0 +1,107 @@
+/*
+	Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
+	Available via Academic Free License >= 2.1 OR the modified BSD license.
+	see: http://dojotoolkit.org/license for details
+*/
+
+
+if(!dojo._hasResource["dojox.form.CheckedMultiSelect"]){
+dojo._hasResource["dojox.form.CheckedMultiSelect"]=true;
+dojo.provide("dojox.form.CheckedMultiSelect");
+dojo.require("dijit.form.CheckBox");
+dojo.require("dijit.form._FormSelectWidget");
+dojo.declare("dojox.form._CheckedMultiSelectItem",[dijit._Widget,dijit._Templated],{widgetsInTemplate:true,templateString:dojo.cache("dojox.form","resources/_CheckedMultiSelectItem.html","<div class=\"dijitReset ${baseClass}\"\n\t><input class=\"${baseClass}Box\" dojoType=\"dijit.form.CheckBox\" dojoAttachPoint=\"checkBox\" \n\t\tdojoAttachEvent=\"_onClick:_changeBox\" type=\"${_type.type}\" baseClass=\"${_type.baseClass}\"\n\t/><div class=\"dijitInline ${baseClass}Label\" dojoAttachPoint=\"labelNode\" dojoAttachEvent=\"onclick:_onClick\"></div\n></div>\n"),baseClass:"dojoxMultiSelectItem",option:null,parent:null,disabled:false,readOnly:false,postMixInProperties:function(){
+if(this.parent.multiple){
+this._type={type:"checkbox",baseClass:"dijitCheckBox"};
+}else{
+this._type={type:"radio",baseClass:"dijitRadio"};
+}
+this.disabled=this.option.disabled=this.option.disabled||false;
+this.inherited(arguments);
+},postCreate:function(){
+this.inherited(arguments);
+this.labelNode.innerHTML=this.option.label;
+},_changeBox:function(){
+if(this.get("disabled")||this.get("readOnly")){
+return;
+}
+if(this.parent.multiple){
+this.option.selected=this.checkBox.attr("value")&&true;
+}else{
+this.parent.attr("value",this.option.value);
+}
+this.parent._updateSelection();
+this.parent.focus();
+},_onClick:function(e){
+if(this.get("disabled")||this.get("readOnly")){
+dojo.stopEvent(e);
+}else{
+this.checkBox._onClick(e);
+}
+},_updateBox:function(){
+this.checkBox.attr("value",this.option.selected);
+},_setDisabledAttr:function(_1){
+this.disabled=_1||this.option.disabled;
+this.checkBox.attr("disabled",this.disabled);
+dojo.toggleClass(this.domNode,"dojoxMultiSelectDisabled",this.disabled);
+},_setReadOnlyAttr:function(_2){
+this.checkBox.attr("readOnly",_2);
+this.readOnly=_2;
+}});
+
+dojo.declare("dojox.form.CheckedMultiSelect",dijit.form._FormSelectWidget,{templateString:dojo.cache("dojox.form","resources/CheckedMultiSelect.html","<div class=\"dijit dijitReset dijitInline\" dojoAttachEvent=\"onmousedown:_onMouseDown,onclick:focus\"\n\t><select class=\"${baseClass}Select\" multiple=\"true\" dojoAttachPoint=\"containerNode,focusNode\" ${!nameAttrSetting}\/></select\n\t><div dojoAttachPoint=\"wrapperDiv\"></div\n></div>\n"),baseClass:"dojoxMultiSelect",_onMouseDown:function(e){
+
+dojo.stopEvent(e);
+},_addOptionItem:function(_3){
+this.wrapperDiv.appendChild(new dojox.form._CheckedMultiSelectItem({option:_3,parent:this}).domNode);
+},_updateSelection:function(){
+this.inherited(arguments);
+dojo.forEach(this._getChildren(),function(c){
+c._updateBox();
+});
+
+dojo.empty(this.containerNode);
+_this = this;
+dojo.forEach(this.value, function(item) {
+    var opt = dojo.create('option', {
+        'value': item,
+        'label': item,
+        'selected': 'selected'
+    });
+    opt.innerHTML = item;
+    dojo.place(opt, _this.containerNode);
+});
+
+},_getChildren:function(){
+return dojo.map(this.wrapperDiv.childNodes,function(n){
+return dijit.byNode(n);
+});
+},invertSelection:function(_4){
+dojo.forEach(this.options,function(i){
+i.selected=!i.selected;
+});
+this._updateSelection();
+},_setDisabledAttr:function(_5){
+this.inherited(arguments);
+dojo.forEach(this._getChildren(),function(_6){
+if(_6&&_6.attr){
+_6.attr("disabled",_5);
+}
+});
+},_setReadOnlyAttr:function(_7){
+if("readOnly" in this.attributeMap){
+this._attrToDom("readOnly",_7);
+}
+this.readOnly=_7;
+dojo.forEach(this._getChildren(),function(_8){
+if(_8&&_8.attr){
+_8.attr("readOnly",_7);
+}
+});
+},uninitialize:function(){
+dojo.forEach(this._getChildren(),function(_9){
+_9.destroyRecursive();
+});
+this.inherited(arguments);
+}});
+}
-- 
GitLab