mirror of
https://github.com/JetBrains/intellij-sdk-code-samples.git
synced 2025-07-27 16:57:49 +08:00
34 lines
1.5 KiB
Java
34 lines
1.5 KiB
Java
package com.simpleplugin;
|
|
|
|
import com.intellij.codeInsight.daemon.*;
|
|
import com.intellij.codeInsight.navigation.NavigationGutterIconBuilder;
|
|
import com.intellij.openapi.project.Project;
|
|
import com.intellij.psi.*;
|
|
import com.intellij.psi.impl.source.tree.java.PsiJavaTokenImpl;
|
|
import com.simpleplugin.psi.SimpleProperty;
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
import java.util.*;
|
|
|
|
public class SimpleLineMarkerProvider extends RelatedItemLineMarkerProvider {
|
|
@Override
|
|
protected void collectNavigationMarkers(@NotNull PsiElement element,
|
|
@NotNull Collection<? super RelatedItemLineMarkerInfo> result) {
|
|
if (element instanceof PsiJavaTokenImpl && element.getParent() instanceof PsiLiteralExpression) {
|
|
PsiLiteralExpression literalExpression = (PsiLiteralExpression) element.getParent();
|
|
String value = literalExpression.getValue() instanceof String ? (String) literalExpression.getValue() : null;
|
|
if (value != null && value.startsWith("simple" + ":")) {
|
|
Project project = element.getProject();
|
|
final List<SimpleProperty> properties = SimpleUtil.findProperties(project, value.substring(7));
|
|
if (properties.size() > 0) {
|
|
NavigationGutterIconBuilder<PsiElement> builder =
|
|
NavigationGutterIconBuilder.create(SimpleIcons.FILE).
|
|
setTargets(properties).
|
|
setTooltipText("Navigate to a simple property");
|
|
result.add(builder.createLineMarkerInfo(element));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|