JetIconProvider now can return abstract method icon
This commit is contained in:
committed by
Nikolay Krasko
parent
e17b310411
commit
db42036d35
@@ -39,6 +39,26 @@ public class JetIconProvider extends IconProvider {
|
|||||||
|
|
||||||
public static JetIconProvider INSTANCE = new JetIconProvider();
|
public static JetIconProvider INSTANCE = new JetIconProvider();
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public static JetClassOrObject getMainClass(@NotNull JetFile file) {
|
||||||
|
List<JetDeclaration> classes = ContainerUtil.filter(file.getDeclarations(), new Condition<JetDeclaration>() {
|
||||||
|
@Override
|
||||||
|
public boolean value(JetDeclaration jetDeclaration) {
|
||||||
|
return jetDeclaration instanceof JetClassOrObject;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (classes.size() == 1) {
|
||||||
|
if (StringUtil.getPackageName(file.getName()).equals(classes.get(0).getName())) {
|
||||||
|
return (JetClassOrObject) classes.get(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean isAbstract(@NotNull JetDeclarationWithBody declaration) {
|
||||||
|
return declaration.hasBlockBody() && declaration.getBodyExpression() == null;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Icon getIcon(@NotNull PsiElement psiElement, int flags) {
|
public Icon getIcon(@NotNull PsiElement psiElement, int flags) {
|
||||||
if (psiElement instanceof JetFile) {
|
if (psiElement instanceof JetFile) {
|
||||||
@@ -54,9 +74,17 @@ public class JetIconProvider extends IconProvider {
|
|||||||
return JetIcons.EXTENSION_FUNCTION;
|
return JetIcons.EXTENSION_FUNCTION;
|
||||||
}
|
}
|
||||||
|
|
||||||
return PsiTreeUtil.getParentOfType(psiElement, JetNamedDeclaration.class) instanceof JetClass
|
if (PsiTreeUtil.getParentOfType(psiElement, JetNamedDeclaration.class) instanceof JetClass) {
|
||||||
? PlatformIcons.METHOD_ICON
|
if (isAbstract((JetFunction) psiElement)) {
|
||||||
: JetIcons.FUNCTION;
|
return PlatformIcons.ABSTRACT_METHOD_ICON;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return PlatformIcons.METHOD_ICON;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return JetIcons.FUNCTION;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (psiElement instanceof JetClass) {
|
if (psiElement instanceof JetClass) {
|
||||||
JetClass jetClass = (JetClass) psiElement;
|
JetClass jetClass = (JetClass) psiElement;
|
||||||
@@ -77,7 +105,7 @@ public class JetIconProvider extends IconProvider {
|
|||||||
return JetIcons.OBJECT;
|
return JetIcons.OBJECT;
|
||||||
}
|
}
|
||||||
if (psiElement instanceof JetParameter) {
|
if (psiElement instanceof JetParameter) {
|
||||||
JetParameter parameter = (JetParameter)psiElement;
|
JetParameter parameter = (JetParameter) psiElement;
|
||||||
if (parameter.getValOrVarNode() != null) {
|
if (parameter.getValOrVarNode() != null) {
|
||||||
JetParameterList parameterList = PsiTreeUtil.getParentOfType(psiElement, JetParameterList.class);
|
JetParameterList parameterList = PsiTreeUtil.getParentOfType(psiElement, JetParameterList.class);
|
||||||
if (parameterList != null && parameterList.getParent() instanceof JetClass) {
|
if (parameterList != null && parameterList.getParent() instanceof JetClass) {
|
||||||
@@ -87,7 +115,7 @@ public class JetIconProvider extends IconProvider {
|
|||||||
return JetIcons.PARAMETER;
|
return JetIcons.PARAMETER;
|
||||||
}
|
}
|
||||||
if (psiElement instanceof JetProperty) {
|
if (psiElement instanceof JetProperty) {
|
||||||
JetProperty property = (JetProperty)psiElement;
|
JetProperty property = (JetProperty) psiElement;
|
||||||
return property.isVar() ? JetIcons.FIELD_VAR : JetIcons.FIELD_VAL;
|
return property.isVar() ? JetIcons.FIELD_VAR : JetIcons.FIELD_VAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -97,20 +125,4 @@ public class JetIconProvider extends IconProvider {
|
|||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
|
||||||
public static JetClassOrObject getMainClass(@NotNull JetFile file) {
|
|
||||||
List<JetDeclaration> classes = ContainerUtil.filter(file.getDeclarations(), new Condition<JetDeclaration>() {
|
|
||||||
@Override
|
|
||||||
public boolean value(JetDeclaration jetDeclaration) {
|
|
||||||
return jetDeclaration instanceof JetClassOrObject;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (classes.size() == 1) {
|
|
||||||
if (StringUtil.getPackageName(file.getName()).equals(classes.get(0).getName())) {
|
|
||||||
return (JetClassOrObject) classes.get(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user