Refactoring: move tooltip provider and navigator from MarkerType
This commit is contained in:
@@ -66,50 +66,38 @@ public class JetLineMarkerProvider implements LineMarkerProvider {
|
|||||||
protected static final Icon OVERRIDDEN_MARK = AllIcons.Gutter.OverridenMethod;
|
protected static final Icon OVERRIDDEN_MARK = AllIcons.Gutter.OverridenMethod;
|
||||||
protected static final Icon IMPLEMENTED_MARK = AllIcons.Gutter.ImplementedMethod;
|
protected static final Icon IMPLEMENTED_MARK = AllIcons.Gutter.ImplementedMethod;
|
||||||
|
|
||||||
private static final Function<PsiElement, String> SUBCLASSED_CLASS_TOOLTIP_ADAPTER = new Function<PsiElement, String>() {
|
|
||||||
@Override
|
|
||||||
public String fun(@NotNull PsiElement element) {
|
|
||||||
PsiClass psiClass = getPsiClass(element);
|
|
||||||
return psiClass != null ? SUBCLASSED_CLASS.getTooltip().fun(psiClass) : null;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
private static final GutterIconNavigationHandler<PsiElement> SUBCLASSED_CLASS_NAVIGATION_HANDLER = new GutterIconNavigationHandler<PsiElement>() {
|
|
||||||
@Override
|
|
||||||
public void navigate(@Nullable MouseEvent e, @Nullable PsiElement elt) {
|
|
||||||
if (elt == null) return;
|
|
||||||
PsiElement psiClass = getPsiClass(elt);
|
|
||||||
if (psiClass != null) {
|
|
||||||
SUBCLASSED_CLASS.getNavigationHandler().navigate(e, psiClass);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
private static final MarkerType SUBCLASSED_CLASS = new MarkerType(
|
private static final MarkerType SUBCLASSED_CLASS = new MarkerType(
|
||||||
new NullableFunction<PsiElement, String>() {
|
new NullableFunction<PsiElement, String>() {
|
||||||
@Override
|
@Override
|
||||||
public String fun(@Nullable PsiElement element) {
|
public String fun(@Nullable PsiElement element) {
|
||||||
if (!(element instanceof PsiClass)) return null;
|
PsiClass psiClass = getPsiClass(element);
|
||||||
return MarkerType.getSubclassedClassTooltip((PsiClass) element);
|
return psiClass != null ? MarkerType.getSubclassedClassTooltip(psiClass) : null;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
new LineMarkerNavigator() {
|
new LineMarkerNavigator() {
|
||||||
@Override
|
@Override
|
||||||
public void browse(@Nullable MouseEvent e, @Nullable PsiElement element) {
|
public void browse(@Nullable MouseEvent e, @Nullable PsiElement element) {
|
||||||
if (!(element instanceof PsiClass)) return;
|
PsiClass psiClass = getPsiClass(element);
|
||||||
MarkerType.navigateToSubclassedClass(e, (PsiClass) element);
|
if (psiClass != null) {
|
||||||
|
MarkerType.navigateToSubclassedClass(e, psiClass);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private static PsiClass getPsiClass(@NotNull PsiElement element) {
|
private static PsiClass getPsiClass(@Nullable PsiElement element) {
|
||||||
|
if (element == null) return null;
|
||||||
|
if (element instanceof PsiClass) return (PsiClass) element;
|
||||||
|
|
||||||
if (!(element instanceof JetClass)) {
|
if (!(element instanceof JetClass)) {
|
||||||
element = element.getParent();
|
element = element.getParent();
|
||||||
if (!(element instanceof JetClass)) {
|
if (!(element instanceof JetClass)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return LightClassUtil.getPsiClass((JetClass) element);
|
return LightClassUtil.getPsiClass((JetClass) element);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -276,7 +264,7 @@ public class JetLineMarkerProvider implements LineMarkerProvider {
|
|||||||
PsiElement anchor = nameIdentifier != null ? nameIdentifier : element;
|
PsiElement anchor = nameIdentifier != null ? nameIdentifier : element;
|
||||||
Icon mark = isTrait ? IMPLEMENTED_MARK : OVERRIDDEN_MARK;
|
Icon mark = isTrait ? IMPLEMENTED_MARK : OVERRIDDEN_MARK;
|
||||||
result.add(new LineMarkerInfo<PsiElement>(anchor, anchor.getTextOffset(), mark, Pass.UPDATE_OVERRIDEN_MARKERS,
|
result.add(new LineMarkerInfo<PsiElement>(anchor, anchor.getTextOffset(), mark, Pass.UPDATE_OVERRIDEN_MARKERS,
|
||||||
SUBCLASSED_CLASS_TOOLTIP_ADAPTER, SUBCLASSED_CLASS_NAVIGATION_HANDLER));
|
SUBCLASSED_CLASS.getTooltip(), SUBCLASSED_CLASS.getNavigationHandler()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user