// GraphTea Project: http://github.com/graphtheorysoftware/GraphTea
// Copyright (C) 2012 Graph Theory Software Foundation: http://GraphTheorySoftware.com
// Copyright (C) 2008 Mathematical Science Department of Sharif University of Technology
// Distributed under the terms of the GNU Lesser General Public License (LGPL): http://www.gnu.org/licenses/
package graphtea.library.algorithms;
import graphtea.library.algorithms.util.EventUtils;
import graphtea.library.event.Event;
import graphtea.library.event.EventDispatcher;
/**
* @author Omid Aladini
* Animated algorithms should extend this class.
*/
public abstract class Algorithm implements AlgorithmInterface {
/**
* Reference to the event dispatcher object.
*/
EventDispatcher dispatcher = null;
/**
* Gets a reference to the dispatcher object responsible for dispatching events.
*
* @param D Reference to the dispatcher object.
*/
public void acceptEventDispatcher(EventDispatcher D) {
dispatcher = D;
}
/**
* Sends the event <code>ae</code> to the dispatcher.
*
* @param ae The event object to be dispatched.
*/
public void dispatchEvent(Event ae) {
if (dispatcher != null && ae != null)
dispatcher.dispatchEvent(ae);
}
protected EventDispatcher getDispatcher() {
return dispatcher;
}
/**
* defines a step on algorithm, for example visiting a vertex, or every thing which then user can
* pause on it.
* @param msg The message
*/
protected void step(String msg, String id){
EventUtils.algorithmStep(this, msg,id);
}
protected void step(String msg){
EventUtils.algorithmStep(this, msg);
}
}