// ISimulationManagerListener.java
package org.eclipse.stem.jobs.simulation;

/*******************************************************************************
 * Copyright (c) 2006, 2008 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/

import org.eclipse.stem.jobs.execution.IExecutableManagerListener;

/**
 * This interface is implemented by classes that want to be informed of events
 * generated by a {@link SimulationManager}.
 * 
 * @see SimulationManager
 * @see Simulation
 */
public interface ISimulationManagerListener extends IExecutableManagerListener {
	/**
	 * @param event
	 *            the event that records what happened to the manager.
	 */
	void simulationsChanged(SimulationManagerEvent event);

} // ISimulationManagerListener
