package fr.adrienbrault.idea.symfony2plugin.util.psi; import com.intellij.patterns.PatternCondition; import com.intellij.psi.PsiElement; import com.intellij.util.ProcessingContext; import org.jetbrains.annotations.NotNull; /** * @author Daniel Espendiller <daniel@espendiller.net> */ public class ParentPathPatternCondition extends PatternCondition<PsiElement> { @NotNull private final Class<? extends PsiElement>[] classes; public ParentPathPatternCondition(@NotNull Class<? extends PsiElement>... parentClasses) { super("Parent path pattern"); this.classes = parentClasses; } @Override public boolean accepts(@NotNull PsiElement psiElement, ProcessingContext processingContext) { for (Class<? extends PsiElement> aClass : classes) { psiElement = psiElement.getParent(); if(psiElement == null || !aClass.isInstance(psiElement)) { return false; } } return true; } }