aboutsummaryrefslogtreecommitdiffstats
path: root/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesProvider.java
diff options
context:
space:
mode:
Diffstat (limited to 'sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesProvider.java')
-rw-r--r--sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesProvider.java68
1 files changed, 68 insertions, 0 deletions
diff --git a/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesProvider.java b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesProvider.java
new file mode 100644
index 00000000000..eaa5b43641d
--- /dev/null
+++ b/sd-plugin/src/main/java/org/intellij/sdk/language/findUsages/SdFindUsagesProvider.java
@@ -0,0 +1,68 @@
+package org.intellij.sdk.language.findUsages;
+
+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 org.intellij.sdk.language.SdLexerAdapter;
+import org.intellij.sdk.language.psi.SdDeclaration;
+import org.intellij.sdk.language.psi.SdIdentifier;
+import org.intellij.sdk.language.psi.SdIdentifierVal;
+import org.intellij.sdk.language.psi.SdIdentifierWithDashVal;
+import org.intellij.sdk.language.psi.SdTypes;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+public class SdFindUsagesProvider implements FindUsagesProvider {
+ @Nullable
+ @Override
+ public WordsScanner getWordsScanner() {
+ return new DefaultWordsScanner(new SdLexerAdapter(),
+ TokenSet.create(SdTypes.ID_REG, SdTypes.ID_WITH_DASH_REG, SdTypes.IDENTIFIER_VAL,
+ SdTypes.IDENTIFIER_WITH_DASH_VAL),
+ TokenSet.create(SdTypes.COMMENT),
+ TokenSet.create(SdTypes.STRING, SdTypes.INTEGER_REG, SdTypes.FLOAT_REG));
+ }
+
+ @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) {
+ if (element instanceof SdDeclaration) {
+ return ((SdDeclaration) element).getTypeName();
+ } else {
+ return "";
+ }
+ }
+
+ @NotNull
+ @Override
+ public String getDescriptiveName(@NotNull PsiElement element) {
+ return "";
+ }
+
+ @NotNull
+ @Override
+ public String getNodeText(@NotNull PsiElement element, boolean useFullName) {
+ if (element instanceof SdIdentifierVal || element instanceof SdIdentifierWithDashVal) {
+ return ((SdIdentifier) element).getName();
+ } else if (element instanceof SdDeclaration) {
+ String fullText = element.getNode().getText();
+ return fullText.substring(0, fullText.indexOf('{'));
+ } else {
+ return "";
+ }
+ }
+}