package org.angularjs.codeInsight; import com.intellij.codeInsight.completion.CompletionContributor; import com.intellij.codeInsight.completion.CompletionParameters; import com.intellij.codeInsight.completion.CompletionResultSet; import com.intellij.lang.javascript.JavascriptLanguage; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiReference; import org.angularjs.codeInsight.refs.AngularJSDIReferencesProvider; import org.angularjs.index.AngularIndexUtil; import org.angularjs.index.AngularSymbolIndex; import org.jetbrains.annotations.NotNull; public class AngularJSDICompletionContributor extends CompletionContributor { @Override public void fillCompletionVariants(@NotNull final CompletionParameters parameters, @NotNull final CompletionResultSet result) { if (AngularJSCompletionContributor.getElementLanguage(parameters).isKindOf(JavascriptLanguage.INSTANCE)) { final PsiReference ref = parameters.getPosition().getContainingFile().findReferenceAt(parameters.getOffset()); addDependencyInjectionVariants(result, parameters, ref, parameters.getPosition()); } } private static void addDependencyInjectionVariants(CompletionResultSet result, CompletionParameters parameters, PsiReference ref, PsiElement parent) { if (ref instanceof AngularJSDIReferencesProvider.AngularJSDIReference) { AngularJSCompletionContributor.addResults(result, parameters, AngularIndexUtil.getAllKeys(AngularSymbolIndex.KEY, parent.getProject())); } } }