diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementController.java index d05285db7..9a7c13b01 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/OrderElementController.java @@ -3,6 +3,7 @@ package org.navalplanner.web.orders; import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; @@ -243,6 +244,10 @@ public class OrderElementController extends GenericForwardComposer { "At least one HoursGroup is needed"); } + for (CriterionType criterionType : getCriterionTypes()) { + removeCriterionsFromHoursGroup(criterionType); + } + Clients.closeErrorBox(window.getFellow("hoursGroupsListbox")); window.setVisible(false); Util.reloadBindings(window.getParent()); @@ -298,18 +303,18 @@ public class OrderElementController extends GenericForwardComposer { } /** - * Gets the list of possible {@link CriterionType}. + * Gets the set of possible {@link CriterionType}. * - * @return A {@link List} of {@link CriterionType} + * @return A {@link Set} of {@link CriterionType} */ - public List getCriterionTypes() { + public Set getCriterionTypes() { if (model == null) { - return new ArrayList(); + return new HashSet(); } List list = model.getCriterionTypes(); list.removeAll(getSelectedCriterionTypes()); - return list; + return new HashSet(list); } /** @@ -318,7 +323,13 @@ public class OrderElementController extends GenericForwardComposer { * @return A {@link List} of {@link CriterionType} */ public Set getSelectedCriterionTypes() { - return selectedCriterionTypes; + return new HashSet(selectedCriterionTypes); + } + + public void setSelectedCriterionTypes( + Set selectedCriterionTypes) { + this.selectedCriterionTypes = selectedCriterionTypes; + Util.reloadBindings(window); } /** @@ -345,39 +356,6 @@ public class OrderElementController extends GenericForwardComposer { } } - /** - * Adds the selected {@link CriterionType} to the selectedCriterionTypes - * attribute. - * - * @param selectedItems - * {@link Set} of {@link Listitem} with the selected - * {@link CriterionType} - */ - public void assignCriterions(Set selectedItems) { - for (Listitem listitem : selectedItems) { - CriterionType value = (CriterionType) listitem.getValue(); - selectedCriterionTypes.add(value); - } - Util.reloadBindings(window); - } - - /** - * Removes the selected {@link CriterionType} from the - * selectedCriterionTypes attribute. - * - * @param selectedItems - * {@link Set} of {@link Listitem} with the selected - * {@link CriterionType} - */ - public void unassignCriterions(Set selectedItems) { - for (Listitem listitem : selectedItems) { - CriterionType value = (CriterionType) listitem.getValue(); - selectedCriterionTypes.remove(value); - removeCriterionsFromHoursGroup(value); - } - Util.reloadBindings(window); - } - /** * Removes the {@link Criterion} which matches with this type for all the * {@link HoursGroup} diff --git a/navalplanner-webapp/src/main/webapp/orders/_editOrderElement.zul b/navalplanner-webapp/src/main/webapp/orders/_editOrderElement.zul index 5e45ac46e..c5229e3fd 100644 --- a/navalplanner-webapp/src/main/webapp/orders/_editOrderElement.zul +++ b/navalplanner-webapp/src/main/webapp/orders/_editOrderElement.zul @@ -58,40 +58,18 @@ onClick="orderElementController.manageCriterions();" /> - + -