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(); 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;
}
} }