package nbtool.gui.utilitypanes;
import java.util.ArrayList;
import nbtool.gui.utilitypanes.UtilityParent.UtilityListener;
public abstract class UtilityProvider<P, L extends UtilityListener<P>> extends UtilityParent {
private final ArrayList<L> listeners = new ArrayList<>();
public void listen(L listener) {
listeners.add(listener);
}
public void stopListening(L listener) {
listeners.remove(listener);
}
protected void fireChanged() {
for (UtilityListener<P> ul : listeners) {
ul.utilityChanged(this, getLatest());
}
}
public abstract P getLatest();
}