package org.bundlemaker.core.project.internal;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtension;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.Platform;
/**
* <p>
* </p>
*
* @author Gerd Wütherich (gerd@gerd-wuetherich.de)
*/
public class ProjectContentProviderExtension {
/** - */
private IExtension _extension;
/** - */
private IConfigurationElement _projectContentProviderElement;
/**
* <p>
* </p>
*
* @return
*/
public IExtension getExtension() {
return _extension;
}
public Object createProjectContentProvider() throws CoreException {
return _projectContentProviderElement.createExecutableExtension("class");
}
public String getClassName() {
return _projectContentProviderElement.getAttribute("class");
}
public String getId() {
return _projectContentProviderElement.getAttribute("id");
}
/**
* <p>
* </p>
*
* @return
* @throws CoreException
*/
public static Map<String, ProjectContentProviderExtension> getAllProjectContentProviderExtension()
throws CoreException {
//
Map<String, ProjectContentProviderExtension> result = new HashMap<String, ProjectContentProviderExtension>();
//
IExtensionRegistry reg = Platform.getExtensionRegistry();
IExtension[] extensions = reg.getExtensionPoint("org.bundlemaker.core.projectcontentprovider").getExtensions();
//
for (IExtension extension : extensions) {
//
ProjectContentProviderExtension providerExtension = new ProjectContentProviderExtension();
//
providerExtension._extension = extension;
for (IConfigurationElement configurationElement : extension.getConfigurationElements()) {
if (configurationElement.getName().equals("projectContentProvider")) {
providerExtension._projectContentProviderElement = configurationElement;
}
}
//
if (result.put(providerExtension.getId(), providerExtension) != null) {
// TODO!!
throw new RuntimeException("");
}
}
//
return result;
}
}