diff --git a/simple_language_plugin/src/main/java/org/intellij/sdk/language/SimpleChooseByNameContributor.java b/simple_language_plugin/src/main/java/org/intellij/sdk/language/SimpleChooseByNameContributor.java index 4dede3515..b2763e1cb 100644 --- a/simple_language_plugin/src/main/java/org/intellij/sdk/language/SimpleChooseByNameContributor.java +++ b/simple_language_plugin/src/main/java/org/intellij/sdk/language/SimpleChooseByNameContributor.java @@ -1,35 +1,40 @@ -// Copyright 2000-2022 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package org.intellij.sdk.language; -import com.intellij.navigation.ChooseByNameContributor; +import com.intellij.navigation.ChooseByNameContributorEx; import com.intellij.navigation.NavigationItem; import com.intellij.openapi.project.Project; +import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.util.Processor; +import com.intellij.util.containers.ContainerUtil; +import com.intellij.util.indexing.FindSymbolParameters; +import com.intellij.util.indexing.IdFilter; import org.intellij.sdk.language.psi.SimpleProperty; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; import java.util.List; +import java.util.Objects; -public class SimpleChooseByNameContributor implements ChooseByNameContributor { +public class SimpleChooseByNameContributor implements ChooseByNameContributorEx { @Override - public String @NotNull [] getNames(Project project, boolean includeNonProjectItems) { - List properties = SimpleUtil.findProperties(project); - List names = new ArrayList<>(properties.size()); - for (SimpleProperty property : properties) { - if (property.getKey() != null && property.getKey().length() > 0) { - names.add(property.getKey()); - } - } - return names.toArray(new String[names.size()]); + public void processNames(@NotNull Processor processor, + @NotNull GlobalSearchScope scope, + @Nullable IdFilter filter) { + Project project = Objects.requireNonNull(scope.getProject()); + List propertyKeys = ContainerUtil.map(SimpleUtil.findProperties(project), SimpleProperty::getKey); + ContainerUtil.process(propertyKeys, processor); } @Override - public NavigationItem @NotNull [] getItemsByName(String name, String pattern, Project project, boolean includeNonProjectItems) { - // TODO: include non project items - List properties = SimpleUtil.findProperties(project, name); - return properties.toArray(new NavigationItem[properties.size()]); + public void processElementsWithName(@NotNull String name, + @NotNull Processor processor, + @NotNull FindSymbolParameters parameters) { + List properties = ContainerUtil.map( + SimpleUtil.findProperties(parameters.getProject(), name), property -> (NavigationItem) property); + ContainerUtil.process(properties, processor); } } diff --git a/simple_language_plugin/src/main/java/org/intellij/sdk/language/SimplePropertyIconProvider.java b/simple_language_plugin/src/main/java/org/intellij/sdk/language/SimplePropertyIconProvider.java new file mode 100644 index 000000000..efb0d3f87 --- /dev/null +++ b/simple_language_plugin/src/main/java/org/intellij/sdk/language/SimplePropertyIconProvider.java @@ -0,0 +1,20 @@ +// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. + +package org.intellij.sdk.language; + +import com.intellij.ide.IconProvider; +import com.intellij.psi.PsiElement; +import org.intellij.sdk.language.psi.SimpleProperty; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import javax.swing.*; + +public class SimplePropertyIconProvider extends IconProvider { + + @Override + public @Nullable Icon getIcon(@NotNull PsiElement element, int flags) { + return element instanceof SimpleProperty ? SimpleIcons.FILE : null; + } + +} diff --git a/simple_language_plugin/src/main/java/org/intellij/sdk/language/psi/impl/SimplePsiImplUtil.java b/simple_language_plugin/src/main/java/org/intellij/sdk/language/psi/impl/SimplePsiImplUtil.java index 6593316cd..f6cc979cb 100644 --- a/simple_language_plugin/src/main/java/org/intellij/sdk/language/psi/impl/SimplePsiImplUtil.java +++ b/simple_language_plugin/src/main/java/org/intellij/sdk/language/psi/impl/SimplePsiImplUtil.java @@ -1,4 +1,4 @@ -// Copyright 2000-2022 JetBrains s.r.o. and other contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package org.intellij.sdk.language.psi.impl; @@ -6,7 +6,6 @@ import com.intellij.lang.ASTNode; import com.intellij.navigation.ItemPresentation; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; -import org.intellij.sdk.language.SimpleIcons; import org.intellij.sdk.language.psi.SimpleElementFactory; import org.intellij.sdk.language.psi.SimpleProperty; import org.intellij.sdk.language.psi.SimpleTypes; @@ -75,7 +74,7 @@ public class SimplePsiImplUtil { @Override public Icon getIcon(boolean unused) { - return SimpleIcons.FILE; + return element.getIcon(0); } }; } diff --git a/simple_language_plugin/src/main/resources/META-INF/plugin.xml b/simple_language_plugin/src/main/resources/META-INF/plugin.xml index dd2784b70..ab17560d9 100644 --- a/simple_language_plugin/src/main/resources/META-INF/plugin.xml +++ b/simple_language_plugin/src/main/resources/META-INF/plugin.xml @@ -42,6 +42,7 @@ +