mirror of
https://github.com/JetBrains/intellij-sdk-code-samples.git
synced 2025-07-27 08:47:50 +08:00
Fix missing icon in "go to symbol contributor" + use newer ChooseByNameContributorEx API
This commit is contained in:
parent
f255166cc0
commit
2fbcf27a1b
@ -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<SimpleProperty> properties = SimpleUtil.findProperties(project);
|
||||
List<String> 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<? super String> processor,
|
||||
@NotNull GlobalSearchScope scope,
|
||||
@Nullable IdFilter filter) {
|
||||
Project project = Objects.requireNonNull(scope.getProject());
|
||||
List<String> 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<SimpleProperty> properties = SimpleUtil.findProperties(project, name);
|
||||
return properties.toArray(new NavigationItem[properties.size()]);
|
||||
public void processElementsWithName(@NotNull String name,
|
||||
@NotNull Processor<? super NavigationItem> processor,
|
||||
@NotNull FindSymbolParameters parameters) {
|
||||
List<NavigationItem> properties = ContainerUtil.map(
|
||||
SimpleUtil.findProperties(parameters.getProject(), name), property -> (NavigationItem) property);
|
||||
ContainerUtil.process(properties, processor);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -42,6 +42,7 @@
|
||||
<lang.parserDefinition language="Simple" implementationClass="org.intellij.sdk.language.SimpleParserDefinition"/>
|
||||
<lang.syntaxHighlighterFactory language="Simple"
|
||||
implementationClass="org.intellij.sdk.language.SimpleSyntaxHighlighterFactory"/>
|
||||
<iconProvider implementation="org.intellij.sdk.language.SimplePropertyIconProvider"/>
|
||||
<colorSettingsPage implementation="org.intellij.sdk.language.SimpleColorSettingsPage"/>
|
||||
<annotator language="JAVA" implementationClass="org.intellij.sdk.language.SimpleAnnotator"/>
|
||||
<codeInsight.lineMarkerProvider language="JAVA"
|
||||
|
Loading…
x
Reference in New Issue
Block a user