package fr.adrienbrault.idea.symfony2plugin.form; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiReference; import com.intellij.psi.PsiReferenceBase; import com.jetbrains.php.lang.psi.elements.StringLiteralExpression; import fr.adrienbrault.idea.symfony2plugin.form.util.FormOptionsUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collection; /** * @author Daniel Espendiller <daniel@espendiller.net> */ public class FormExtensionKeyReference extends PsiReferenceBase<PsiElement> implements PsiReference { private StringLiteralExpression element; private String[] formTypes = new String[] { "form", "Symfony\\Component\\Form\\Extension\\Core\\Type\\FormType", }; public FormExtensionKeyReference(@NotNull StringLiteralExpression element) { super(element); this.element = element; } @Nullable @Override public PsiElement resolve() { Collection<PsiElement> targets = FormOptionsUtil.getFormExtensionsKeysTargets(element, formTypes); if(targets.size() > 0) { return targets.iterator().next(); } return null; } @NotNull @Override public Object[] getVariants() { return FormOptionsUtil.getFormExtensionKeysLookupElements(getElement().getProject(), formTypes).toArray(); } }