/*******************************************************************************
 * Copyright (c) 2011 Mia-Software.
 *
 * 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:
 *    Nicolas Guyomar (Mia-Software) - Bug 339554 - org.eclipse.modisco.facet.widgets.celleditors API cleaning
 *******************************************************************************/
package org.eclipse.modisco.facet.widgets.celleditors;

import java.util.List;

import org.eclipse.emf.common.command.Command;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.modisco.facet.widgets.celleditors.internal.CommandFactoriesRegistry;

/**
 * Registry for the "commandFactories" extension point. It is used to create EMF {@link Command}s
 * compatible with a given {@link EditingDomain}.
 * <p>
 * For example, a <code>TransactionalEditingDomain</code> doesn't work with the usual EMF commands,
 * and the model must be manipulated with {@link Command}s that use transactions.
 * @noimplement This interface is not intended to be implemented by clients.
 * @noextend This interface is not intended to be extended by clients.
 */
public interface ICommandFactoriesRegistry {

	/** the singleton {@link ICommandFactoriesRegistry} */
	static ICommandFactoriesRegistry INSTANCE = new CommandFactoriesRegistry();

	/** @return the list of registered command factories */
	List<ICommandFactory> getCommandFactories();

	/**
	 * @return a command factory compatible with the given {@link EditingDomain}, or
	 *         <code>null</code> if none is found
	 */
	ICommandFactory getCommandFactoryFor(final EditingDomain editingDomain);
}