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

import org.eclipse.debug.core.IExpressionsListener;
import org.eclipse.debug.core.model.IExpression;

/**
 * Provides call-back methods for expressions that have been moved or inserted
 * @since 3.4
 */
public interface IExpressionsListener2 extends IExpressionsListener {

	/**
	 * Fires the model delta necessary to update the viewer after one or more
	 * expressions have been moved to a different index in the tree.  The
	 * expression array must be in the same order as they were added.  The given index
	 * <strong>must</strong> take into account the removal of the expressions to be removed.
	 * Therefore, for each of the expressions being moved with indices lower than the expect
	 * insertion index, the passed insertion index must be reduced by one.
	 * 
	 * @param expressions array of expressions to be moved
	 * @param index the index the expressions will be added to, adjusted for moved expressions
	 */
	public void expressionsMoved(IExpression[] expressions, int index);
	
	/**
	 * Fires the model delta necessary to update the viewer after one or more
	 * expressions have been inserted into a specific index in the tree.  The 
	 * expression array must be in the same order as they were added.
	 * 
	 * @param expressions array of expressions to be moved
	 * @param index the index the expressions will be added to
	 */
	public void expressionsInserted(IExpression[] expressions, int index);
	
}
