/*******************************************************************************
 * Copyright (c) 2000, 2006 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.team.internal.core.subscribers;

import org.eclipse.core.runtime.IPath;


/**
 * Interface for registering change set change listeners with
 * the change set manager.
 */
public interface IChangeSetChangeListener {

    /**
     * The given set has been added to the set manager.
     * @param set the added set
     */
    void setAdded(ChangeSet set);

    /**
     * The default change set has change to be the given set.
     * All new modifications will be placed in the default
     * set.
     * @param previousDefault
     * @param set the default set
     */
    void defaultSetChanged(ChangeSet previousDefault, ChangeSet set);

    /**
     * The given set has been removed from the set manager.
     * @param set the removed set
     */
    void setRemoved(ChangeSet set);

    /**
     * The title of the given set has changed.
     * @param set the set whose title changed
     */
    void nameChanged(ChangeSet set);

    /**
     * The state of the given resources have change with respect to the
     * given set. This means that the resource have either been added
     * or removed from the set. Callers can use the resources contained
     * in the set to determine if each resource is an addition or removal.
     * @param set the set that has changed
     * @param paths the paths of the resources whose containment state has changed w.r.t the set
     */
    void resourcesChanged(ChangeSet set, IPath[] paths);

}
