package openmods.gui.logic;
import com.google.common.collect.ImmutableList;
import openmods.api.IValueProvider;
import openmods.api.IValueReceiver;
public class ValueCopyAction<T> implements IValueUpdateAction {
private final Object trigger;
private final IValueProvider<T> provider;
private final IValueReceiver<T> receiver;
public ValueCopyAction(Object trigger, IValueProvider<T> provider, IValueReceiver<T> receiver) {
this.trigger = trigger;
this.provider = provider;
this.receiver = receiver;
}
@Override
public Iterable<?> getTriggers() {
return ImmutableList.of(trigger);
}
@Override
public void execute() {
T value = provider.getValue();
receiver.setValue(value);
}
public static <T> ValueCopyAction<T> create(IValueProvider<T> provider, IValueReceiver<T> receiver) {
return new ValueCopyAction<T>(provider, provider, receiver);
}
public static <T> ValueCopyAction<T> create(Object trigger, IValueProvider<T> provider, IValueReceiver<T> receiver) {
return new ValueCopyAction<T>(trigger, provider, receiver);
}
}