/**
*
*/
package org.goko.core.gcode.element;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
/**
* @author Psyko
* @date 29 mai 2016
*/
public abstract class AbstractGCodeProviderSource implements IGCodeProviderSource {
/** Registered listeners */
private List<IGCodeProviderSourceListener> listeners;
/**
* Constructor
*/
protected AbstractGCodeProviderSource() {
super();
this.listeners = new CopyOnWriteArrayList<IGCodeProviderSourceListener>();
}
/** (inheritDoc)
* @see org.goko.core.gcode.element.IGCodeProviderSource#addListener(org.goko.core.gcode.element.IGCodeProviderSourceListener)
*/
@Override
public void addListener(IGCodeProviderSourceListener listener) {
if(!listeners.contains(listener)){
listeners.add(listener);
}
}
/**
* Notifies registered listener that this source has changed
*/
protected void notifyChange(){
for (IGCodeProviderSourceListener listener : listeners) {
listener.onSourceChanged(this);
}
}
}