package org.intellij.sonar;
import com.intellij.ide.plugins.IdeaPluginDescriptor;
import com.intellij.ide.plugins.PluginManager;
import com.intellij.lang.Language;
import com.intellij.lang.LanguageExtensionPoint;
import com.intellij.openapi.extensions.Extensions;
import com.intellij.openapi.extensions.PluginId;
import org.intellij.sonar.analysis.SonarExternalAnnotator;
import org.jetbrains.annotations.NotNull;
public class ApplicationComponent implements com.intellij.openapi.components.ApplicationComponent {
private IdeaPluginDescriptor plugin;
@Override
public void initComponent() {
plugin = PluginManager.getPlugin(PluginId.getId("org.mayevskiy.intellij.sonar"));
if (plugin != null && plugin.isEnabled()) {
registerExternalAnnotatorForAllLanguages();
}
}
private void registerExternalAnnotatorForAllLanguages() {
for (Language language : Language.getRegisteredLanguages()) {
registerExternalAnnotatorFor(language);
}
}
private void registerExternalAnnotatorFor(Language language) {
LanguageExtensionPoint<SonarExternalAnnotator> ep = new LanguageExtensionPoint<SonarExternalAnnotator>();
ep.language = language.getID();
ep.implementationClass = SonarExternalAnnotator.class.getName();
ep.setPluginDescriptor(plugin);
Extensions.getRootArea().getExtensionPoint("com.intellij.externalAnnotator").registerExtension(ep);
}
@Override
public void disposeComponent() {
// nothing to free
}
@NotNull
@Override
public String getComponentName() {
return getClass().getSimpleName();
}
}