package nl.tudelft.simulation.event.util; import java.util.Iterator; import nl.tudelft.simulation.event.EventProducer; import nl.tudelft.simulation.event.EventType; /** * The Event producing iterator provides a set to which one can subscribe interest in entry changes. *

* (c) copyright 2002-2014 Delft University of Technology.
* BSD-style license. See DSOL License.
* @author Peter Jacobs * @author Alexander Verbraeck * @since 1.5 * @param the type of the iterator */ public class EventIterator extends EventProducer implements Iterator { /** The default serial version UID for serializable classes. */ private static final long serialVersionUID = 1L; /** OBJECT_REMOVED_EVENT is fired on removal of entries. */ public static final EventType OBJECT_REMOVED_EVENT = new EventType("OBJECT_REMOVED_EVENT"); /** our parent iterator. */ private Iterator parent = null; /** * constructs a new Iterator. * @param parent parent. */ public EventIterator(final Iterator parent) { super(); this.parent = parent; } /** {@inheritDoc} */ @Override public boolean hasNext() { return this.parent.hasNext(); } /** {@inheritDoc} */ @Override public T next() { return this.parent.next(); } /** {@inheritDoc} */ @Override public void remove() { this.parent.remove(); this.fireEvent(OBJECT_REMOVED_EVENT); } }