From 0d7cd79ebcd6b4dd4046042aaeec2df7060fa239 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Tue, 21 Sep 2010 16:59:48 +0200 Subject: [PATCH] Change type to specific allocation when choosing a resource FEA: ItEr60S04ValidacionEProbasFuncionaisItEr59S04 --- .../NewAllocationSelectorController.java | 47 ++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/NewAllocationSelectorController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/NewAllocationSelectorController.java index 751b8b9bf..4bd2da73d 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/NewAllocationSelectorController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/search/NewAllocationSelectorController.java @@ -22,6 +22,7 @@ package org.navalplanner.web.resources.search; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.EnumSet; import java.util.HashSet; import java.util.List; @@ -114,7 +115,16 @@ public class NewAllocationSelectorController extends listBoxResources.setItemRenderer(getListitemRenderer()); refreshListBoxResources(); + listBoxResources.addEventListener(Events.ON_SELECT, + new EventListener() { + @Override + public void onEvent(Event event) throws Exception { + if (isGenericType()) { + returnToSpecificDueToResourceSelection(); + } + } + }); allocationTypeSelector.addEventListener(Events.ON_CHECK, new EventListener() { @@ -144,11 +154,46 @@ public class NewAllocationSelectorController extends private void onType(AllocationType type) { currentAllocationType = type; - listBoxResources.setDisabled(isGenericType()); Util.reloadBindings(criterionsTree); refreshListBoxResources(); } + private void returnToSpecificDueToResourceSelection() { + currentAllocationType = AllocationType.SPECIFIC; + List criteria = getSelectedCriterions(); + List selectedWorkers = getSelectedWorkers(); + refreshListBoxResources(query().byCriteria(criteria) + .byLimiting(limitingResource).execute()); + listBoxResources.renderAll(); // force render so list items has the + // value property so the resources can be + // selected + + selectWorkers(selectedWorkers); + currentAllocationType.doTheSelectionOn(allocationTypeSelector); + } + + private void selectWorkers(Collection selectedWorkers) { + for (Resource each : selectedWorkers) { + Listitem listItem = findListItemFor(each); + if (listItem != null) { + listItem.setSelected(true); + } + } + } + + private Listitem findListItemFor(Resource resource) { + @SuppressWarnings("unchecked") + Collection items = listBoxResources.getItems(); + for (Listitem item : items) { + Resource itemResource = (Resource) item.getValue(); + if (itemResource != null + && itemResource.getId().equals(resource.getId())) { + return item; + } + } + return null; + } + private static final EnumSet genericTypes = EnumSet.of( AllocationType.GENERIC_MACHINES, AllocationType.GENERIC_WORKERS);