/*******************************************************************************
* Copyright (c) 2011, 2013 Andrew Gvozdev 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:
* Andrew Gvozdev - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.language.settings.providers;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
/**
* Helper class to allow listeners of arbitrary events self-register/dispose.
*
* Called by CDT core when {@linkplain ICListenerAgent} added/removed to
* the list of {@link ILanguageSettingsProvider}s managed by the model.
* {@linkplain ICListenerAgent} would commonly be implemented by a language
* settings provider.
* <br><br>
* Implementers are to create a specific listener and register it to
* appropriate event manager in {@link #registerListener(ICConfigurationDescription)}
* then unregister and dispose in {@link #unregisterListener()}.
*
* @since 5.4
*/
public interface ICListenerAgent {
/**
* Provides an opportunity for the provider to register specific listeners.
* Called by CDT core when {@linkplain ICListenerAgent} added
* to the list of {@link ILanguageSettingsProvider}s managed by the model.
*
* @param cfgDescription - configuration description for the listener.
*/
public void registerListener(ICConfigurationDescription cfgDescription);
/**
* Unregister listeners and dispose all resources.
* Called by CDT core when {@linkplain ICListenerAgent} removed
* from the list of {@link ILanguageSettingsProvider}s managed by the model.
*/
public void unregisterListener();
}