package org.jetbrains.android; import com.intellij.codeInsight.completion.CompletionContributor; import com.intellij.codeInsight.completion.CompletionParameters; import com.intellij.codeInsight.completion.CompletionResult; import com.intellij.codeInsight.completion.CompletionResultSet; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; import com.intellij.util.Consumer; import org.jetbrains.android.facet.AndroidFacet; import org.jetbrains.android.maven.AndroidMavenUtil; import org.jetbrains.annotations.NotNull; /** * @author Eugene.Kudelevsky */ public class AndroidJavaCompletionContributor extends CompletionContributor { private static final String[] EXCLUDED_PACKAGES = new String[]{"javax.swing", "javafx"}; @Override public void fillCompletionVariants(@NotNull CompletionParameters parameters, @NotNull final CompletionResultSet resultSet) { super.fillCompletionVariants(parameters, resultSet); final PsiElement position = parameters.getPosition(); final AndroidFacet facet = AndroidFacet.getInstance(position); if (facet == null || !AndroidMavenUtil.isMavenizedModule(facet.getModule())) { return; } resultSet.runRemainingContributors(parameters, new Consumer<CompletionResult>() { @Override public void consume(CompletionResult result) { final Object obj = result.getLookupElement().getObject(); if (obj instanceof PsiClass) { final String qName = ((PsiClass)obj).getQualifiedName(); if (qName != null && !isAllowedInAndroid(qName)) { return; } } resultSet.passResult(result); } }); } private static boolean isAllowedInAndroid(@NotNull String qName) { for (String aPackage : EXCLUDED_PACKAGES) { if (qName.startsWith(aPackage + ".")) { return false; } } return true; } }