package fr.adrienbrault.idea.symfony2plugin.templating.annotation; import de.espend.idea.php.annotation.extension.PhpAnnotationDocTagGotoHandler; import de.espend.idea.php.annotation.extension.parameter.AnnotationDocTagGotoHandlerParameter; import fr.adrienbrault.idea.symfony2plugin.Symfony2ProjectComponent; import fr.adrienbrault.idea.symfony2plugin.TwigHelper; import fr.adrienbrault.idea.symfony2plugin.templating.util.TwigUtil; import fr.adrienbrault.idea.symfony2plugin.util.PhpElementsUtil; /** * @author Daniel Espendiller <daniel@espendiller.net> */ public class TemplateAnnotationGotoHandler implements PhpAnnotationDocTagGotoHandler { @Override public void getGotoDeclarationTargets(AnnotationDocTagGotoHandlerParameter parameter) { if(!Symfony2ProjectComponent.isEnabled(parameter.getProject())) { return; } if(!PhpElementsUtil.isEqualClassName(parameter.getPhpClass(), TwigHelper.TEMPLATE_ANNOTATION_CLASS)) { return; } try { AnnotationDocTagGotoHandlerParameter.class.getMethod("getPhpDocTag"); } catch (NoSuchMethodException e) { return; } parameter.addTargets(TwigUtil.getTemplateAnnotationFilesWithSiblingMethod(parameter.getPhpDocTag()).values()); } }