package glslplugin.extensions; import com.intellij.lang.cacheBuilder.DefaultWordsScanner; import com.intellij.lang.cacheBuilder.WordsScanner; import com.intellij.lang.findUsages.FindUsagesProvider; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiNamedElement; import com.intellij.psi.tree.TokenSet; import glslplugin.lang.elements.GLSLTokenTypes; import glslplugin.lang.scanner.GLSLFlexAdapter; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** * * Created by abigail on 26/06/15. */ public class GLSLFindUsagesProvider implements FindUsagesProvider { private static final DefaultWordsScanner WORDS_SCANNER = new DefaultWordsScanner(new GLSLFlexAdapter(), TokenSet.create(GLSLTokenTypes.IDENTIFIER), TokenSet.create(GLSLTokenTypes.COMMENT_LINE, GLSLTokenTypes.COMMENT_BLOCK), TokenSet.create(GLSLTokenTypes.PREPROCESSOR_STRING)); @Nullable @Override public WordsScanner getWordsScanner() { return WORDS_SCANNER; } @Override public boolean canFindUsagesFor(@NotNull PsiElement psiElement) { return psiElement instanceof PsiNamedElement; } @Nullable @Override public String getHelpId(@NotNull PsiElement psiElement) { return null; } @NotNull @Override public String getType(@NotNull PsiElement element) { return "GLSL Usage"; } @NotNull @Override public String getDescriptiveName(@NotNull PsiElement element) { return element.toString(); } @NotNull @Override public String getNodeText(@NotNull PsiElement element, boolean useFullName) { return element.toString(); } }