Skip to content
Snippets Groups Projects
Commit a9b111df authored by Johannes Mey's avatar Johannes Mey
Browse files

add symbol contributor (icon not working)

parent 2357108c
No related branches found
No related tags found
No related merge requests found
package org.jastadd.tooling;
import com.intellij.navigation.ChooseByNameContributor;
import com.intellij.navigation.NavigationItem;
import com.intellij.openapi.project.Project;
import org.jastadd.tooling.psi.RelAstGrammarTypeDecl;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
public class RelAstGrammarChooseByNameContributor implements ChooseByNameContributor {
@NotNull
@Override
public String @NotNull [] getNames(Project project, boolean includeNonProjectItems) {
List<RelAstGrammarTypeDecl> typeDecls = RelAstGrammarUtil.findTypeDecl(project);
List<String> names = new ArrayList<>(typeDecls.size());
for (RelAstGrammarTypeDecl typeDecl : typeDecls) {
if (typeDecl.getName() != null && typeDecl.getName().length() > 0) {
names.add(typeDecl.getName());
}
}
return names.toArray(new String[0]);
}
@NotNull
@Override
public NavigationItem @NotNull [] getItemsByName(String name, String pattern, Project project, boolean includeNonProjectItems) {
// TODO: include non project items
List<RelAstGrammarTypeDecl> typeDecls = RelAstGrammarUtil.findTypeDecl(project, name);
return typeDecls.toArray(new NavigationItem[0]);
}
}
...@@ -2,12 +2,16 @@ package org.jastadd.tooling.psi.impl; ...@@ -2,12 +2,16 @@ package org.jastadd.tooling.psi.impl;
import com.intellij.extapi.psi.ASTWrapperPsiElement; import com.intellij.extapi.psi.ASTWrapperPsiElement;
import com.intellij.lang.ASTNode; import com.intellij.lang.ASTNode;
import com.intellij.navigation.ItemPresentation;
import com.intellij.psi.PsiReference; import com.intellij.psi.PsiReference;
import com.intellij.psi.impl.source.resolve.reference.ReferenceProvidersRegistry; import com.intellij.psi.impl.source.resolve.reference.ReferenceProvidersRegistry;
import org.jastadd.tooling.JastAddIcons;
import org.jastadd.tooling.psi.RelAstGrammarNamedElement; import org.jastadd.tooling.psi.RelAstGrammarNamedElement;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import javax.swing.*;
public abstract class RelAstGrammarNamedElementImpl extends ASTWrapperPsiElement implements RelAstGrammarNamedElement { public abstract class RelAstGrammarNamedElementImpl extends ASTWrapperPsiElement implements RelAstGrammarNamedElement {
protected RelAstGrammarNamedElementImpl(@NotNull ASTNode node) { protected RelAstGrammarNamedElementImpl(@NotNull ASTNode node) {
...@@ -25,4 +29,25 @@ public abstract class RelAstGrammarNamedElementImpl extends ASTWrapperPsiElement ...@@ -25,4 +29,25 @@ public abstract class RelAstGrammarNamedElementImpl extends ASTWrapperPsiElement
return ReferenceProvidersRegistry.getReferencesFromProviders(this); return ReferenceProvidersRegistry.getReferencesFromProviders(this);
} }
@Override
public ItemPresentation getPresentation() {
return new ItemPresentation() {
@Nullable
@Override
public String getPresentableText() {
return getName();
}
@Override
public String getLocationString() {
return getContainingFile().getName();
}
@Override
public Icon getIcon(boolean unused) {
return JastAddIcons.FILE;
}
};
}
} }
...@@ -40,6 +40,9 @@ ...@@ -40,6 +40,9 @@
<lang.findUsagesProvider language="JastAddGrammar" <lang.findUsagesProvider language="JastAddGrammar"
implementationClass="org.jastadd.tooling.RelAstGrammarFindUsageProvider"/> implementationClass="org.jastadd.tooling.RelAstGrammarFindUsageProvider"/>
<gotoSymbolContributor
implementation="org.jastadd.tooling.RelAstGrammarChooseByNameContributor"/>
</extensions> </extensions>
<actions> <actions>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment