package gui.component;
import gui.observers.EventChange;
import gui.observers.EventListener;
import gui.observers.EventSource;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.swing.JComponent;
import ast.evaluate.Value;
public abstract class Control implements EventSource{
private List<EventListener> eventListeners;
public abstract JComponent getComponent();
public abstract Value getValue();
public Control() {
eventListeners = new ArrayList<EventListener>();
}
protected synchronized void publishEventChange(){
EventChange event = new EventChange(this);
//event.getSource()
Iterator<EventListener> itr = eventListeners.iterator();
while(itr.hasNext()){
itr.next().handleEvent(event);
}
}
public synchronized void addListener(EventListener e){
eventListeners.add(e);
}
public synchronized void removeListener(EventListener e){
eventListeners.remove(e);
}
}