Title: [waffle-scm] [736] trunk/waffle-resources/src/main/resources/ftl/waffle: WAFFLE-80: Added function asValues to convert sequence of values obtainable from a value field.

Diff

Modified: trunk/waffle-resources/src/main/resources/ftl/waffle/form.ftl (735 => 736)

--- trunk/waffle-resources/src/main/resources/ftl/waffle/form.ftl	2008-06-18 19:55:37 UTC (rev 735)
+++ trunk/waffle-resources/src/main/resources/ftl/waffle/form.ftl	2008-06-18 21:31:24 UTC (rev 736)
@@ -6,7 +6,7 @@
  -->
 
 <#--
- * Determines if list contains the item.
+ * Determines if list contains the item based on the string representation of the items
  *
  * @param list the list to search for the item
  * @param item the item to search for in the list
@@ -14,7 +14,7 @@
 -->
 <#function contains list item>
     <#list list as next>
-    <#if next == item><#return true></#if>
+    <#if next?string == item?string><#return true></#if>
     </#list>
     <#return false>
 </#function>
@@ -33,7 +33,7 @@
 </#function>
 
 <#--
- * Converts a sequence to a sequence of nameables hashes with name and value fields
+ * Converts a sequence of elements to a sequence of nameables hashes with name and value fields
  *
  * @param elements the sequence of elements to convert
  * @param valueField the name of the value field in the input element (defaults to "value")
@@ -52,6 +52,22 @@
 </#function>
 
 <#--
+ * Converts a sequence of elements to a sequence of values obtained from the value fields
+ *
+ * @param elements the sequence of elements to convert
+ * @param valueField the name of the value field in the input element (defaults to "value")
+ * @return A sequence of values
+ -->
+<#function asValues elements valueField="value">
+    <#assign result = []>
+    <#list elements as element>
+        <#assign value='${element["${valueField}"]!element}'>    
+        <#assign result=result+[value]>
+    </#list>
+    <#return result>
+</#function>
+
+<#--
  * Shows values as CSV
  *
  * @param values the sequence of values
@@ -147,11 +163,13 @@
  * @param attributes any additional attributes for the element (defaults to "")
 -->
 <#macro selectSingle field options selectedValue="" attributes="">
+    <#assign selectedValues = [selectedValue]>
     <select id="${field}" name="${field}" ${attributes}>
         <#list options as option>
         <#assign value="${option.value!option}">
         <#assign name="${option.name!option}">
-        <option value="${value?html}" <#if selectedValue==value>selected="true"</#if>>${name?html}</option>
+        <#assign selected = contains(selectedValues?default([]), value)>
+        <option value="${value?html}" <#if selected>selected="true"</#if>>${name?html}</option>
         </#list>
     </select>
 </#macro>
@@ -162,7 +180,7 @@
  *
  * @param field the name of the field to bind the element to 
  * @param options a sequence of available options
- * @param selectedValues the selected values (defaults to [""])
+ * @param selectedValues the selected values (defaults to [])
  * @param attributes any additional attributes for the element (defaults to "")
 -->
 <#macro selectMultiple field options selectedValues attributes="">
@@ -170,30 +188,19 @@
         <#list options as option>
         <#assign value="${option.value!option}">
         <#assign name="${option.name!option}">
-        <#assign selected = contains(selectedValues?default([""]), value)>
+        <#assign selected = contains(selectedValues?default([]), value)>
         <option value="${value?html}" <#if selected>selected="true"</#if>>${name?html}</option>
         </#list>
     </select>
 </#macro>
 
 <#--
- * Determines if a value in a sequence is selected, adding the 'selected' attribute if so.
- *
- * @param currentValue the current value in a sequence
- * @param value the value to check 
--->
-<#macro isSelected currentValue value>
-    <#if currentValue?is_number && currentValue == value?number>selected="true"</#if>
-    <#if currentValue?is_string && currentValue == value>selected="true"</#if>
-</#macro>
-
-<#--
  * Determines if values in a sequence are selected, adding the 'selected' attribute if so.
  *
  * @param currentValue the current value in a sequence
  * @param values the values to check 
 -->
 <#macro areSelected currentValue values>
-    <#assign selected = contains(values?default([""]), currentValue)>
+    <#assign selected = contains(values?default([]), currentValue)>
     <#if selected>selected="true"</#if>>
 </#macro>

Modified: trunk/waffle-resources/src/test/java/org/codehaus/waffle/resources/ftl/FormController.java (735 => 736)

--- trunk/waffle-resources/src/test/java/org/codehaus/waffle/resources/ftl/FormController.java	2008-06-18 19:55:37 UTC (rev 735)
+++ trunk/waffle-resources/src/test/java/org/codehaus/waffle/resources/ftl/FormController.java	2008-06-18 21:31:24 UTC (rev 736)
@@ -11,8 +11,8 @@
 
     public enum Type {
         ONE, TWO;
-        
-        public String toString(){
+
+        public String toString() {
             return name().toUpperCase();
         }
     }
@@ -21,6 +21,7 @@
     private List<Nameable> nameables = asList(new Nameable("one", "One"), new Nameable("two", "Two"));
     private List<Displayable> displayables = asList(new Displayable("one", "One"), new Displayable("two", "Two"));
     private List<String> selectedValues;
+    private List<Displayable> selectedDisplayables;
     private Type selectedType;
 
     public List<Type> getTypes() {
@@ -55,6 +56,14 @@
         return displayables;
     }
 
+    public List<Displayable> getSelectedDisplayables() {
+        return selectedDisplayables;
+    }
+
+    public void setSelectedDisplayables(List<Displayable> selectedDisplayables) {
+        this.selectedDisplayables = selectedDisplayables;
+    }
+
     public static class Nameable {
         private final String value;
         private final String name;

Modified: trunk/waffle-resources/src/test/java/org/codehaus/waffle/resources/ftl/FormMacroTest.java (735 => 736)

--- trunk/waffle-resources/src/test/java/org/codehaus/waffle/resources/ftl/FormMacroTest.java	2008-06-18 19:55:37 UTC (rev 735)
+++ trunk/waffle-resources/src/test/java/org/codehaus/waffle/resources/ftl/FormMacroTest.java	2008-06-18 21:31:24 UTC (rev 736)
@@ -7,6 +7,7 @@
 import java.io.IOException;
 
 import org.apache.commons.io.IOUtils;
+import org.codehaus.waffle.resources.ftl.FormController.Displayable;
 import org.junit.Test;
 
 /**
@@ -30,6 +31,7 @@
         FormController controller = new FormController();
         controller.setSelectedValues(asList("one"));
         controller.setSelectedType(FormController.Type.ONE);
+        controller.setSelectedDisplayables(asList(new Displayable("two","Two")));
         String expected = readResource("org/codehaus/waffle/resources/ftl/select.txt");
         assertEquals(expected, processTemplateView(controller, "org/codehaus/waffle/resources/ftl/select.ftl"));
     }

Modified: trunk/waffle-resources/src/test/java/org/codehaus/waffle/resources/ftl/select.ftl (735 => 736)

--- trunk/waffle-resources/src/test/java/org/codehaus/waffle/resources/ftl/select.ftl	2008-06-18 19:55:37 UTC (rev 735)
+++ trunk/waffle-resources/src/test/java/org/codehaus/waffle/resources/ftl/select.ftl	2008-06-18 21:31:24 UTC (rev 736)
@@ -4,4 +4,5 @@
 <@w.selectSingle "types" w.asNameables(controller.getTypes(), "name()", "name()") controller.getSelectedType() />
 <@w.selectMultiple "values" controller.getValues() controller.getSelectedValues() />
 <@w.selectMultiple "nameables" controller.getNameables() controller.getSelectedValues() />
-<@w.selectMultiple "displayables" w.asNameables(controller.getDisplayables(),"id","display") controller.getSelectedValues() />
\ No newline at end of file
+<@w.selectMultiple "displayables" w.asNameables(controller.getDisplayables(),"id","display") controller.getSelectedValues() />
+<@w.selectMultiple "displayablesAsValues" w.asNameables(controller.getDisplayables(),"id","display") w.asValues(controller.getSelectedDisplayables(),"id") />
\ No newline at end of file

Modified: trunk/waffle-resources/src/test/java/org/codehaus/waffle/resources/ftl/select.txt (735 => 736)

--- trunk/waffle-resources/src/test/java/org/codehaus/waffle/resources/ftl/select.txt	2008-06-18 19:55:37 UTC (rev 735)
+++ trunk/waffle-resources/src/test/java/org/codehaus/waffle/resources/ftl/select.txt	2008-06-18 21:31:24 UTC (rev 736)
@@ -22,3 +22,7 @@
         <option value="one" selected="true">One</option>
         <option value="two" >Two</option>
     </select>
+    <select multiple="multiple" id="displayablesAsValues" name="displayablesAsValues" >
+        <option value="one" >One</option>
+        <option value="two" selected="true">Two</option>
+    </select>


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to