package openmods.gui.logic;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
import com.google.common.collect.Sets;
import java.util.Set;
public class ValueUpdateDispatcher {
private Multimap<Object, IValueUpdateAction> actions = HashMultimap.create();
public void addAction(IValueUpdateAction listener) {
for (Object trigger : listener.getTriggers())
actions.put(trigger, listener);
}
public void trigger(Iterable<?> triggers) {
Set<IValueUpdateAction> actionsToTrigger = Sets.newIdentityHashSet();
for (Object trigger : triggers)
actionsToTrigger.addAll(actions.get(trigger));
for (IValueUpdateAction action : actionsToTrigger)
action.execute();
}
public void triggerAll() {
Set<IValueUpdateAction> uniques = Sets.newIdentityHashSet();
uniques.addAll(actions.values());
for (IValueUpdateAction action : uniques)
action.execute();
}
}