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
Branches
Tags
Loading
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