package de.ovgu.cide.languages;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.eclipse.core.runtime.IConfigurationElement;
import de.ovgu.cide.CIDECorePlugin;
import de.ovgu.cide.ExtensionPointManager;
public class LanguageExtensionManager extends ExtensionPointManager<LanguageExtensionProxy>{
private static LanguageExtensionManager instance;
private LanguageExtensionManager() {
super(CIDECorePlugin.ID, "language");
}
public static LanguageExtensionManager getInstance() {
if (instance == null)
instance = new LanguageExtensionManager();
return instance;
}
protected LanguageExtensionProxy parseExtension(
IConfigurationElement configurationElement) {
if (!configurationElement.getName().equals("language"))
return null;
return new LanguageExtensionProxy(configurationElement);
}
public List<LanguageExtensionProxy> getAllLanguageExtensions() {
return getProviders();
}
/**
* returns only those language extensions which are enabled in the user
* preferences.
*
* @return
*/
public List<LanguageExtensionProxy> getEnabledLanguageExtensions() {
List<LanguageExtensionProxy> result = new ArrayList<LanguageExtensionProxy>();
for (LanguageExtensionProxy lang : getProviders())
if (lang.isEnabled())
result.add(lang);
return Collections.unmodifiableList(result);
}
/**
* get a language extension by an id, independent of whether it is enabled
*
* @param languageExtensionId
* @return
*/
public LanguageExtensionProxy getLanguageExtensionById(
String languageExtensionId) {
for (LanguageExtensionProxy lang : getAllLanguageExtensions()) {
if (lang.getId().equals(languageExtensionId))
return lang;
}
return null;
}
}