package org.bundlemaker.core.jdt.internal;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import org.bundlemaker.core.common.collections.GenericCache;
import org.bundlemaker.core.jdt.content.JdtProjectContentProvider;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResourceChangeListener;
import org.eclipse.core.resources.ResourcesPlugin;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
/**
* <p>
* </p>
*
* @author Gerd Wütherich (gerd@gerd-wuetherich.de)
*/
public class Activator implements BundleActivator {
/** - */
private static Activator _instance;
/** - */
private IResourceChangeListener _listener;
/** - */
GenericCache<IProject, List<JdtProjectContentProvider>> _project2provider;
/**
* <p>
* </p>
*
* @return the _instance
*/
public static Activator getInstance() {
return _instance;
}
/**
* <p>
* </p>
*
* @return the provider
*/
public GenericCache<IProject, List<JdtProjectContentProvider>> getProject2ProviderMap() {
return _project2provider;
}
/**
* {@inheritDoc}
*/
@SuppressWarnings("serial")
@Override
public void start(BundleContext context) throws Exception {
//
_project2provider = new GenericCache<IProject, List<JdtProjectContentProvider>>() {
@Override
protected List<JdtProjectContentProvider> create(IProject key) {
return new CopyOnWriteArrayList<JdtProjectContentProvider>();
}
};
//
_instance = this;
//
_listener = new InternalResourceChangedListener(_project2provider);
ResourcesPlugin.getWorkspace().addResourceChangeListener(_listener);
}
/**
* {@inheritDoc}
*/
@Override
public void stop(BundleContext context) throws Exception {
ResourcesPlugin.getWorkspace().removeResourceChangeListener(_listener);
}
}