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