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); > >