package fr.adrienbrault.idea.symfony2plugin.config.component; import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiPolyVariantReferenceBase; import com.intellij.psi.ResolveResult; import com.jetbrains.php.lang.psi.elements.StringLiteralExpression; import fr.adrienbrault.idea.symfony2plugin.dic.ContainerParameter; import fr.adrienbrault.idea.symfony2plugin.stubs.ContainerCollectionResolver; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * @author Daniel Espendiller <daniel@espendiller.net> */ public class ParameterReference extends PsiPolyVariantReferenceBase<PsiElement> { private String parameterName; public ParameterReference(@NotNull StringLiteralExpression element) { super(element); parameterName = element.getContents(); } @NotNull @Override public ResolveResult[] multiResolve(boolean incompleteCode) { return new ResolveResult[0]; } @NotNull @Override public Object[] getVariants() { List<LookupElement> results = new ArrayList<>(); for(Map.Entry<String, ContainerParameter> entry: ContainerCollectionResolver.getParameters(getElement().getProject()).entrySet()) { results.add(new ParameterLookupElement(entry.getValue())); } return results.toArray(); } }