package org.uva.student.calinwouter.qlqls.ql.gui;
import org.uva.student.calinwouter.qlqls.ql.interfaces.ChangedStateEventListener;
import org.uva.student.calinwouter.qlqls.ql.model.VariableTable;
import java.util.LinkedList;
import java.util.List;
/*
* A wrapper for the variable table that also allows listeners to get notified when
* changes occur in the table.
*/
public class StateWrapper {
private VariableTable variableTable;
private List<ChangedStateEventListener> listeners;
public void subscribeChangedStateEventListener(ChangedStateEventListener listener) {
listeners.add(listener);
}
public void notifyListeners(){
for(ChangedStateEventListener listener : listeners){
listener.onStateChanged();
}
}
public void setVariableTable(VariableTable variableTable) {
this.variableTable = variableTable;
notifyListeners();
}
public VariableTable getVariableTable(){
return variableTable;
}
public StateWrapper(VariableTable variableTable) {
this.variableTable = variableTable;
listeners = new LinkedList<ChangedStateEventListener>();
}
}