package com.intellij.flex.uiDesigner; import com.intellij.codeHighlighting.Pass; import com.intellij.codeInsight.daemon.GutterIconNavigationHandler; import com.intellij.codeInsight.daemon.LineMarkerInfo; import com.intellij.codeInsight.daemon.LineMarkerProvider; import com.intellij.openapi.editor.markup.GutterIconRenderer; import com.intellij.psi.PsiElement; import com.intellij.psi.xml.XmlFile; import com.intellij.psi.xml.XmlTag; import com.intellij.util.PlatformIcons; import org.jetbrains.annotations.NotNull; import java.awt.event.MouseEvent; import java.util.Collection; import java.util.List; public class FlashUIDesignerLineMarkerProvider implements LineMarkerProvider { @Override public LineMarkerInfo getLineMarkerInfo(@NotNull PsiElement element) { if (!(element instanceof XmlTag)) { return null; } final XmlTag tag = (XmlTag)element; final XmlFile psiFile = (XmlFile)tag.getContainingFile(); if (psiFile.getRootTag() != tag || !DesignerApplicationManager.isApplicable(tag.getProject(), psiFile)) { return null; } //holder.createInfoAnnotation(textRange, null).setGutterIconRenderer(new MyRenderer()); return new LineMarkerInfo<>(element, element.getTextRange(), PlatformIcons.UI_FORM_ICON, Pass.LINE_MARKERS, element1 -> FlashUIDesignerBundle.message("gutter.open"), new GutterIconNavigationHandler<PsiElement>() { @Override public void navigate(MouseEvent e, PsiElement elt) { DesignerApplicationManager.getInstance().openDocument(psiFile, false); } }, GutterIconRenderer.Alignment.LEFT ); } @Override public void collectSlowLineMarkers(@NotNull List<PsiElement> elements, @NotNull Collection<LineMarkerInfo> result) { } }