Author: sletellier Date: 2011-03-17 17:14:22 +0000 (Thu, 17 Mar 2011) New Revision: 1071 Log: Debug and improve code line selection Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/AbstractFilteredPage.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/ModelFactory.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SamplingFilterComponent.java trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SamplingFilterComponent.tml Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/AbstractFilteredPage.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/AbstractFilteredPage.java 2011-03-17 16:54:18 UTC (rev 1070) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/AbstractFilteredPage.java 2011-03-17 17:14:22 UTC (rev 1071) @@ -46,8 +46,11 @@ import org.apache.tapestry5.ioc.services.PropertyAccess; import org.slf4j.Logger; +import java.util.ArrayList; import java.util.List; +import static fr.ifremer.wao.ui.data.TapestryUtil.getEntityFromModel; + /** * AbstractFilteredPage * @@ -118,6 +121,12 @@ @Persist private boolean edited = false; + @Persist + private GenericSelectModel<SampleRow> sampleRowSelectModel; + + @Persist + private String sampleRowId; + public boolean isObserverSelect() { return observerSelect; } @@ -127,11 +136,13 @@ } public String getSampleRowId() { - return getModelFactory().getSampleRowId(); + return sampleRowId; } public void setSampleRowId(String sampleRowId) { - getModelFactory().setSampleRowId(sampleRowId); + this.sampleRowId = sampleRowId; + SampleRow sampleRow = getEntityFromModel(getSampleRowSelectModel(), sampleRowId); + getFilter().setSampleRow(sampleRow); } public String getCompanyId() { @@ -203,11 +214,24 @@ } public void onSelectedFromAddSampleRowCode() { - getModelFactory().addSampleRowCode(); + if (getSampleRowId() != null) { + + List<SampleRow> rows = getFilter().getSampleRows(); + if (rows == null) { + rows = new ArrayList<SampleRow>(); + getFilter().setSampleRows(rows); + } + SampleRow sampleRow = getSampleRowSelectModel().findObject(getSampleRowId()); + if ( ! rows.contains(sampleRow)) { + rows.add(sampleRow); + } + } } public void onSelectedFromRemoveSampleRowCode() { - getModelFactory().removeSampleRowCode(); + if (getSampleRowId() != null) { + getFilter().getSampleRows().remove(getSampleRowSelectModel().findObject(getSampleRowId())); + } } /** @@ -298,10 +322,26 @@ } /** - * @see ModelFactory#getSampleRowSelectModel() + * Get select model for sampleRows. Depends on filter (Sampling part only). + * The sampleRow set from filter is temporarly extracted to avoid returning + * only one element in the select. + * + * @return the GenericSelectModel<SampleRow> for sampleRows + * @throws WaoException */ public GenericSelectModel<SampleRow> getSampleRowSelectModel() throws WaoException { - return getModelFactory().getSampleRowSelectModel(); + if (sampleRowSelectModel == null) { + // WARN : no use of sampleRow filter + + List<SampleRow> rowsFiltered = getFilter().getSampleRows(); + getFilter().setSampleRows(null); + List<SampleRow> sampleRows = serviceSampling.getSampleRowsByFilter(getFilter()); + getFilter().setSampleRows(rowsFiltered); + + sampleRowSelectModel = new GenericSelectModel<SampleRow>(sampleRows, SampleRow.class, + SampleRow.PROPERTY_CODE, SampleRow.TOPIA_ID, propertyAccess); + } + return sampleRowSelectModel; } /** Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/ModelFactory.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/ModelFactory.java 2011-03-17 16:54:18 UTC (rev 1070) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/ModelFactory.java 2011-03-17 17:14:22 UTC (rev 1071) @@ -22,8 +22,10 @@ import org.apache.tapestry5.internal.OptionModelImpl; import org.apache.tapestry5.internal.SelectModelImpl; import org.apache.tapestry5.ioc.services.PropertyAccess; +import org.chenillekit.tapestry.core.models.GenericMultipleSelectModel; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import static fr.ifremer.wao.ui.data.TapestryUtil.getEntityFromModel; @@ -53,7 +55,7 @@ /** * Generic select models */ - protected GenericSelectModel<SampleRow> sampleRowSelectModel; + protected GenericMultipleSelectModel<SampleRow> sampleRowSelectModel; protected GenericSelectModel<TerrestrialLocation> terrestrialLocationSelectModel; protected GenericSelectModel<Company> companySelectModel; protected GenericSelectModel<WaoUser> observerSelectModel; @@ -70,7 +72,6 @@ /** * Id */ - protected String sampleRowId; protected String companyId; protected String observerId; protected String fishingGearDCFId; @@ -100,16 +101,6 @@ return user; } - public String getSampleRowId() { - return sampleRowId; - } - - public void setSampleRowId(String sampleRowId) { - this.sampleRowId = sampleRowId; - SampleRow sampleRow = getEntityFromModel(getSampleRowSelectModel(), sampleRowId); - getFilter().setSampleRow(sampleRow); - } - public String getCompanyId() { return companyId; } @@ -167,7 +158,7 @@ public void resetSampleRowSelectModel() throws WaoException { sampleRowSelectModel = null; - sampleRowId = null; + getFilter().setSampleRow(null); } public void resetObserverSelectModel() { @@ -257,28 +248,6 @@ return facadeSelectModel; } - - public void addSampleRowCode() { - if (getSampleRowId() != null) { - - List<SampleRow> rows = getFilter().getSampleRows(); - if (rows == null) { - rows = new ArrayList<SampleRow>(); - getFilter().setSampleRows(rows); - } - SampleRow sampleRow = getSampleRowSelectModel().findObject(getSampleRowId()); - if ( ! rows.contains(sampleRow)) { - rows.add(sampleRow); - } - } - } - - public void removeSampleRowCode() { - if (getSampleRowId() != null) { - getFilter().getSampleRows().remove(getSampleRowSelectModel().findObject(getSampleRowId())); - } - } - /** * Models */ @@ -306,10 +275,10 @@ * The sampleRow set from filter is temporarly extracted to avoid returning * only one element in the select. * - * @return the GenericSelectModel<SampleRow> for sampleRows + * @return the GenericMultipleSelectModel<SampleRow> for sampleRows * @throws WaoException */ - public GenericSelectModel<SampleRow> getSampleRowSelectModel() throws WaoException { + public GenericMultipleSelectModel<SampleRow> getSampleRowSelectModel() throws WaoException { if (sampleRowSelectModel == null) { // WARN : no use of sampleRow filter @@ -318,7 +287,7 @@ List<SampleRow> sampleRows = serviceSampling.getSampleRowsByFilter(getFilter()); getFilter().setSampleRows(rowsFiltered); - sampleRowSelectModel = new GenericSelectModel<SampleRow>(sampleRows, SampleRow.class, + sampleRowSelectModel = new GenericMultipleSelectModel<SampleRow>(sampleRows, SampleRow.class, SampleRow.PROPERTY_CODE, SampleRow.TOPIA_ID, propertyAccess); } return sampleRowSelectModel; Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SamplingFilterComponent.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SamplingFilterComponent.java 2011-03-17 16:54:18 UTC (rev 1070) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SamplingFilterComponent.java 2011-03-17 17:14:22 UTC (rev 1071) @@ -3,6 +3,7 @@ import fr.ifremer.wao.bean.SamplingFilter; import fr.ifremer.wao.entity.SampleRow; import fr.ifremer.wao.ui.base.ModelFactory; +import fr.ifremer.wao.ui.data.GenericSelectModel; import org.apache.tapestry5.ComponentResources; import org.apache.tapestry5.annotations.InjectComponent; import org.apache.tapestry5.annotations.Parameter; @@ -10,11 +11,15 @@ import org.apache.tapestry5.annotations.Property; import org.apache.tapestry5.corelib.components.Zone; import org.apache.tapestry5.ioc.annotations.Inject; +import org.chenillekit.tapestry.core.encoders.MultipleValueEncoder; import org.nuiton.util.PeriodDates; import org.slf4j.Logger; import java.text.DateFormat; import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; /** * @author sletellier <letellier at codelutin.com> Modified: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SamplingFilterComponent.tml =================================================================== --- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SamplingFilterComponent.tml 2011-03-17 16:54:18 UTC (rev 1070) +++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SamplingFilterComponent.tml 2011-03-17 17:14:22 UTC (rev 1071) @@ -42,7 +42,10 @@ <input t:type="select" t:model="modelFactory.terrestrialDistrictSelectModel" t:value="modelFactory.terrestrialDistrictId"/> </t:if> <label for="sampleRowId">${message:wao.ui.field.SampleRow.code} :</label> - <select t:type="select" t:id="sampleRowId" t:model="modelFactory.sampleRowSelectModel" t:value="modelFactory.sampleRowId"/> + + <select t:type="ck/MultipleSelect" t:model="modelFactory.sampleRowSelectModel" t:value="filter.sampleRows" size="4" + t:encoder="modelFactory.sampleRowSelectModel"/> + <!--select t:type="select" t:id="sampleRowId" t:model="modelFactory.sampleRowSelectModel" t:value="modelFactory.sampleRowId"/> <input t:type="submit" class="ico22px add" t:id="addSampleRowCode" value="Add" title="Ajouter un code de ligne"/> <input t:type="submit" class="ico22px remove" t:id="removeSampleRowCode" value="Remove" @@ -51,7 +54,7 @@ <li style="display: inline;" t:type="loop" t:source="filter.sampleRows" t:value="row" t:volatile="true"> ${row.code} </li> - </ul> + </ul--> </div> <div> <label for="fishingGearDCF">${message:wao.ui.entity.fishingGearDCF} :</label>