/******************************************************************************
 * Copyright (c) 2005-2007 BEA Systems, Inc.
 * 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:
 *    Konstantin Komissarchik
 ******************************************************************************/

package org.eclipse.wst.common.project.facet.core.events;

/**
 * This interface is implemented by those who wish to receive events when a faceted project is
 * changed. There are three ways to register a listener: (a) using methods on {@see 
 * IFacetedProject}, (b) using methods on {@see FacetedProjectFramework}, or (c) using the provided
 * extension point. Method (a) catches only events for a specific faceted project while methods
 * (b) and (c) catch events for all faceted projects in the workspace.
 * 
 * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
 */

public interface IFacetedProjectListener
{
    /**
     * This method is called by the framework to notify the listener that an event has occurred.
     * 
     * <p>All events except for <code>PROJECT_MODIFIED</code> of this type are triggered in the 
     * lock context of the operation that caused the original change. This guarantees that the 
     * project has not changed further from the state it was in after the change was complete, 
     * however the listener is unable to call any modifier methods on the {@see IFacetedProject} 
     * interface. To do so, the listener must spin off a thread.</p>
     * 
     * <p>It is highly advised that any listener that performs non-critical or long-running tasks 
     * that can be performed in the background (such as updating UI) do so asynchronously by
     * spinning off a thread, scheduling a job, etc. This allows the original modification to
     * complete faster resulting in better perceived responsiveness.</p>
     * 
     * @param event the object describing the event
     */
    
    void handleEvent( IFacetedProjectEvent event );
    
}
