From c9f038974ff230ddfe751ad6c2a20aba5766f30f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Mon, 31 Jan 2011 16:08:48 +0100 Subject: [PATCH] Avoid memory leak Delete previous associated listeners so the previous FormBinder and associated objects can be reclaimed by GC. FEA: ItEr69S04BugFixing --- .../web/planner/allocation/FormBinder.java | 46 ++++++++++--------- 1 file changed, 24 insertions(+), 22 deletions(-) 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 70afb9f81..f10a55712 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 @@ -285,7 +285,8 @@ public class FormBinder { } private void onChangeEnableApply(InputElement inputElement) { - inputElement.addEventListener(Events.ON_CHANGE, onChangeEnableApply); + Util.ensureUniqueListener(inputElement, Events.ON_CHANGE, + onChangeEnableApply); } public void setWorkableDays(Intbox duration, @@ -311,28 +312,28 @@ public class FormBinder { this.labelTaskStart = labelTaskStart; this.labelTaskEnd = labelTaskEnd; initializeDateAndDurationFieldsFromTaskOriginalValues(); - taskWorkableDays.addEventListener(Events.ON_CHANGE, + Util.ensureUniqueListener(taskWorkableDays, Events.ON_CHANGE, new EventListener() { - @Override - public void onEvent(Event event) throws Exception { - Task task = getTask(); - Integer workableDays = taskWorkableDays.getValue(); - if (allocationRowsHandler.isForwardsAllocation()) { - LocalDate newEndDate = task - .calculateEndGivenWorkableDays(workableDays); - taskPropertiesController - .updateTaskEndDate(newEndDate); - showValueOfDateOn(labelTaskEnd, newEndDate); - } else { - LocalDate newStart = task - .calculateStartGivenWorkableDays(workableDays); - taskPropertiesController - .updateTaskStartDate(newStart); - showValueOfDateOn(labelTaskStart, newStart); - } - } - }); + @Override + public void onEvent(Event event) throws Exception { + Task task = getTask(); + Integer workableDays = taskWorkableDays.getValue(); + if (allocationRowsHandler.isForwardsAllocation()) { + LocalDate newEndDate = task + .calculateEndGivenWorkableDays(workableDays); + taskPropertiesController + .updateTaskEndDate(newEndDate); + showValueOfDateOn(labelTaskEnd, newEndDate); + } else { + LocalDate newStart = task + .calculateStartGivenWorkableDays(workableDays); + taskPropertiesController + .updateTaskStartDate(newStart); + showValueOfDateOn(labelTaskStart, newStart); + } + } + }); applyDisabledRules(); onChangeEnableApply(taskWorkableDays); } @@ -556,7 +557,8 @@ public class FormBinder { FormBinder.this.applyButton.setDisabled(true); } }; - this.applyButton.addEventListener(Events.ON_CLICK, applyButtonListener); + Util.ensureUniqueListener(this.applyButton, Events.ON_CLICK, + applyButtonListener); } public int getAssignedHours() {