package glslplugin.extensions; import com.intellij.psi.ElementDescriptionLocation; import com.intellij.psi.ElementDescriptionProvider; import com.intellij.psi.PsiElement; import com.intellij.usageView.UsageViewLongNameLocation; import com.intellij.usageView.UsageViewNodeTextLocation; import com.intellij.usageView.UsageViewTypeLocation; import glslplugin.lang.elements.declarations.GLSLDeclaration; import glslplugin.lang.elements.declarations.GLSLDeclarator; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** * * Created by abigail on 28/06/15. */ public class GLSLDescriptionProvider implements ElementDescriptionProvider { @Override @Nullable public String getElementDescription(@NotNull PsiElement element, @NotNull ElementDescriptionLocation location) { if (!(element instanceof GLSLDeclarator)) return null; GLSLDeclarator declarator = (GLSLDeclarator) element; GLSLDeclaration declaration = declarator.getParentDeclaration(); if (declaration == null) return null; if (location instanceof UsageViewTypeLocation) { return declaration.getDeclarationDescription(); } if (location instanceof UsageViewLongNameLocation) { return declaration.getDeclarationDescription() + " '" + declarator.getName() + "'"; } if (location instanceof UsageViewNodeTextLocation) { return declarator.getName(); } return null; // return location.toString(); } }