// 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.IExecutableManagerListenerSync;

/**
 * This interface is implemented by classes that want to be informed of events
 * generated by a {@link SimulationManager}. The thread running the
 * {@link SimulationManager} will wait until the
 * {@link #simulationsChangedSync(SimulationManagerEvent)} method returns before
 * it continues execution.
 * 
 * @see SimulationManager
 * @see Simulation
 */
public interface ISimulationManagerListenerSync extends
		IExecutableManagerListenerSync {
	/**
	 * @param event
	 *            the event that records what happened to the manager.
	 */
	void simulationsChangedSync(SimulationManagerEvent event);
} // ISimulationManagerListenerSync
