You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by ti...@apache.org on 2005/03/24 21:27:04 UTC

svn commit: r158944 - in cocoon/whiteboard/forms: WEB-INF/xconf/ java/org/apache/cocoon/forms/ java/org/apache/cocoon/forms/binding/ java/org/apache/cocoon/forms/datatype/ java/org/apache/cocoon/forms/datatype/convertor/ java/org/apache/cocoon/forms/datatype/typeimpl/ java/org/apache/cocoon/forms/formmodel/ samples/flow/ samples/forms/ samples/forms/binding/ samples/messages/ test/org/apache/cocoon/forms/datatype/

Author: tim
Date: Thu Mar 24 12:27:00 2005
New Revision: 158944

URL: http://svn.apache.org/viewcvs?view=rev&rev=158944
Log:
Sync with trunk.

Added:
    cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertor.java
      - copied, changed from r158925, cocoon/blocks/core/forms/trunk/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertor.java
    cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertorBuilder.java
      - copied, changed from r158925, cocoon/blocks/core/forms/trunk/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertorBuilder.java
    cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/typeimpl/BeanType.java
      - copied, changed from r158925, cocoon/blocks/core/forms/trunk/java/org/apache/cocoon/forms/datatype/typeimpl/BeanType.java
    cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/typeimpl/BeanTypeBuilder.java
      - copied, changed from r158925, cocoon/blocks/core/forms/trunk/java/org/apache/cocoon/forms/datatype/typeimpl/BeanTypeBuilder.java
    cocoon/whiteboard/forms/samples/forms/binding/06namespaced-bind.xml
      - copied unchanged from r158925, cocoon/blocks/core/forms/trunk/samples/forms/binding/06namespaced-bind.xml
    cocoon/whiteboard/forms/samples/forms/binding/06namespaced-data.xml
      - copied unchanged from r158925, cocoon/blocks/core/forms/trunk/samples/forms/binding/06namespaced-data.xml
    cocoon/whiteboard/forms/samples/forms/binding/06namespaced-def.xml
      - copied unchanged from r158925, cocoon/blocks/core/forms/trunk/samples/forms/binding/06namespaced-def.xml
    cocoon/whiteboard/forms/samples/messages/FormsMessages_pl.xml
      - copied unchanged from r158925, cocoon/blocks/core/forms/trunk/samples/messages/FormsMessages_pl.xml
    cocoon/whiteboard/forms/samples/messages/OtherMessages_pl.xml
      - copied unchanged from r158925, cocoon/blocks/core/forms/trunk/samples/messages/OtherMessages_pl.xml
Modified:
    cocoon/whiteboard/forms/WEB-INF/xconf/cocoon-forms.xconf
    cocoon/whiteboard/forms/java/org/apache/cocoon/forms/Constants.java
    cocoon/whiteboard/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBase.java
    cocoon/whiteboard/forms/java/org/apache/cocoon/forms/binding/MultiValueJXPathBinding.java
    cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/EnumSelectionList.java
    cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/FlowJXPathSelectionList.java
    cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/FlowJXPathSelectionListBuilder.java
    cocoon/whiteboard/forms/java/org/apache/cocoon/forms/formmodel/RepeaterActionDefinition.java
    cocoon/whiteboard/forms/java/org/apache/cocoon/forms/formmodel/RepeaterActionDefinitionBuilder.java
    cocoon/whiteboard/forms/samples/flow/binding_example.js
    cocoon/whiteboard/forms/samples/forms/form2_bind_bean.xml
    cocoon/whiteboard/forms/samples/forms/form2_jx.xml
    cocoon/whiteboard/forms/samples/forms/xhr_carselector_template.xml
    cocoon/whiteboard/forms/test/org/apache/cocoon/forms/datatype/FlowJXPathSelectionListTestCase.java

Modified: cocoon/whiteboard/forms/WEB-INF/xconf/cocoon-forms.xconf
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/forms/WEB-INF/xconf/cocoon-forms.xconf?view=diff&r1=158943&r2=158944
==============================================================================
--- cocoon/whiteboard/forms/WEB-INF/xconf/cocoon-forms.xconf (original)
+++ cocoon/whiteboard/forms/WEB-INF/xconf/cocoon-forms.xconf Thu Mar 24 12:27:00 2005
@@ -111,6 +111,11 @@
           <convertor name="enum" src="org.apache.cocoon.forms.datatype.convertor.EnumConvertorBuilder"/>
         </convertors>
       </datatype>
+      <datatype name="bean" src="org.apache.cocoon.forms.datatype.typeimpl.BeanTypeBuilder">
+        <convertors default="bean" plain="bean">
+          <convertor name="bean" src="org.apache.cocoon.forms.datatype.convertor.BeanConvertorBuilder"/>
+        </convertors>
+      </datatype>
     </datatypes>
     <validation-rules>
       <!-- old-style datatype validators (deprecated) -->

Modified: cocoon/whiteboard/forms/java/org/apache/cocoon/forms/Constants.java
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/forms/java/org/apache/cocoon/forms/Constants.java?view=diff&r1=158943&r2=158944
==============================================================================
--- cocoon/whiteboard/forms/java/org/apache/cocoon/forms/Constants.java (original)
+++ cocoon/whiteboard/forms/java/org/apache/cocoon/forms/Constants.java Thu Mar 24 12:27:00 2005
@@ -49,5 +49,8 @@
 
     /** I18n catalogue containing the built-in messages. */
     public static final String I18N_CATALOGUE = "forms";
+    public static final String I18N_NS = "http://apache.org/cocoon/i18n/2.1";
+    public static final String I18N_PREFIX = "i18n";
+    public static final String I18N_PREFIX_COLON = "i18n:";
 
 }

Modified: cocoon/whiteboard/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBase.java
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBase.java?view=diff&r1=158943&r2=158944
==============================================================================
--- cocoon/whiteboard/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBase.java (original)
+++ cocoon/whiteboard/forms/java/org/apache/cocoon/forms/binding/JXPathBindingBase.java Thu Mar 24 12:27:00 2005
@@ -196,7 +196,7 @@
     /**
      * Helper method that selects a child-widget with a given id from a parent.
      *  
-     * @param parent co9ntaining the child-widget to return. 
+     * @param parent containing the child-widget to return. 
      * @param id of the childWidget to find, if this is <code>null</code> then the parent is returned.
      * @return the selected widget
      * 

Modified: cocoon/whiteboard/forms/java/org/apache/cocoon/forms/binding/MultiValueJXPathBinding.java
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/forms/java/org/apache/cocoon/forms/binding/MultiValueJXPathBinding.java?view=diff&r1=158943&r2=158944
==============================================================================
--- cocoon/whiteboard/forms/java/org/apache/cocoon/forms/binding/MultiValueJXPathBinding.java (original)
+++ cocoon/whiteboard/forms/java/org/apache/cocoon/forms/binding/MultiValueJXPathBinding.java Thu Mar 24 12:27:00 2005
@@ -111,7 +111,7 @@
                 if( o == null ) {
                     return false;
                 }
-		if( Collection.class.isAssignableFrom( o.getClass() ) ) {
+                if( Collection.class.isAssignableFrom( o.getClass() ) ) {
                     ((Collection)context.getValue(name)).add(null);
                 } else if( o.getClass().isArray() ) {
                     // not yet supported

Modified: cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/EnumSelectionList.java
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/EnumSelectionList.java?view=diff&r1=158943&r2=158944
==============================================================================
--- cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/EnumSelectionList.java (original)
+++ cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/EnumSelectionList.java Thu Mar 24 12:27:00 2005
@@ -56,8 +56,6 @@
  * @version $Id$
  */
 public class EnumSelectionList implements SelectionList {
-    public static final String I18N_NS = "http://apache.org/cocoon/i18n/2.1";
-    public static final String I18N_PREFIX_COLON = "i18n:";
     public static final String TEXT_EL = "text";
 
     private Datatype datatype;
@@ -108,9 +106,9 @@
                     contentHandler.startElement(Constants.INSTANCE_NS, ITEM_EL, Constants.INSTANCE_PREFIX_COLON + ITEM_EL, itemAttrs);
                     contentHandler.startElement(Constants.INSTANCE_NS, LABEL_EL, Constants.INSTANCE_PREFIX_COLON + LABEL_EL, XMLUtils.EMPTY_ATTRIBUTES);
                     // TODO: make i18n element optional
-                    contentHandler.startElement(I18N_NS, TEXT_EL, I18N_PREFIX_COLON + TEXT_EL, XMLUtils.EMPTY_ATTRIBUTES);
+                    contentHandler.startElement(Constants.I18N_NS, TEXT_EL, Constants.I18N_PREFIX_COLON + TEXT_EL, XMLUtils.EMPTY_ATTRIBUTES);
                     contentHandler.characters(stringValue.toCharArray(), 0, stringValue.length());
-                    contentHandler.endElement(I18N_NS, TEXT_EL, I18N_PREFIX_COLON + TEXT_EL);
+                    contentHandler.endElement(Constants.I18N_NS, TEXT_EL, Constants.I18N_PREFIX_COLON + TEXT_EL);
                     contentHandler.endElement(Constants.INSTANCE_NS, LABEL_EL, Constants.INSTANCE_PREFIX_COLON + LABEL_EL);
                     contentHandler.endElement(Constants.INSTANCE_NS, ITEM_EL, Constants.INSTANCE_PREFIX_COLON + ITEM_EL);
                 }

Modified: cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/FlowJXPathSelectionList.java
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/FlowJXPathSelectionList.java?view=diff&r1=158943&r2=158944
==============================================================================
--- cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/FlowJXPathSelectionList.java (original)
+++ cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/FlowJXPathSelectionList.java Thu Mar 24 12:27:00 2005
@@ -22,6 +22,7 @@
 import org.apache.cocoon.components.ContextHelper;
 import org.apache.cocoon.components.flow.FlowHelper;
 import org.apache.cocoon.forms.Constants;
+import org.apache.cocoon.forms.util.I18nMessage;
 import org.apache.cocoon.xml.AttributesImpl;
 import org.apache.cocoon.xml.XMLUtils;
 import org.apache.commons.jxpath.JXPathContext;
@@ -46,13 +47,31 @@
     private String labelPath;
     private Datatype datatype;
     private Object model;
-
-    public FlowJXPathSelectionList(Context context, String listPath, String valuePath, String labelPath, Datatype datatype) {
+    private boolean nullable = false; 
+    private String nullText;
+    private boolean nullTextIsI18nKey = false;
+    private String i18nCatalog;
+    private boolean labelIsI18nKey = false;
+
+    public FlowJXPathSelectionList(Context context, 
+                                   String listPath, 
+                                   String valuePath, 
+                                   String labelPath, 
+                                   Datatype datatype,
+                                   String nullText, 
+                                   boolean nullTextIsI18nKey, 
+                                   String i18nCatalog, 
+                                   boolean labelIsI18nKey) {
         this.context = context;
         this.listPath = listPath;
         this.valuePath = valuePath;
         this.labelPath = labelPath;
         this.datatype = datatype;
+        this.nullText = nullText;
+        this.nullable = (nullText != null);
+        this.nullTextIsI18nKey = nullTextIsI18nKey;
+        this.i18nCatalog =i18nCatalog;
+        this.labelIsI18nKey = labelIsI18nKey;
     }
 
     /**
@@ -100,6 +119,39 @@
 
         // Start the selection-list
         contentHandler.startElement(Constants.INSTANCE_NS, SELECTION_LIST_EL, Constants.INSTANCE_PREFIX_COLON + SELECTION_LIST_EL, XMLUtils.EMPTY_ATTRIBUTES);
+        if( this.nullable ) {
+            final AttributesImpl voidAttrs = new AttributesImpl(  );
+            voidAttrs.addCDATAAttribute( "value", "" );
+            contentHandler.startElement( Constants.INSTANCE_NS, ITEM_EL,
+                                         Constants.INSTANCE_PREFIX_COLON +
+                                         ITEM_EL, voidAttrs );
+
+            if( this.nullText != null ) {
+                contentHandler.startElement( Constants.INSTANCE_NS, LABEL_EL,
+                                             Constants.INSTANCE_PREFIX_COLON +
+                                             LABEL_EL, XMLUtils.EMPTY_ATTRIBUTES );
+
+                if( this.nullTextIsI18nKey ) {
+                    if( ( this.i18nCatalog != null ) &&
+                        ( this.i18nCatalog.trim(  ).length(  ) > 0 ) ) {
+                        new I18nMessage( this.nullText, this.i18nCatalog ).toSAX( contentHandler );
+                    } else {
+                        new I18nMessage( this.nullText ).toSAX( contentHandler );
+                    }
+                } else {
+                    contentHandler.characters( this.nullText.toCharArray(  ), 0,
+                                               this.nullText.length(  ) );
+                }
+
+                contentHandler.endElement( Constants.INSTANCE_NS, LABEL_EL,
+                                           Constants.INSTANCE_PREFIX_COLON +
+                                           LABEL_EL );
+            }
+
+            contentHandler.endElement( Constants.INSTANCE_NS, ITEM_EL,
+                                       Constants.INSTANCE_PREFIX_COLON +
+                                       ITEM_EL );
+        }
 
         while(iter.hasNext()) {
             String stringValue = "";
@@ -135,6 +187,15 @@
                 contentHandler.startElement(Constants.INSTANCE_NS, LABEL_EL, Constants.INSTANCE_PREFIX_COLON + LABEL_EL, XMLUtils.EMPTY_ATTRIBUTES);
                 if (label instanceof XMLizable) {
                     ((XMLizable)label).toSAX(contentHandler);
+                }  else if( this.labelIsI18nKey ) {
+                    String stringLabel = label.toString();
+
+                    if( ( this.i18nCatalog != null ) &&
+                        ( this.i18nCatalog.trim(  ).length(  ) > 0 ) ) {
+                        new I18nMessage( stringLabel, this.i18nCatalog ).toSAX( contentHandler );
+                    } else {
+                        new I18nMessage( stringLabel ).toSAX( contentHandler );
+                    }
                 } else {
                     String stringLabel = label.toString();
                     contentHandler.characters(stringLabel.toCharArray(), 0, stringLabel.length());

Modified: cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/FlowJXPathSelectionListBuilder.java
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/FlowJXPathSelectionListBuilder.java?view=diff&r1=158943&r2=158944
==============================================================================
--- cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/FlowJXPathSelectionListBuilder.java (original)
+++ cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/FlowJXPathSelectionListBuilder.java Thu Mar 24 12:27:00 2005
@@ -18,9 +18,12 @@
 import org.apache.avalon.framework.context.Context;
 import org.apache.avalon.framework.context.ContextException;
 import org.apache.avalon.framework.context.Contextualizable;
+import org.apache.cocoon.forms.Constants;
 import org.apache.cocoon.forms.util.DomHelper;
 import org.w3c.dom.Element;
 
+import java.util.Map;
+
 /**
  * Builds a selection list that will take its values from the flow page data.
  * The items list and, for each item, its value and label, are fetched using
@@ -56,10 +59,37 @@
     public SelectionList build(Element selectionListElement, Datatype datatype) throws Exception {
 
         String listPath = DomHelper.getAttribute(selectionListElement, "list-path");
-        String keyPath = DomHelper.getAttribute(selectionListElement, "value-path");
-        String valuePath = DomHelper.getAttribute(selectionListElement, "label-path");
-
-        return new FlowJXPathSelectionList(context, listPath, keyPath, valuePath, datatype);
+        String valuePath = DomHelper.getAttribute(selectionListElement, "value-path");
+        Map nspfx = DomHelper.getInheritedNSDeclarations(selectionListElement);
+        String i18nPfx = (String)nspfx.get( Constants.I18N_NS );
+        String labelPath = DomHelper.getAttribute(selectionListElement, "label-path", null);
+        boolean labelIsI18nKey = false;
+        if( labelPath == null )
+        {
+            labelPath = DomHelper.getAttribute(selectionListElement, i18nPfx + ":label-path");
+            labelIsI18nKey = true;
+        }
+        String nullText = DomHelper.getAttribute(selectionListElement, "null-text", null);
+        boolean nullTextIsI18nKey = false;
+        if( nullText == null ) {
+            nullText = DomHelper.getAttribute(selectionListElement, i18nPfx + ":null-text", null);
+            if( nullText != null ) {
+                nullTextIsI18nKey = true;
+            }
+        }
+        
+        String i18nCatalog = DomHelper.getAttribute(selectionListElement, "catalogue", null);
+
+
+        return new FlowJXPathSelectionList(context, 
+                                           listPath, 
+                                           valuePath, 
+                                           labelPath, 
+                                           datatype, 
+                                           nullText, 
+                                           nullTextIsI18nKey, 
+                                           i18nCatalog, 
+                                           labelIsI18nKey);
     }
 
 }

Copied: cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertor.java (from r158925, cocoon/blocks/core/forms/trunk/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertor.java)
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertor.java?view=diff&rev=158944&p1=cocoon/blocks/core/forms/trunk/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertor.java&r1=158925&p2=cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertor.java&r2=158944
==============================================================================
--- cocoon/blocks/core/forms/trunk/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertor.java (original)
+++ cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertor.java Thu Mar 24 12:27:00 2005
@@ -37,7 +37,7 @@
  * </p>
  *
  * @author <a href="mailto:giacomo@apache.org">Giacomo Pati</a>
- * @version $Id: BeanConvertor.java,v 1.3 2004/12/30 13:37:45 giacomo Exp $
+ * @version $Id$
  */
 public class BeanConvertor
     implements Convertor

Copied: cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertorBuilder.java (from r158925, cocoon/blocks/core/forms/trunk/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertorBuilder.java)
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertorBuilder.java?view=diff&rev=158944&p1=cocoon/blocks/core/forms/trunk/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertorBuilder.java&r1=158925&p2=cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertorBuilder.java&r2=158944
==============================================================================
--- cocoon/blocks/core/forms/trunk/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertorBuilder.java (original)
+++ cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/convertor/BeanConvertorBuilder.java Thu Mar 24 12:27:00 2005
@@ -36,7 +36,7 @@
  * </p>
  *
  * @author <a href="mailto:giacomo@apache.org">Giacomo Pati</a>
- * @version $Id: BeanConvertorBuilder.java,v 1.2 2004/12/27 13:30:48 giacomo Exp $
+ * @version $Id$
  */
 public class BeanConvertorBuilder
     implements ConvertorBuilder

Copied: cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/typeimpl/BeanType.java (from r158925, cocoon/blocks/core/forms/trunk/java/org/apache/cocoon/forms/datatype/typeimpl/BeanType.java)
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/typeimpl/BeanType.java?view=diff&rev=158944&p1=cocoon/blocks/core/forms/trunk/java/org/apache/cocoon/forms/datatype/typeimpl/BeanType.java&r1=158925&p2=cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/typeimpl/BeanType.java&r2=158944
==============================================================================
--- cocoon/blocks/core/forms/trunk/java/org/apache/cocoon/forms/datatype/typeimpl/BeanType.java (original)
+++ cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/typeimpl/BeanType.java Thu Mar 24 12:27:00 2005
@@ -22,7 +22,7 @@
  * The CForm type of a bean
  *
  * @author <a href="mailto:giacomo@apache.org">Giacomo Pati</a>
- * @version $Id: BeanType.java,v 1.1 2004/12/21 14:37:32 giacomo Exp $
+ * @version $Id$
  */
 public class BeanType
     extends AbstractDatatype

Copied: cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/typeimpl/BeanTypeBuilder.java (from r158925, cocoon/blocks/core/forms/trunk/java/org/apache/cocoon/forms/datatype/typeimpl/BeanTypeBuilder.java)
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/typeimpl/BeanTypeBuilder.java?view=diff&rev=158944&p1=cocoon/blocks/core/forms/trunk/java/org/apache/cocoon/forms/datatype/typeimpl/BeanTypeBuilder.java&r1=158925&p2=cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/typeimpl/BeanTypeBuilder.java&r2=158944
==============================================================================
--- cocoon/blocks/core/forms/trunk/java/org/apache/cocoon/forms/datatype/typeimpl/BeanTypeBuilder.java (original)
+++ cocoon/whiteboard/forms/java/org/apache/cocoon/forms/datatype/typeimpl/BeanTypeBuilder.java Thu Mar 24 12:27:00 2005
@@ -25,7 +25,7 @@
  * Builder for {@link BeanType}
  *
  * @author <a href="mailto:giacomo@apache.org">Giacomo Pati</a>
- * @version $Id: BeanTypeBuilder.java,v 1.1 2004/12/21 14:37:32 giacomo Exp $
+ * @version $Id$
  */
 public class BeanTypeBuilder
     extends AbstractDatatypeBuilder

Modified: cocoon/whiteboard/forms/java/org/apache/cocoon/forms/formmodel/RepeaterActionDefinition.java
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/forms/java/org/apache/cocoon/forms/formmodel/RepeaterActionDefinition.java?view=diff&r1=158943&r2=158944
==============================================================================
--- cocoon/whiteboard/forms/java/org/apache/cocoon/forms/formmodel/RepeaterActionDefinition.java (original)
+++ cocoon/whiteboard/forms/java/org/apache/cocoon/forms/formmodel/RepeaterActionDefinition.java Thu Mar 24 12:27:00 2005
@@ -118,7 +118,8 @@
     //---------------------------------------------------------------------------------------------
 
     /**
-     * The definition of a repeater action that insert rows before the selected rows in a sibling repeater.
+     * The definition of a repeater action that insert rows before the selected rows in a sibling repeater,
+     * or at the end of the repeater if no row is selected.
      */
     public static class InsertRowsActionDefinition extends RepeaterActionDefinition {
         
@@ -131,14 +132,20 @@
             this.addActionListener(new ActionListener() {
                 public void actionPerformed(ActionEvent event) {
                     Repeater repeater = ((RepeaterAction)event.getSource()).getRepeater();
+                    boolean foundSelection = false;
                     for (int i = repeater.getSize() - 1; i >= 0; i--) {
                         Repeater.RepeaterRow row = repeater.getRow(i);
                         Widget selectWidget = row.getChild(selectName);
                         if (Boolean.TRUE.equals(selectWidget.getValue())) {
-                            // Clear selection and add a row
-                            selectWidget.setValue(Boolean.FALSE);
+                            // Add a row
                             repeater.addRow(i);
+                            foundSelection = true;
                         }
+                    }
+                    
+                    if (!foundSelection) {
+                        // Add a row at the end
+                        repeater.addRow();
                     }
                 }
             });

Modified: cocoon/whiteboard/forms/java/org/apache/cocoon/forms/formmodel/RepeaterActionDefinitionBuilder.java
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/forms/java/org/apache/cocoon/forms/formmodel/RepeaterActionDefinitionBuilder.java?view=diff&r1=158943&r2=158944
==============================================================================
--- cocoon/whiteboard/forms/java/org/apache/cocoon/forms/formmodel/RepeaterActionDefinitionBuilder.java (original)
+++ cocoon/whiteboard/forms/java/org/apache/cocoon/forms/formmodel/RepeaterActionDefinitionBuilder.java Thu Mar 24 12:27:00 2005
@@ -70,6 +70,7 @@
             throw new Exception("Missing attribute 'command' at " + DomHelper.getLocation(widgetElement));
         }
 
+
         RepeaterActionDefinition definition = createDefinition(widgetElement, actionCommand);
         super.setupDefinition(widgetElement, definition);
         setDisplayData(widgetElement, definition);

Modified: cocoon/whiteboard/forms/samples/flow/binding_example.js
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/forms/samples/flow/binding_example.js?view=diff&r1=158943&r2=158944
==============================================================================
--- cocoon/whiteboard/forms/samples/flow/binding_example.js (original)
+++ cocoon/whiteboard/forms/samples/flow/binding_example.js Thu Mar 24 12:27:00 2005
@@ -80,6 +80,8 @@
     contact.setId("1");
     contact.setFirstName("Hermann");
     bean.addContact(contact);
+    bean.addDrink("Maer");
+    bean.addDrink("Leffe");
     
     form.load(bean);
     form.showForm("form2-display-pipeline");

Modified: cocoon/whiteboard/forms/samples/forms/form2_bind_bean.xml
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/forms/samples/forms/form2_bind_bean.xml?view=diff&r1=158943&r2=158944
==============================================================================
--- cocoon/whiteboard/forms/samples/forms/form2_bind_bean.xml (original)
+++ cocoon/whiteboard/forms/samples/forms/form2_bind_bean.xml Thu Mar 24 12:27:00 2005
@@ -50,7 +50,7 @@
     <fb:value id="cntr"   path="phoneCountry"/>
   </fb:aggregate>
 
-  <fb:multi-value id="drinks" parent-path="." row-path="drinks" direction="load"/>
+  <fb:multi-value id="drinks" parent-path="." row-path="drinks" direction="both"/>
 
   <!--
     - Repeater requires unique identification mechanism of the row-nodes.

Modified: cocoon/whiteboard/forms/samples/forms/form2_jx.xml
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/forms/samples/forms/form2_jx.xml?view=diff&r1=158943&r2=158944
==============================================================================
--- cocoon/whiteboard/forms/samples/forms/form2_jx.xml (original)
+++ cocoon/whiteboard/forms/samples/forms/form2_jx.xml Thu Mar 24 12:27:00 2005
@@ -49,6 +49,17 @@
       </jx:forEach>
     </table>
 
+    <table border="1">
+      <tr>
+        <th>drink</th>
+      </tr>
+      <jx:forEach var="item" items="${form2bean.drinks}">
+        <tr>
+          <td>${item}</td>
+        </tr>
+      </jx:forEach>
+    </table>
+
     <br/>
     <a href="form2bean.flow">Do it again</a>
   </body>

Modified: cocoon/whiteboard/forms/samples/forms/xhr_carselector_template.xml
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/forms/samples/forms/xhr_carselector_template.xml?view=diff&r1=158943&r2=158944
==============================================================================
--- cocoon/whiteboard/forms/samples/forms/xhr_carselector_template.xml (original)
+++ cocoon/whiteboard/forms/samples/forms/xhr_carselector_template.xml Thu Mar 24 12:27:00 2005
@@ -88,7 +88,16 @@
     </script>
   <title>Car selector with XMLHTTPRequest</title>
   <content>
-    <ft:form-template action="carselector" method="POST">
+    <para>
+        This experimental sample demonstrates the use of XMLHttpRequest to update
+        fields without refreshing the page. It is currently broken: the form
+        cannot be successfully submitted, as the form model does not contain the
+        values of the type and model selection lists. After selecting a value in
+        the "model" field, the "type" and "model" fields are reset to their initial
+        values, instead of submitting the form. See also bugzilla 34077.
+    </para>
+
+    <ft:form-template action="xhr_carselector" method="POST">
       <ft:continuation-id/>
       <fi:group>
         <fi:styling layout="columns"/>
@@ -107,5 +116,6 @@
         </fi:items>
       </fi:group>
     </ft:form-template>
+
   </content>
 </page>

Modified: cocoon/whiteboard/forms/test/org/apache/cocoon/forms/datatype/FlowJXPathSelectionListTestCase.java
URL: http://svn.apache.org/viewcvs/cocoon/whiteboard/forms/test/org/apache/cocoon/forms/datatype/FlowJXPathSelectionListTestCase.java?view=diff&r1=158943&r2=158944
==============================================================================
--- cocoon/whiteboard/forms/test/org/apache/cocoon/forms/datatype/FlowJXPathSelectionListTestCase.java (original)
+++ cocoon/whiteboard/forms/test/org/apache/cocoon/forms/datatype/FlowJXPathSelectionListTestCase.java Thu Mar 24 12:27:00 2005
@@ -96,7 +96,7 @@
         Element datatypeElement = (Element) sample.getElementsByTagNameNS(Constants.DEFINITION_NS, "datatype").item(0);
         Datatype datatype = datatypeManager.createDatatype(datatypeElement, false);
         FlowJXPathSelectionList list = new FlowJXPathSelectionList
-            (context, "beans", "key", "value", datatype);
+            (context, "beans", "key", "value", datatype,null,false,null,false);
         DOMBuilder dest = new DOMBuilder();
         list.generateSaxFragment(dest, Locale.ENGLISH);
         Source expectedSource = new ResourceSource("resource://org/apache/cocoon/forms/datatype/FlowJXPathSelectionListTestCase.dest.xml");
@@ -127,7 +127,7 @@
         Element datatypeElement = (Element) sample.getElementsByTagNameNS(Constants.DEFINITION_NS, "datatype").item(0);
         Datatype datatype = datatypeManager.createDatatype(datatypeElement, false);
         FlowJXPathSelectionList list = new FlowJXPathSelectionList
-            (context, "beans", "key", "value", datatype);
+            (context, "beans", "key", "value", datatype,null,false,null,false);
         DOMBuilder dest = new DOMBuilder();
         list.generateSaxFragment(dest, Locale.ENGLISH);
         Source expectedSource = new ResourceSource("resource://org/apache/cocoon/forms/datatype/FlowJXPathSelectionListTestCaseWithNull.dest.xml");