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.psi.PsiElement; import com.intellij.psi.xml.XmlToken; import org.angularjs.codeInsight.refs.AngularJSReferencesContributor; import org.angularjs.index.AngularIndexUtil; import org.angularjs.index.AngularModuleIndex; import org.angularjs.index.AngularUiRouterStatesIndex; import org.jetbrains.annotations.NotNull; import java.util.Collection; import static org.angularjs.codeInsight.AngularJavaScriptCompletionContributor.addCompletionVariants; /** * @author Irina.Chernushina on 3/30/2016. */ public class AngularJSXmlCompletionContributor extends CompletionContributor { @Override public void fillCompletionVariants(@NotNull CompletionParameters parameters, @NotNull CompletionResultSet result) { final PsiElement originalPosition = parameters.getOriginalPosition(); if (originalPosition != null && AngularIndexUtil.hasAngularJS(originalPosition.getProject())) { final PsiElement position = originalPosition instanceof XmlToken ? originalPosition.getParent() : originalPosition; if (AngularJSReferencesContributor.NG_APP_REF.accepts(position)) { final Collection<String> keys = AngularIndexUtil.getAllKeys(AngularModuleIndex.KEY, originalPosition.getProject()); addCompletionVariants(result, keys, " (AngularJS module)"); result.stopHere(); } else if (AngularJSReferencesContributor.UI_VIEW_REF.accepts(position)) { final Collection<String> keys = AngularIndexUtil.getAllKeys(AngularUiRouterStatesIndex.KEY, originalPosition.getProject()); addCompletionVariants(result, keys, " (angular-ui-router state)"); result.stopHere(); } } } }