Author: sletellier Date: 2011-04-07 14:03:27 +0000 (Thu, 07 Apr 2011) New Revision: 1158 Log: Keep selected values in model if no possible values are founds with filter Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SimpleSelector.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/TopiaEntitySelector.java Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SimpleSelector.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SimpleSelector.java 2011-04-07 13:03:49 UTC (rev 1157) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SimpleSelector.java 2011-04-07 14:03:27 UTC (rev 1158) @@ -95,6 +95,27 @@ } public List<String> getValues() { + // Create empty list if null + if (values == null) { + values = new ArrayList<String>(); + } + + // Add selected value if not yet in + String selectedValue = getSelectedValue(); + if (selectedValue != null && !values.contains(selectedValue)) { + values.add(selectedValue); + } + + // Add all selected values if not yet in + List<String> selectedValues = getSelectedValues(); + if (selectedValues != null) { + for (String sv : selectedValues) { + if (!values.contains(sv)) { + values.add(selectedValue); + } + } + } + return values; } Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/TopiaEntitySelector.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/TopiaEntitySelector.java 2011-04-07 13:03:49 UTC (rev 1157) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/TopiaEntitySelector.java 2011-04-07 14:03:27 UTC (rev 1158) @@ -28,17 +28,14 @@ import org.apache.tapestry5.OptionGroupModel; import org.apache.tapestry5.OptionModel; import org.apache.tapestry5.ValueEncoder; -import org.apache.tapestry5.annotations.InjectComponent; import org.apache.tapestry5.annotations.Parameter; import org.apache.tapestry5.annotations.Persist; -import org.apache.tapestry5.corelib.components.Select; import org.apache.tapestry5.internal.OptionModelImpl; import org.apache.tapestry5.internal.SelectModelImpl; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.ioc.services.PropertyAccess; import org.apache.tapestry5.ioc.services.PropertyAdapter; import org.apache.tapestry5.util.AbstractSelectModel; -import org.chenillekit.tapestry.core.components.MultipleSelect; import org.chenillekit.tapestry.core.models.GenericMultipleSelectModel; import org.nuiton.topia.persistence.TopiaEntity; import org.slf4j.Logger; @@ -144,6 +141,7 @@ return selectedValue; } + public void setSelectedValue(E selectedValue) { this.selectedValue = selectedValue; } @@ -157,6 +155,27 @@ } public List<E> getValues() { + // Create empty list if null + if (values == null) { + values = new ArrayList<E>(); + } + + // Add selected value if not yet in + E selectedValue = getSelectedValue(); + if (selectedValue != null && !values.contains(selectedValue)) { + values.add(selectedValue); + } + + // Add all selected values if not yet in + List<E> selectedValues = getSelectedValues(); + if (selectedValues != null) { + for (E sv : selectedValues) { + if (!values.contains(sv)) { + values.add(selectedValue); + } + } + } + return values; } @@ -256,16 +275,17 @@ } protected List<OptionModel> getOptionModels(List<E> entities) { + PropertyAdapter propertyAdapter = propertyAccess.getAdapter(getClazz()).getPropertyAdapter(getLabelPropertyName()); + if (propertyAdapter == null) { + throw new IllegalStateException("PropertyAdapter not found for clazz[" + getClazz() + "] labelPropertyName[" + getLabelPropertyName() + "]"); + } List<OptionModel> options = new ArrayList<OptionModel>(); + + // Fill model for (E entity : entities) { if (entity != null) { - PropertyAdapter propertyAdapter = propertyAccess.getAdapter(getClazz()).getPropertyAdapter(getLabelPropertyName()); - if (propertyAdapter == null) { - log.error("PropertyAdapter not found for clazz[" + getClazz() + "] labelPropertyName[" + getLabelPropertyName() + "]"); - } else { - String toRender = (String)propertyAdapter.get(entity); - options.add(new OptionModelImpl(toRender, entity)); - } + String toRender = (String)propertyAdapter.get(entity); + options.add(new OptionModelImpl(toRender, entity)); } } return options;