mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-169924 add utility methods to BreadcrumbsInfoProvider
This commit is contained in:
@@ -100,8 +100,7 @@ public class YAMLBreadcrumbsTest extends LightPlatformCodeInsightFixtureTestCase
|
||||
}
|
||||
final Language language = element.getContainingFile().getLanguage();
|
||||
|
||||
final BreadcrumbsInfoProvider provider = ContainerUtil.find(Extensions.getExtensions(BreadcrumbsInfoProvider.EP_NAME),
|
||||
(p) -> Arrays.asList(p.getLanguages()).contains(language));
|
||||
final BreadcrumbsInfoProvider provider = BreadcrumbsInfoProvider.find(language::equals);
|
||||
if (provider == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@@ -449,15 +449,7 @@ public class BreadcrumbsXmlWrapper extends JComponent implements Disposable {
|
||||
|
||||
@Nullable
|
||||
private static BreadcrumbsInfoProvider getInfoProvider(@NotNull final Language language) {
|
||||
for (final BreadcrumbsInfoProvider provider : Extensions.getExtensions(BreadcrumbsInfoProvider.EP_NAME)) {
|
||||
for (final Language language1 : provider.getLanguages()) {
|
||||
if (language.isKindOf(language1)) {
|
||||
return provider;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
return BreadcrumbsInfoProvider.find(supported -> supported.isKindOf(language));
|
||||
}
|
||||
|
||||
private static class MyUpdate extends Update {
|
||||
|
||||
@@ -28,8 +28,12 @@ import com.intellij.openapi.extensions.ExtensionPointName;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
public abstract class BreadcrumbsInfoProvider {
|
||||
public static final ExtensionPointName<BreadcrumbsInfoProvider> EP_NAME = ExtensionPointName.create("com.intellij.breadcrumbsInfoProvider");
|
||||
public static final ExtensionPointName<BreadcrumbsInfoProvider> EP_NAME
|
||||
= ExtensionPointName.create("com.intellij.breadcrumbsInfoProvider");
|
||||
|
||||
public abstract Language[] getLanguages();
|
||||
|
||||
@@ -45,4 +49,24 @@ public abstract class BreadcrumbsInfoProvider {
|
||||
|
||||
@Nullable
|
||||
public abstract String getElementTooltip(@NotNull final PsiElement e);
|
||||
|
||||
@NotNull
|
||||
public static Iterable<Language> getSupportedLanguages() {
|
||||
LinkedHashMap<String, Language> map = new LinkedHashMap<>();
|
||||
for (BreadcrumbsInfoProvider provider : EP_NAME.getExtensions()) {
|
||||
for (Language language : provider.getLanguages()) {
|
||||
map.put(language.getID(), language);
|
||||
}
|
||||
}
|
||||
return map.values();
|
||||
}
|
||||
|
||||
public static BreadcrumbsInfoProvider find(Predicate<Language> predicate) {
|
||||
for (BreadcrumbsInfoProvider provider : EP_NAME.getExtensions()) {
|
||||
for (Language language : provider.getLanguages()) {
|
||||
if (predicate.test(language)) return provider;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user