From af71c91c39b4be2ee53adf7157d75bed7fa3b0b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Tue, 18 Aug 2009 12:26:56 +0200 Subject: [PATCH] ItEr22S12CUVistaRecursosTempoPorProxectoItEr21S07: Handling listeners using WeakReferencedListeners. --- .../zkoss/ganttz/TimeTrackerComponent.java | 32 ++++++++----------- 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/TimeTrackerComponent.java b/ganttzk/src/main/java/org/zkoss/ganttz/TimeTrackerComponent.java index ba9d18b03..4b3964d68 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/TimeTrackerComponent.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/TimeTrackerComponent.java @@ -1,12 +1,10 @@ package org.zkoss.ganttz; -import java.lang.ref.WeakReference; import java.util.Collection; -import java.util.LinkedList; -import java.util.List; -import java.util.ListIterator; import org.zkoss.ganttz.util.Interval; +import org.zkoss.ganttz.util.WeakReferencedListeners; +import org.zkoss.ganttz.util.WeakReferencedListeners.IListenerNotification; import org.zkoss.ganttz.util.zoom.IZoomLevelChangedListener; import org.zkoss.ganttz.util.zoom.TimeTrackerState; import org.zkoss.ganttz.util.zoom.ZoomLevel; @@ -25,7 +23,8 @@ public class TimeTrackerComponent extends HtmlMacroComponent { .year(2012)); } - private List> zoomListeners = new LinkedList>(); + private WeakReferencedListeners zoomListeners = WeakReferencedListeners + .create(); private IDatesMapper datesMapper = null; @@ -51,8 +50,7 @@ public class TimeTrackerComponent extends HtmlMacroComponent { } public void addZoomListener(IZoomLevelChangedListener listener) { - zoomListeners - .add(new WeakReference(listener)); + zoomListeners.addListener(listener); } public void scrollHorizontalPercentage(int displacement) { @@ -60,17 +58,15 @@ public class TimeTrackerComponent extends HtmlMacroComponent { "scroll_horizontal", "" + displacement)); } - private void fireZoomChanged(ZoomLevel detailLevel) { - ListIterator> listIterator = zoomListeners - .listIterator(); - while (listIterator.hasNext()) { - IZoomLevelChangedListener listener = listIterator.next().get(); - if (listener == null) { - listIterator.remove(); - } else { - listener.zoomLevelChanged(detailLevel); - } - } + private void fireZoomChanged(final ZoomLevel detailLevel) { + zoomListeners + .fireEvent(new IListenerNotification() { + + @Override + public void doNotify(IZoomLevelChangedListener listener) { + listener.zoomLevelChanged(detailLevel); + } + }); } public Collection getDetailsFirstLevel() {