package edu.ualberta.med.biobank.common.util;
import java.util.ArrayList;
import java.util.List;
public class AbstractListChangeSource<E> implements ListChangeSource<E> {
private final List<ListChangeHandler<E>> handlers =
new ArrayList<ListChangeHandler<E>>();
@Override
public void addListChangeHandler(ListChangeHandler<E> handler) {
handlers.add(handler);
}
@Override
public void removeListChangeHandler(ListChangeHandler<E> handler) {
handlers.remove(handler);
}
protected void fireListChangeEvent() {
ListChangeEvent<E> event = new ListChangeEvent<E>();
List<ListChangeHandler<E>> handlersCopy =
new ArrayList<ListChangeHandler<E>>(handlers);
for (ListChangeHandler<E> handler : handlersCopy) {
handler.onListChange(event);
}
}
}