Author: erwan
Date: Mon Dec 19 20:16:01 2011 New Revision: 1220927 URL: http://svn.apache.org/viewvc?rev=1220927&view=rev Log: OFBIZ-4487 - enable definition for position on sortfield - patch from Youssef Khaye and Olivier Heintz Modified: ofbiz/trunk/framework/widget/dtd/widget-form.xsd ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java Modified: ofbiz/trunk/framework/widget/dtd/widget-form.xsd URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-form.xsd?rev=1220927&r1=1220926&r2=1220927&view=diff ============================================================================== --- ofbiz/trunk/framework/widget/dtd/widget-form.xsd (original) +++ ofbiz/trunk/framework/widget/dtd/widget-form.xsd Mon Dec 19 20:16:01 2011 @@ -356,6 +356,7 @@ under the License. <xs:element name="sort-field"> <xs:complexType> <xs:attributeGroup ref="attlist.sort-field"/> + <xs:attribute name="position" type="xs:positiveInteger"/> </xs:complexType> </xs:element> <xs:attributeGroup name="attlist.sort-field"> 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=1220927&r1=1220926&r2=1220927&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 Mon Dec 19 20:16:01 2011 @@ -132,7 +132,7 @@ public class ModelForm extends ModelWidg protected List<AltTarget> altTargets = FastList.newInstance(); protected List<AutoFieldsService> autoFieldsServices = FastList.newInstance(); protected List<AutoFieldsEntity> autoFieldsEntities = FastList.newInstance(); - protected List<String> sortOrderFields = FastList.newInstance(); + protected List<SortField> sortOrderFields = FastList.newInstance(); protected List<AltRowStyle> altRowStyles = FastList.newInstance(); /** This List will contain one copy of each field for each field name in the order @@ -538,7 +538,8 @@ public class ModelForm extends ModelWidg String tagName = sortFieldElement.getTagName(); if (tagName.equals("sort-field")) { String fieldName = sortFieldElement.getAttribute("name"); - this.sortOrderFields.add(fieldName); + String position = sortFieldElement.getAttribute("position"); + this.sortOrderFields.add(new SortField(fieldName, position)); this.fieldGroupMap.put(fieldName, lastFieldGroup); } else if (tagName.equals("banner")) { Banner thisBanner = new Banner(sortFieldElement, this); @@ -559,7 +560,8 @@ public class ModelForm extends ModelWidg // reorder fields according to sort order if (sortOrderFields.size() > 0) { List<ModelFormField> sortedFields = FastList.newInstance(); - for (String fieldName: this.sortOrderFields) { + for (SortField sortField: this.sortOrderFields) { + String fieldName = sortField.getFieldName(); if (UtilValidate.isEmpty(fieldName)) { continue; } @@ -570,6 +572,9 @@ public class ModelForm extends ModelWidg ModelFormField modelFormField = fieldIter.next(); if (fieldName.equals(modelFormField.getName())) { // matched the name; remove from the original last and add to the sorted list + if (UtilValidate.isNotEmpty(sortField.getPosition())) { + modelFormField.setPosition(sortField.getPosition()); + } fieldIter.remove(); sortedFields.add(modelFormField); } @@ -2894,6 +2899,35 @@ public class ModelForm extends ModelWidg } } + public static class SortField { + protected String fieldName; + protected Integer position = null; + + public SortField(String name, String position) { + this.fieldName = name; + if (UtilValidate.isNotEmpty(position)){ + Integer posParam = null; + try { + posParam = Integer.valueOf(position); + } + catch(Exception e) {/* just ignore the exception*/} + this.position = posParam; + } + } + + public SortField(String name) { + this(name, null); + } + + public String getFieldName() { + return this.fieldName; + } + + public Integer getPosition() { + return this.position; + } + } + public static interface FieldGroupBase {} public static class FieldGroup implements FieldGroupBase { @@ -2923,7 +2957,7 @@ public class ModelForm extends ModelWidg } for (Element sortFieldElement: UtilXml.childElementList(sortOrderElement, "sort-field")) { - modelForm.sortOrderFields.add(sortFieldElement.getAttribute("name")); + modelForm.sortOrderFields.add(new SortField(sortFieldElement.getAttribute("name"),sortFieldElement.getAttribute("position"))); modelForm.fieldGroupMap.put(sortFieldElement.getAttribute("name"), this); } } else { |
Free forum by Nabble | Edit this page |