package io.github.minecraftgui.models.components; import io.github.minecraftgui.models.listeners.OnValueChangeListener; import io.github.minecraftgui.models.shapes.Shape; import java.util.concurrent.CopyOnWriteArrayList; /** * Created by Samuel on 2015-12-11. */ public abstract class ComponentValuable<V> extends Component{ private final CopyOnWriteArrayList<OnValueChangeListener> listeners; public abstract V getValue(); public abstract void setValue(V value); public ComponentValuable(String id, Class<? extends Shape> shape) { super(id, shape); this.listeners = new CopyOnWriteArrayList<>(); } public void addOnValueChangeListener(OnValueChangeListener listener){ this.listeners.add(listener); } protected void valueChanged(){ for(OnValueChangeListener listener : listeners) listener.onValueChange(this); } }