/*******************************************************************************
 * Copyright (c) 2000, 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.ui;

/**
 * Interface for listening to part lifecycle events.
 * <p>
 * This interface may be implemented by clients.
 * </p>
 *
 * @see IPartService#addPartListener(IPartListener)
 * @since 1.0
 */
public interface IPartListener {

    /**
     * Notifies this listener that the given part has been activated.
     *
     * @param part the part that was activated
     * @see IWorkbenchPage#activate
     */
    public void partActivated(IWorkbenchPart part);

    /**
     * Notifies this listener that the given part has been brought to the top.
     * <p>
     * These events occur when an editor is brought to the top in the editor area,
     * or when a view is brought to the top in a page book with multiple views.
     * They are normally only sent when a part is brought to the top 
     * programmatically (via <code>IPerspective.bringToTop</code>). When a part is
     * activated by the user clicking on it, only <code>partActivated</code> is sent.
     * </p>
     *
     * @param part the part that was surfaced
     * @see IWorkbenchPage#bringToTop
     */
    public void partBroughtToTop(IWorkbenchPart part);

    /**
     * Notifies this listener that the given part has been closed.
     *
     * @param part the part that was closed
     * @see IWorkbenchPage#hideView(IViewPart)
     */
    public void partClosed(IWorkbenchPart part);

    /**
     * Notifies this listener that the given part has been deactivated.
     *
     * @param part the part that was deactivated
     * @see IWorkbenchPage#activate(IWorkbenchPart)
     */
    public void partDeactivated(IWorkbenchPart part);

    /**
     * Notifies this listener that the given part has been opened.
     *
     * @param part the part that was opened
     * @see IWorkbenchPage#showView(String)
     */
    public void partOpened(IWorkbenchPart part);
}
