package fr.adrienbrault.idea.symfony2plugin.dic; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElementResolveResult; import com.intellij.psi.PsiPolyVariantReferenceBase; import com.intellij.psi.ResolveResult; import com.jetbrains.php.lang.psi.elements.StringLiteralExpression; import fr.adrienbrault.idea.symfony2plugin.util.completion.TagNameCompletionProvider; import fr.adrienbrault.idea.symfony2plugin.util.dict.ServiceUtil; import org.jetbrains.annotations.NotNull; /** * @author Daniel Espendiller <daniel@espendiller.net> */ public class TagReference extends PsiPolyVariantReferenceBase<PsiElement> { private String tagName; public TagReference(PsiElement psiElement, String tagName) { super(psiElement); this.tagName = tagName; } public TagReference(@NotNull StringLiteralExpression element) { super(element); tagName = element.getContents(); } @NotNull @Override public ResolveResult[] multiResolve(boolean incompleteCode) { return PsiElementResolveResult.createResults(ServiceUtil.getTaggedClassesWithCompiled(getElement().getProject(), this.tagName)); } @NotNull @Override public Object[] getVariants() { return TagNameCompletionProvider.getTagLookupElements(getElement().getProject()).toArray(); } }