From 86be89730c63a1a614bf5bef94ee432f3bcbd4fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Mon, 25 Apr 2011 13:00:24 +0200 Subject: [PATCH] [Bug #1009] Fix bug onChangeEnableApply was wiping the listener just added. Now both of them are added to the same time. FEA: ItEr74S04BugFixing --- .../org/navalplanner/web/common/Util.java | 19 ++++++++++++++++++- .../web/planner/allocation/FormBinder.java | 5 ++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/Util.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/Util.java index dadfb014a..5d7c7211d 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/Util.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/Util.java @@ -590,12 +590,29 @@ public class Util { */ public static void ensureUniqueListener(Component component, String eventName, EventListener uniqueListener) { + ensureUniqueListeners(component, eventName, uniqueListener); + } + + /** + * It removes all listeners registered for eventName and adds the new + * listeners. It's ensured that the only listeners left in the component for + * events of name eventName is uniqueListeners + * + * @param component + * @param eventName + * @param uniqueListeners + * new listeners to add + */ + public static void ensureUniqueListeners(Component component, + String eventName, EventListener... uniqueListeners) { Iterator listenerIterator = component.getListenerIterator(eventName); while (listenerIterator.hasNext()) { listenerIterator.next(); listenerIterator.remove(); } - component.addEventListener(eventName, uniqueListener); + for (EventListener each : uniqueListeners) { + component.addEventListener(eventName, each); + } } } 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 cde13ebbe..1b0119bdc 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 @@ -315,7 +315,7 @@ public class FormBinder { this.labelTaskStart = labelTaskStart; this.labelTaskEnd = labelTaskEnd; initializeDateAndDurationFieldsFromTaskOriginalValues(); - Util.ensureUniqueListener(taskWorkableDays, Events.ON_CHANGE, + Util.ensureUniqueListeners(taskWorkableDays, Events.ON_CHANGE, new EventListener() { @Override @@ -336,9 +336,8 @@ public class FormBinder { showValueOfDateOn(labelTaskStart, newStart); } } - }); + }, onChangeEnableApply); applyDisabledRules(); - onChangeEnableApply(taskWorkableDays); } void applyDisabledRules() {