diff --git a/idea/resources/org/jetbrains/jet/plugin/icons/function.png b/idea/resources/org/jetbrains/jet/plugin/icons/function.png new file mode 100644 index 00000000000..35b42a422ee Binary files /dev/null and b/idea/resources/org/jetbrains/jet/plugin/icons/function.png differ diff --git a/idea/src/org/jetbrains/jet/plugin/icons/kotlin16x16.png b/idea/resources/org/jetbrains/jet/plugin/icons/kotlin16x16.png similarity index 100% rename from idea/src/org/jetbrains/jet/plugin/icons/kotlin16x16.png rename to idea/resources/org/jetbrains/jet/plugin/icons/kotlin16x16.png diff --git a/idea/resources/org/jetbrains/jet/plugin/icons/lambda.png b/idea/resources/org/jetbrains/jet/plugin/icons/lambda.png new file mode 100644 index 00000000000..6e7a1206894 Binary files /dev/null and b/idea/resources/org/jetbrains/jet/plugin/icons/lambda.png differ diff --git a/idea/resources/org/jetbrains/jet/plugin/icons/object.png b/idea/resources/org/jetbrains/jet/plugin/icons/object.png new file mode 100644 index 00000000000..22fa019cdf7 Binary files /dev/null and b/idea/resources/org/jetbrains/jet/plugin/icons/object.png differ diff --git a/idea/resources/org/jetbrains/jet/plugin/icons/parameter.png b/idea/resources/org/jetbrains/jet/plugin/icons/parameter.png new file mode 100644 index 00000000000..a5e70b15602 Binary files /dev/null and b/idea/resources/org/jetbrains/jet/plugin/icons/parameter.png differ diff --git a/idea/resources/org/jetbrains/jet/plugin/icons/trait.png b/idea/resources/org/jetbrains/jet/plugin/icons/trait.png new file mode 100644 index 00000000000..caf4a505814 Binary files /dev/null and b/idea/resources/org/jetbrains/jet/plugin/icons/trait.png differ diff --git a/idea/resources/org/jetbrains/jet/plugin/icons/type_alias.png b/idea/resources/org/jetbrains/jet/plugin/icons/type_alias.png new file mode 100644 index 00000000000..60deda724cd Binary files /dev/null and b/idea/resources/org/jetbrains/jet/plugin/icons/type_alias.png differ diff --git a/idea/resources/org/jetbrains/jet/plugin/icons/value.png b/idea/resources/org/jetbrains/jet/plugin/icons/value.png new file mode 100644 index 00000000000..d89f54310ef Binary files /dev/null and b/idea/resources/org/jetbrains/jet/plugin/icons/value.png differ diff --git a/idea/resources/org/jetbrains/jet/plugin/icons/variable.png b/idea/resources/org/jetbrains/jet/plugin/icons/variable.png new file mode 100644 index 00000000000..693fe9c1945 Binary files /dev/null and b/idea/resources/org/jetbrains/jet/plugin/icons/variable.png differ diff --git a/idea/src/org/jetbrains/jet/plugin/JetIconProvider.java b/idea/src/org/jetbrains/jet/plugin/JetIconProvider.java index ced2baf73d6..970a9f2f58a 100644 --- a/idea/src/org/jetbrains/jet/plugin/JetIconProvider.java +++ b/idea/src/org/jetbrains/jet/plugin/JetIconProvider.java @@ -17,7 +17,6 @@ package org.jetbrains.jet.plugin; import com.intellij.ide.IconProvider; -import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.util.Iconable; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.PsiElement; @@ -34,8 +33,6 @@ import java.util.List; * @author yole */ public class JetIconProvider extends IconProvider { - public static final Icon ICON_FOR_OBJECT = PlatformIcons.ANONYMOUS_CLASS_ICON; - public static final Icon KOTLIN_ICON = IconLoader.getIcon("/org/jetbrains/jet/plugin/icons/kotlin16x16.png"); public static JetIconProvider INSTANCE = new JetIconProvider(); @@ -60,41 +57,47 @@ public class JetIconProvider extends IconProvider { if (mostImportantClass != null) { return getIcon(mostImportantClass, flags); } - return KOTLIN_ICON; + return JetIcons.FILE; } if (psiElement instanceof JetNamespaceHeader) { return (flags & Iconable.ICON_FLAG_OPEN) != 0 ? PlatformIcons.PACKAGE_OPEN_ICON : PlatformIcons.PACKAGE_ICON; } if (psiElement instanceof JetNamedFunction) { return PsiTreeUtil.getParentOfType(psiElement, JetNamedDeclaration.class) instanceof JetClass - ? PlatformIcons.METHOD_ICON - : PlatformIcons.FUNCTION_ICON; + ? JetIcons.LAMBDA + : JetIcons.FUNCTION; } if (psiElement instanceof JetClass) { JetClass jetClass = (JetClass) psiElement; + if (jetClass.isTrait()) { + return JetIcons.TRAIT; + } + Icon icon = jetClass.hasModifier(JetTokens.ENUM_KEYWORD) ? PlatformIcons.ENUM_ICON : PlatformIcons.CLASS_ICON; if (jetClass instanceof JetEnumEntry) { JetEnumEntry enumEntry = (JetEnumEntry) jetClass; if (enumEntry.getPrimaryConstructorParameterList() == null) { - icon = ICON_FOR_OBJECT; + icon = PlatformIcons.ENUM_ICON; } } return icon; } if (psiElement instanceof JetObjectDeclaration || psiElement instanceof JetClassObject) { - return ICON_FOR_OBJECT; + return JetIcons.OBJECT; } if (psiElement instanceof JetParameter) { - if (((JetParameter) psiElement).getValOrVarNode() != null) { + JetParameter parameter = (JetParameter)psiElement; + if (parameter.getValOrVarNode() != null) { JetParameterList parameterList = PsiTreeUtil.getParentOfType(psiElement, JetParameterList.class); if (parameterList != null && parameterList.getParent() instanceof JetClass) { - return PlatformIcons.PROPERTY_ICON; + return parameter.isVarArg() ? JetIcons.VAR : JetIcons.VAL; } } - return PlatformIcons.PARAMETER_ICON; + return JetIcons.PARAMETER; } if (psiElement instanceof JetProperty) { - return PlatformIcons.PROPERTY_ICON; + JetProperty property = (JetProperty)psiElement; + return property.isVar() ? JetIcons.VAR : JetIcons.VAL; } return null; } diff --git a/idea/src/org/jetbrains/jet/plugin/JetIcons.java b/idea/src/org/jetbrains/jet/plugin/JetIcons.java new file mode 100644 index 00000000000..79ef34542c1 --- /dev/null +++ b/idea/src/org/jetbrains/jet/plugin/JetIcons.java @@ -0,0 +1,37 @@ +/* + * Copyright 2010-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.jet.plugin; + +import com.intellij.openapi.util.IconLoader; + +import javax.swing.*; + +/** + * @author Nikolay Krasko + */ +public interface JetIcons { + Icon SMALL_LOGO = IconLoader.getIcon("/org/jetbrains/jet/plugin/icons/kotlin16x16.png"); + + Icon FILE = SMALL_LOGO; // TODO: Add file icon + Icon OBJECT = IconLoader.getIcon("/org/jetbrains/jet/plugin/icons/object.png"); + Icon TRAIT = IconLoader.getIcon("/org/jetbrains/jet/plugin/icons/trait.png"); + Icon FUNCTION = IconLoader.getIcon("/org/jetbrains/jet/plugin/icons/function.png"); + Icon LAMBDA = IconLoader.getIcon("/org/jetbrains/jet/plugin/icons/lambda.png"); + Icon VAR = IconLoader.getIcon("/org/jetbrains/jet/plugin/icons/variable.png"); + Icon VAL = IconLoader.getIcon("/org/jetbrains/jet/plugin/icons/value.png"); + Icon PARAMETER = IconLoader.getIcon("/org/jetbrains/jet/plugin/icons/parameter.png"); +} diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/JetColorSettingsPage.java b/idea/src/org/jetbrains/jet/plugin/highlighter/JetColorSettingsPage.java index 8ddad2c864e..0b67bbedcb3 100644 --- a/idea/src/org/jetbrains/jet/plugin/highlighter/JetColorSettingsPage.java +++ b/idea/src/org/jetbrains/jet/plugin/highlighter/JetColorSettingsPage.java @@ -24,7 +24,7 @@ import com.intellij.openapi.options.colors.ColorDescriptor; import com.intellij.openapi.options.colors.ColorSettingsPage; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.plugin.JetBundle; -import org.jetbrains.jet.plugin.JetIconProvider; +import org.jetbrains.jet.plugin.JetIcons; import javax.swing.*; import java.lang.reflect.Field; @@ -35,7 +35,7 @@ import java.util.Map; public class JetColorSettingsPage implements ColorSettingsPage { @Override public Icon getIcon() { - return JetIconProvider.KOTLIN_ICON; + return JetIcons.SMALL_LOGO; } @NotNull