From 8aef6af117a291940f647efac5efe43395631c8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Wed, 2 Dec 2009 22:01:35 +0100 Subject: [PATCH] ItEr37S08CUCreacionUnidadesPlanificacionItEr36S11: The total hours is kept synchronized with the hours inputs when they are changed. --- .../web/planner/allocation/AllocationRow.java | 6 ++++- .../web/planner/allocation/FormBinder.java | 25 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AllocationRow.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AllocationRow.java index 577a94718..b2db5bed6 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AllocationRow.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AllocationRow.java @@ -244,7 +244,7 @@ public abstract class AllocationRow { if (origin != null) { return origin.getAssignedHours(); } - return null; + return 0; } public void applyDisabledRules(CalculatedValue calculatedValue) { @@ -258,4 +258,8 @@ public abstract class AllocationRow { hoursInput.setValue(last.getAssignedHours()); resourcesPerDayInput.setValue(last.getResourcesPerDay().getAmount()); } + + public void addListenerForHoursInputChange(EventListener listener) { + hoursInput.addEventListener(Events.ON_CHANGE, listener); + } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/FormBinder.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/FormBinder.java index f9a9dc75b..691de7f3c 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/FormBinder.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/FormBinder.java @@ -105,6 +105,16 @@ class FormBinder { private EventListener recommendedCheckboxListener; + private EventListener hoursInputChange = new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + if (assignedHoursComponent.isDisabled()) { + assignedHoursComponent.setValue(sumAllHoursFromHoursInputs()); + } + } + }; + public FormBinder( AllocationRowsHandler allocationRowsHandler, IResourceAllocationModel resourceAllocationModel) { @@ -163,6 +173,20 @@ class FormBinder { } } + private void bindTotalHoursToHoursInputs() { + for (AllocationRow each : rows) { + each.addListenerForHoursInputChange(hoursInputChange); + } + } + + private int sumAllHoursFromHoursInputs() { + int result = 0; + for (AllocationRow each : rows) { + result += each.getHoursFromInput(); + } + return result; + } + public CalculatedValue getCalculatedValue() { return allocationRowsHandler.getCalculatedValue(); } @@ -221,6 +245,7 @@ class FormBinder { .getCurrentRows()); rows = result; applyDisabledRulesOnRows(); + bindTotalHoursToHoursInputs(); return result; }