Thanks for doing this Erwan! Based on a read through this diff, this approach 
looks good, and consistent with what was discussed on the list.

-David


On Feb 5, 2010, at 9:31 AM, er...@apache.org wrote:

> Author: erwan
> Date: Fri Feb  5 15:31:48 2010
> New Revision: 906973
> 
> URL: http://svn.apache.org/viewvc?rev=906973&view=rev
> Log:
> Remove the differences in columns in a fom as reported by Nicolas Malin on 
> the dev mailing list.
> More details on this issue here : 
> https://issues.apache.org/jira/browse/OFBIZ-3444 with screenshots and an 
> example
> 
> Modified:
>    ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java
> 
> Modified: 
> ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java
> URL: 
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java?rev=906973&r1=906972&r2=906973&view=diff
> ==============================================================================
> --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java 
> (original)
> +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java Fri 
> Feb  5 15:31:48 2010
> @@ -1608,18 +1608,38 @@
> 
>         // render row formatting open
>         formStringRenderer.renderFormatItemRowOpen(writer, localContext, 
> this);
> +        Iterator<ModelFormField> innerDisplayHyperlinkFieldsBeginIter = 
> innerDisplayHyperlinkFieldsBegin.iterator();
> +        Map<String, Integer> fieldCount = FastMap.newInstance();
> +        while(innerDisplayHyperlinkFieldsBeginIter.hasNext()){
> +            ModelFormField modelFormField = 
> innerDisplayHyperlinkFieldsBeginIter.next();
> +            if(fieldCount.containsKey(modelFormField.getFieldName())){
> +                fieldCount.put(modelFormField.getFieldName(), 
> fieldCount.get(modelFormField.getFieldName())+1);
> +            }
> +            else{
> +                fieldCount.put(modelFormField.getFieldName(), 1);
> +            }
> +        }
> 
>         // do the first part of display and hyperlink fields
>         Iterator<ModelFormField> innerDisplayHyperlinkFieldIter = 
> innerDisplayHyperlinkFieldsBegin.iterator();
>         while (innerDisplayHyperlinkFieldIter.hasNext()) {
>             ModelFormField modelFormField = 
> innerDisplayHyperlinkFieldIter.next();
>             // span columns only if this is the last column in the row (not 
> just in this first list)
> -            if (innerDisplayHyperlinkFieldIter.hasNext() || numOfCells > 
> innerDisplayHyperlinkFieldsBegin.size()) {
> -                formStringRenderer.renderFormatItemRowCellOpen(writer, 
> localContext, this, modelFormField, 1);
> -            } else {
> -                formStringRenderer.renderFormatItemRowCellOpen(writer, 
> localContext, this, modelFormField, numOfColumnsToSpan);
> +            if( fieldCount.get(modelFormField.getName()) < 2 ){
> +                if ((innerDisplayHyperlinkFieldIter.hasNext() || numOfCells 
> > innerDisplayHyperlinkFieldsBegin.size())) {
> +                    formStringRenderer.renderFormatItemRowCellOpen(writer, 
> localContext, this, modelFormField, 1);
> +                } else {
> +                    formStringRenderer.renderFormatItemRowCellOpen(writer, 
> localContext, this, modelFormField, numOfColumnsToSpan);
> +                }
>             }
> -            if ((!"list".equals(this.getType()) && 
> !"multi".equals(this.getType())) || modelFormField.shouldUse(localContext)) {
> +            if ((!"list".equals(this.getType()) && 
> !"multi".equals(this.getType())) || modelFormField.shouldUse(localContext)) { 
> +                    if(( fieldCount.get(modelFormField.getName()) > 1 )){
> +                        if ((innerDisplayHyperlinkFieldIter.hasNext() || 
> numOfCells > innerDisplayHyperlinkFieldsBegin.size())) {
> +                            
> formStringRenderer.renderFormatItemRowCellOpen(writer, localContext, this, 
> modelFormField, 1);
> +                        } else {
> +                            
> formStringRenderer.renderFormatItemRowCellOpen(writer, localContext, this, 
> modelFormField, numOfColumnsToSpan);
> +                        }
> +                    }
>                 modelFormField.renderFieldString(writer, localContext, 
> formStringRenderer);
>             }
>             formStringRenderer.renderFormatItemRowCellClose(writer, 
> localContext, this, modelFormField);
> 
> 

Reply via email to