diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/LightVariableBuilder.java b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/LightVariableBuilder.java index 27d4ae4eefd..1827da76969 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/LightVariableBuilder.java +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/LightVariableBuilder.java @@ -19,14 +19,12 @@ package org.jetbrains.kotlin.asJava.elements; import com.intellij.lang.Language; import com.intellij.navigation.NavigationItem; import com.intellij.psi.*; -import com.intellij.psi.impl.ElementPresentationUtil; import com.intellij.psi.impl.light.LightElement; import com.intellij.psi.impl.light.LightModifierList; -import com.intellij.ui.RowIcon; import com.intellij.util.IncorrectOperationException; -import com.intellij.util.PlatformIcons; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; +import org.jetbrains.kotlin.idea.KotlinIconProviderService; import javax.swing.*; @@ -112,7 +110,6 @@ public class LightVariableBuilder extends LightElement implements PsiVariable, N @Override public Icon getElementIcon(int flags) { - RowIcon baseIcon = ElementPresentationUtil.createLayeredIcon(PlatformIcons.VARIABLE_ICON, this, false); - return ElementPresentationUtil.addVisibilityIcon(this, flags, baseIcon); + return KotlinIconProviderService.getInstance().getLightVariableIcon(this, flags); } } diff --git a/compiler/psi/src/org/jetbrains/kotlin/idea/KotlinFileIcon.java b/compiler/psi/src/org/jetbrains/kotlin/idea/KotlinFileIcon.java deleted file mode 100644 index 9c7630076ce..00000000000 --- a/compiler/psi/src/org/jetbrains/kotlin/idea/KotlinFileIcon.java +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.idea; - -import com.intellij.openapi.util.IconLoader; - -import javax.swing.*; - -public interface KotlinFileIcon { - Icon KOTLIN_FILE = IconLoader.getIcon("/org/jetbrains/kotlin/idea/icons/kotlin_file.svg"); -} diff --git a/compiler/psi/src/org/jetbrains/kotlin/idea/KotlinFileIcon.java.182 b/compiler/psi/src/org/jetbrains/kotlin/idea/KotlinFileIcon.java.182 deleted file mode 100644 index 4af3bcce1b8..00000000000 --- a/compiler/psi/src/org/jetbrains/kotlin/idea/KotlinFileIcon.java.182 +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.idea; - -import com.intellij.openapi.util.IconLoader; - -import javax.swing.*; - -public interface KotlinFileIcon { - Icon KOTLIN_FILE = IconLoader.getIcon("/org/jetbrains/kotlin/idea/icons/kotlin_file.png"); -} diff --git a/compiler/psi/src/org/jetbrains/kotlin/idea/KotlinFileIcon.java.as33 b/compiler/psi/src/org/jetbrains/kotlin/idea/KotlinFileIcon.java.as33 deleted file mode 100644 index 4af3bcce1b8..00000000000 --- a/compiler/psi/src/org/jetbrains/kotlin/idea/KotlinFileIcon.java.as33 +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.idea; - -import com.intellij.openapi.util.IconLoader; - -import javax.swing.*; - -public interface KotlinFileIcon { - Icon KOTLIN_FILE = IconLoader.getIcon("/org/jetbrains/kotlin/idea/icons/kotlin_file.png"); -} diff --git a/compiler/psi/src/org/jetbrains/kotlin/idea/KotlinFileType.java b/compiler/psi/src/org/jetbrains/kotlin/idea/KotlinFileType.java index 1e2bc5e5e2b..065d01ce24b 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/idea/KotlinFileType.java +++ b/compiler/psi/src/org/jetbrains/kotlin/idea/KotlinFileType.java @@ -17,7 +17,6 @@ package org.jetbrains.kotlin.idea; import com.intellij.openapi.fileTypes.LanguageFileType; -import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.util.NotNullLazyValue; import org.jetbrains.annotations.NotNull; @@ -31,7 +30,7 @@ public class KotlinFileType extends LanguageFileType { @NotNull @Override protected Icon compute() { - return KotlinFileIcon.KOTLIN_FILE; + return KotlinIconProviderService.getInstance().getFileIcon(); } }; diff --git a/compiler/psi/src/org/jetbrains/kotlin/idea/KotlinIconProviderService.java b/compiler/psi/src/org/jetbrains/kotlin/idea/KotlinIconProviderService.java new file mode 100644 index 00000000000..c1a599fdabe --- /dev/null +++ b/compiler/psi/src/org/jetbrains/kotlin/idea/KotlinIconProviderService.java @@ -0,0 +1,34 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea; + +import com.intellij.openapi.components.ServiceManager; +import com.intellij.psi.PsiModifierListOwner; +import org.jetbrains.annotations.NotNull; + +import javax.swing.*; + +public abstract class KotlinIconProviderService { + public abstract Icon getFileIcon(); + public abstract Icon getLightVariableIcon(@NotNull PsiModifierListOwner element, int flags); + + public static class CompilerKotlinFileIconProviderService extends KotlinIconProviderService { + @Override + public Icon getFileIcon() { + return null; + } + + @Override + public Icon getLightVariableIcon(@NotNull PsiModifierListOwner element, int flags) { + return null; + } + } + + public static KotlinIconProviderService getInstance() { + KotlinIconProviderService service = ServiceManager.getService(KotlinIconProviderService.class); + return service != null ? service : new CompilerKotlinFileIconProviderService(); + } +} diff --git a/compiler/psi/src/org/jetbrains/kotlin/idea/KotlinModuleFileType.java b/compiler/psi/src/org/jetbrains/kotlin/idea/KotlinModuleFileType.java index 19209a785a5..897006e71d8 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/idea/KotlinModuleFileType.java +++ b/compiler/psi/src/org/jetbrains/kotlin/idea/KotlinModuleFileType.java @@ -17,8 +17,6 @@ package org.jetbrains.kotlin.idea; import com.intellij.openapi.fileTypes.FileType; -import com.intellij.openapi.fileTypes.LanguageFileType; -import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.util.NotNullLazyValue; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; @@ -34,7 +32,7 @@ public class KotlinModuleFileType implements FileType { @NotNull @Override protected Icon compute() { - return KotlinFileIcon.KOTLIN_FILE; + return KotlinIconProviderService.getInstance().getFileIcon(); } }; diff --git a/idea/resources/META-INF/plugin-common.xml b/idea/resources/META-INF/plugin-common.xml index 6be3813dd30..4976371eba3 100644 --- a/idea/resources/META-INF/plugin-common.xml +++ b/idea/resources/META-INF/plugin-common.xml @@ -221,6 +221,9 @@ + + diff --git a/idea/src/org/jetbrains/kotlin/idea/KotlinIdeFileIconProviderService.kt b/idea/src/org/jetbrains/kotlin/idea/KotlinIdeFileIconProviderService.kt new file mode 100644 index 00000000000..4997d39f358 --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/KotlinIdeFileIconProviderService.kt @@ -0,0 +1,25 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea + +import com.intellij.openapi.util.IconLoader +import com.intellij.psi.PsiModifierListOwner +import com.intellij.psi.impl.ElementPresentationUtil +import com.intellij.util.PlatformIcons +import javax.swing.Icon + +class KotlinIdeFileIconProviderService : KotlinIconProviderService() { + override fun getFileIcon(): Icon = KOTLIN_FILE + + override fun getLightVariableIcon(element: PsiModifierListOwner, flags: Int): Icon { + val baseIcon = ElementPresentationUtil.createLayeredIcon(PlatformIcons.VARIABLE_ICON, element, false) + return ElementPresentationUtil.addVisibilityIcon(element, flags, baseIcon) + } + + companion object { + private val KOTLIN_FILE = IconLoader.getIcon("/org/jetbrains/kotlin/idea/icons/kotlin_file.svg") + } +} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/KotlinIdeFileIconProviderService.kt.182 b/idea/src/org/jetbrains/kotlin/idea/KotlinIdeFileIconProviderService.kt.182 new file mode 100644 index 00000000000..38897c529be --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/KotlinIdeFileIconProviderService.kt.182 @@ -0,0 +1,25 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea + +import com.intellij.openapi.util.IconLoader +import com.intellij.psi.PsiModifierListOwner +import com.intellij.psi.impl.ElementPresentationUtil +import com.intellij.util.PlatformIcons +import javax.swing.Icon + +class KotlinIdeFileIconProviderService : KotlinIconProviderService() { + override fun getFileIcon(): Icon = KOTLIN_FILE + + override fun getLightVariableIcon(element: PsiModifierListOwner, flags: Int): Icon { + val baseIcon = ElementPresentationUtil.createLayeredIcon(PlatformIcons.VARIABLE_ICON, element, false) + return ElementPresentationUtil.addVisibilityIcon(element, flags, baseIcon) + } + + companion object { + private val KOTLIN_FILE = IconLoader.getIcon("/org/jetbrains/kotlin/idea/icons/kotlin_file.png") + } +} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/KotlinIdeFileIconProviderService.kt.as33 b/idea/src/org/jetbrains/kotlin/idea/KotlinIdeFileIconProviderService.kt.as33 new file mode 100644 index 00000000000..38897c529be --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/KotlinIdeFileIconProviderService.kt.as33 @@ -0,0 +1,25 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea + +import com.intellij.openapi.util.IconLoader +import com.intellij.psi.PsiModifierListOwner +import com.intellij.psi.impl.ElementPresentationUtil +import com.intellij.util.PlatformIcons +import javax.swing.Icon + +class KotlinIdeFileIconProviderService : KotlinIconProviderService() { + override fun getFileIcon(): Icon = KOTLIN_FILE + + override fun getLightVariableIcon(element: PsiModifierListOwner, flags: Int): Icon { + val baseIcon = ElementPresentationUtil.createLayeredIcon(PlatformIcons.VARIABLE_ICON, element, false) + return ElementPresentationUtil.addVisibilityIcon(element, flags, baseIcon) + } + + companion object { + private val KOTLIN_FILE = IconLoader.getIcon("/org/jetbrains/kotlin/idea/icons/kotlin_file.png") + } +} \ No newline at end of file