/*******************************************************************************
 * Copyright (c) 2005 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
 *******************************************************************************/
package org.eclipse.core.commands.operations;

/**
 * <p>
 * An undo context is used to "tag" operations as being applicable to a certain
 * context. The undo context is used to filter the history of operations
 * available for undo or redo so that only operations appropriate for a given
 * undo context are shown when the application is presenting that context.
 * </p>
 * <p>
 * The scope of an undo context is defined by the application that is making
 * undo and redo of operations available. Undo contexts may be related to
 * application models, or may be associated with UI objects that are providing
 * undo and redo support.
 * </p>
 * <p>
 * An undo context may be defined as "matching" another context. This allows
 * applications to provide specialized implementations of an undo context that
 * will appear in the operation history for their matching context.
 * 
 * @since 3.1
 */

public interface IUndoContext {

	/**
	 * Get the label that describes the undo context.
	 * 
	 * @return the label for the context.
	 */
	public String getLabel();

	/**
	 * Return whether the specified context is considered a match for the
	 * receiving context. When a context matches another context, operations
	 * that have the context are considered to also have the matching context.
	 * 
	 * @param context 
	 *            the context to be checked against the receiving context.
	 * 
	 * @return <code>true</code> if the receiving context can be considered a
	 *         match for the specified context, and <code>false</code> if it
	 *         cannot.
	 */
	public boolean matches(IUndoContext context);

}
