update gutter icon for related file when related items are changed

This commit is contained in:
nik
2012-03-29 15:51:31 +04:00
parent ea56fe5b02
commit e5ca397cf6
2 changed files with 25 additions and 2 deletions
@@ -35,7 +35,7 @@ import java.awt.event.MouseEvent;
import java.lang.ref.WeakReference;
public class LineMarkerInfo<T extends PsiElement> {
private final Icon myIcon;
protected final Icon myIcon;
private final WeakReference<T> elementRef;
public final int startOffset;
public final int endOffset;
@@ -157,7 +157,7 @@ public class LineMarkerInfo<T extends PsiElement> {
return myInfo.myIconAlignment;
}
private boolean looksTheSameAs(@NotNull LineMarkerGutterIconRenderer renderer) {
protected boolean looksTheSameAs(@NotNull LineMarkerGutterIconRenderer renderer) {
return
myInfo.getElement() != null &&
renderer.myInfo.getElement() != null &&
@@ -60,4 +60,27 @@ public class RelatedItemLineMarkerInfo<T extends PsiElement> extends LineMarkerI
public Collection<? extends GotoRelatedItem> createGotoRelatedItems() {
return myTargets.getValue();
}
@Override
public GutterIconRenderer createGutterRenderer() {
if (myIcon == null) return null;
return new RelatedItemLineMarkerGutterIconRenderer<T>(this);
}
private static class RelatedItemLineMarkerGutterIconRenderer<T extends PsiElement> extends LineMarkerGutterIconRenderer<T> {
public RelatedItemLineMarkerGutterIconRenderer(final RelatedItemLineMarkerInfo<T> markerInfo) {
super(markerInfo);
}
@Override
protected boolean looksTheSameAs(@NotNull LineMarkerGutterIconRenderer renderer) {
if (!(renderer instanceof RelatedItemLineMarkerGutterIconRenderer) || !super.looksTheSameAs(renderer)) {
return false;
}
final RelatedItemLineMarkerInfo<?> markerInfo = (RelatedItemLineMarkerInfo<?>)getLineMarkerInfo();
final RelatedItemLineMarkerInfo<?> otherInfo = (RelatedItemLineMarkerInfo<?>)renderer.getLineMarkerInfo();
return markerInfo.myTargets.equals(otherInfo.myTargets);
}
}
}