JetIconProvider now can return abstract method icon

This commit is contained in:
Vladimir Rudev
2012-11-02 00:23:05 +04:00
committed by Nikolay Krasko
parent e17b310411
commit db42036d35
@@ -39,6 +39,26 @@ public class JetIconProvider extends IconProvider {
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
public Icon getIcon(@NotNull PsiElement psiElement, int flags) {
if (psiElement instanceof JetFile) {
@@ -54,9 +74,17 @@ public class JetIconProvider extends IconProvider {
return JetIcons.EXTENSION_FUNCTION;
}
return PsiTreeUtil.getParentOfType(psiElement, JetNamedDeclaration.class) instanceof JetClass
? PlatformIcons.METHOD_ICON
: JetIcons.FUNCTION;
if (PsiTreeUtil.getParentOfType(psiElement, JetNamedDeclaration.class) instanceof JetClass) {
if (isAbstract((JetFunction) psiElement)) {
return PlatformIcons.ABSTRACT_METHOD_ICON;
}
else {
return PlatformIcons.METHOD_ICON;
}
}
else {
return JetIcons.FUNCTION;
}
}
if (psiElement instanceof JetClass) {
JetClass jetClass = (JetClass) psiElement;
@@ -77,7 +105,7 @@ public class JetIconProvider extends IconProvider {
return JetIcons.OBJECT;
}
if (psiElement instanceof JetParameter) {
JetParameter parameter = (JetParameter)psiElement;
JetParameter parameter = (JetParameter) psiElement;
if (parameter.getValOrVarNode() != null) {
JetParameterList parameterList = PsiTreeUtil.getParentOfType(psiElement, JetParameterList.class);
if (parameterList != null && parameterList.getParent() instanceof JetClass) {
@@ -87,7 +115,7 @@ public class JetIconProvider extends IconProvider {
return JetIcons.PARAMETER;
}
if (psiElement instanceof JetProperty) {
JetProperty property = (JetProperty)psiElement;
JetProperty property = (JetProperty) psiElement;
return property.isVar() ? JetIcons.FIELD_VAR : JetIcons.FIELD_VAL;
}
@@ -97,20 +125,4 @@ public class JetIconProvider extends IconProvider {
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;
}
}