package ee.edio.garmin; import com.intellij.lang.HelpID; import com.intellij.lang.cacheBuilder.WordsScanner; import com.intellij.lang.findUsages.FindUsagesProvider; import com.intellij.psi.ElementDescriptionUtil; import com.intellij.psi.PsiElement; import com.intellij.usageView.UsageViewLongNameLocation; import com.intellij.usageView.UsageViewShortNameLocation; import ee.edio.garmin.findUsages.MonkeyWordsScanner; import ee.edio.garmin.psi.MonkeyUsingDeclaration; import ee.edio.garmin.psi.MonkeyFunctionDeclaration; import ee.edio.garmin.psi.MonkeyNamedElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class MonkeyFindUsagesProvider implements FindUsagesProvider { @Nullable @Override public WordsScanner getWordsScanner() { return new MonkeyWordsScanner(); } @Override public boolean canFindUsagesFor(@NotNull PsiElement psiElement) { return psiElement instanceof MonkeyNamedElement; } @Nullable @Override public String getHelpId(@NotNull PsiElement psiElement) { return HelpID.FIND_OTHER_USAGES; } @NotNull @Override public String getType(@NotNull PsiElement element) { if (element instanceof MonkeyFunctionDeclaration) { return "function"; } if (element instanceof MonkeyUsingDeclaration) { return "using"; } return ""; } @NotNull @Override public String getDescriptiveName(@NotNull PsiElement element) { return ElementDescriptionUtil.getElementDescription(element, UsageViewLongNameLocation.INSTANCE); } @NotNull @Override public String getNodeText(@NotNull PsiElement element, boolean useFullName) { return ElementDescriptionUtil.getElementDescription(element, UsageViewShortNameLocation.INSTANCE); } }