use of com.intellij.codeInsight.daemon.RelatedItemLineMarkerProvider in project intellij-community by JetBrains.
the class RelatedItemLineMarkerGotoAdapter method getItems.
@NotNull
@Override
public List<? extends GotoRelatedItem> getItems(@NotNull PsiElement context) {
List<PsiElement> parents = new ArrayList<>();
PsiElement current = context;
Set<Language> languages = new HashSet<>();
while (current != null) {
parents.add(current);
languages.add(current.getLanguage());
if (current instanceof PsiFile)
break;
current = current.getParent();
}
List<LineMarkerProvider> providers = new ArrayList<>();
for (Language language : languages) {
providers.addAll(LineMarkersPass.getMarkerProviders(language, context.getProject()));
}
List<GotoRelatedItem> items = new ArrayList<>();
for (LineMarkerProvider provider : providers) {
if (provider instanceof RelatedItemLineMarkerProvider) {
List<RelatedItemLineMarkerInfo> markers = new ArrayList<>();
RelatedItemLineMarkerProvider relatedItemLineMarkerProvider = (RelatedItemLineMarkerProvider) provider;
for (PsiElement parent : parents) {
ContainerUtil.addIfNotNull(markers, relatedItemLineMarkerProvider.getLineMarkerInfo(parent));
}
relatedItemLineMarkerProvider.collectNavigationMarkers(parents, markers, true);
addItemsForMarkers(markers, items);
}
}
return items;
}
Aggregations