001    package sysModel;
002    
003    import model.ILambda;
004    
005    import java.util.Observable;
006    import java.util.Observer;
007    
008    /**
009     * Simulation engine that contains the observable and manages observers.
010     *
011     * @author Mathias Ricken
012     */
013    public class SimEngine {
014        /**
015         * The observable.
016         */
017        private Observable _observable = new Observable() {
018            public void notifyObservers(Object obj) {
019                setChanged();
020                super.notifyObservers(obj);
021            }
022        };
023    
024        /**
025         * Add observer to simulation.
026         *
027         * @param observer observer to add
028         */
029        public void add(Observer observer) {
030            _observable.addObserver(observer);
031        }
032    
033        /**
034         * Remove observer from simulation.
035         *
036         * @param observer observer to remove
037         */
038        public void delete(Observer observer) {
039            _observable.deleteObserver(observer);
040        }
041    
042        /**
043         * Accept a lambda and pass it to all observers.
044         *
045         * @param lambda lambda to execute
046         */
047        public void notify(ILambda lambda) {
048            _observable.notifyObservers(lambda);
049        }
050    
051        /**
052         * Clears all observers.
053         */
054        public void clear() {
055            _observable.deleteObservers();
056        }
057    }