From 0563524f4ad53bf73254fc3be79bf05585d508a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Mon, 31 Jan 2011 15:30:44 +0100 Subject: [PATCH] [Bug #825] Fix bug The previous listeners associated to the recommended allocation were not removed, so pressing the recommended allocation button caused it to be executed several times. FEA: ItEr69S04BugFixing --- .../org/navalplanner/web/common/Util.java | 20 +++++++++++++++++++ .../planner/allocation/TaskInformation.java | 5 +++-- 2 files changed, 23 insertions(+), 2 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 14cc8fb4c..dadfb014a 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 @@ -26,6 +26,7 @@ import static org.navalplanner.web.I18nHelper._; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; +import java.util.Iterator; import java.util.List; import org.zkoss.ganttz.util.ComponentsFinder; @@ -578,4 +579,23 @@ public class Util { return ifNotFound.createAt(container); } + /** + * It removes all listeners registered for eventName and adds the new + * listener. It's ensured that the only listener left in the component for + * events of name eventName is uniqueListener + * + * @param component + * @param eventName + * @param uniqueListener + */ + public static void ensureUniqueListener(Component component, String eventName, + EventListener uniqueListener) { + Iterator listenerIterator = component.getListenerIterator(eventName); + while (listenerIterator.hasNext()) { + listenerIterator.next(); + listenerIterator.remove(); + } + component.addEventListener(eventName, uniqueListener); + } + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/TaskInformation.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/TaskInformation.java index 0fa0640b1..f3db8d515 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/TaskInformation.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/TaskInformation.java @@ -75,8 +75,9 @@ public class TaskInformation extends HtmlMacroComponent { gridTaskRows.setRowRenderer(newTaskRowsRenderer()); } - public void onRecomendAllocation(EventListener event) { - btnRecommendedAllocation.addEventListener(Events.ON_CLICK, event); + public void onRecomendAllocation(EventListener eventListener) { + Util.ensureUniqueListener(btnRecommendedAllocation, Events.ON_CLICK, + eventListener); } public void showRecomendedAllocationButton() {