From c72a375063ffe44f86f9b4d2f0c7e798ad0adc33 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Tue, 23 Apr 2019 15:52:35 +0300 Subject: [PATCH] Better localization for dsl style icon change --- .../markers/DslHighlightingMarker.kt | 23 +------ .../markers/DslHighlightingMarker.kt.182 | 64 ------------------- .../markers/DslHighlightingMarker.kt.as34 | 64 ------------------- .../markers/DslHighlightingMarker.kt.as35 | 64 ------------------- .../idea/highlighter/markers/dslStyleIcon.kt | 32 ++++++++++ .../highlighter/markers/dslStyleIcon.kt.182 | 16 +++++ .../highlighter/markers/dslStyleIcon.kt.as34 | 16 +++++ .../highlighter/markers/dslStyleIcon.kt.as35 | 16 +++++ 8 files changed, 81 insertions(+), 214 deletions(-) delete mode 100644 idea/src/org/jetbrains/kotlin/idea/highlighter/markers/DslHighlightingMarker.kt.182 delete mode 100644 idea/src/org/jetbrains/kotlin/idea/highlighter/markers/DslHighlightingMarker.kt.as34 delete mode 100644 idea/src/org/jetbrains/kotlin/idea/highlighter/markers/DslHighlightingMarker.kt.as35 create mode 100644 idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt create mode 100644 idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt.182 create mode 100644 idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt.as34 create mode 100644 idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt.as35 diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/DslHighlightingMarker.kt b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/DslHighlightingMarker.kt index cd65138c6c0..8db9d02cdf8 100644 --- a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/DslHighlightingMarker.kt +++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/DslHighlightingMarker.kt @@ -10,22 +10,16 @@ import com.intellij.codeHighlighting.Pass import com.intellij.codeInsight.daemon.GutterIconNavigationHandler import com.intellij.codeInsight.daemon.LineMarkerInfo import com.intellij.ide.DataManager -import com.intellij.openapi.editor.colors.EditorColorsManager import com.intellij.openapi.editor.markup.GutterIconRenderer import com.intellij.psi.PsiElement -import com.intellij.ui.LayeredIcon import com.intellij.util.Function -import com.intellij.util.ui.ColorsIcon -import com.intellij.util.ui.JBUI import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ClassKind -import org.jetbrains.kotlin.idea.KotlinIcons import org.jetbrains.kotlin.idea.KotlinLanguage import org.jetbrains.kotlin.idea.core.toDescriptor import org.jetbrains.kotlin.idea.highlighter.dsl.DslHighlighterExtension import org.jetbrains.kotlin.idea.highlighter.dsl.isDslHighlightingMarker import org.jetbrains.kotlin.psi.KtClass -import javax.swing.Icon import javax.swing.JComponent private val navHandler = GutterIconNavigationHandler { event, element -> @@ -52,7 +46,7 @@ fun collectHighlightingColorsMarkers( LineMarkerInfo( anchor, anchor.textRange, - createIcon(styleId), + createDslStyleIcon(styleId), Pass.LINE_MARKERS, toolTipHandler, navHandler, GutterIconRenderer.Alignment.RIGHT @@ -60,21 +54,6 @@ fun collectHighlightingColorsMarkers( ) } -private fun createIcon(styleId: Int): Icon { - val globalScheme = EditorColorsManager.getInstance().globalScheme - val markersColor = globalScheme.getAttributes(DslHighlighterExtension.styleById(styleId)).foregroundColor - val icon = LayeredIcon(2) - val defaultIcon = KotlinIcons.DSL_MARKER_ANNOTATION - icon.setIcon(defaultIcon, 0) - icon.setIcon( - ColorsIcon(defaultIcon.iconHeight / 2, markersColor).scale(JBUI.pixScale()), - 1, - defaultIcon.iconHeight / 2, - defaultIcon.iconWidth / 2 - ) - return icon -} - private fun KtClass.styleIdForMarkerAnnotation(): Int? { val classDescriptor = toDescriptor() as? ClassDescriptor ?: return null if (classDescriptor.kind != ClassKind.ANNOTATION_CLASS) return null diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/DslHighlightingMarker.kt.182 b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/DslHighlightingMarker.kt.182 deleted file mode 100644 index 7b0415615dc..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/DslHighlightingMarker.kt.182 +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2000-2018 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.highlighter.markers - -import com.intellij.application.options.colors.ColorAndFontOptions -import com.intellij.codeHighlighting.Pass -import com.intellij.codeInsight.daemon.GutterIconNavigationHandler -import com.intellij.codeInsight.daemon.LineMarkerInfo -import com.intellij.icons.AllIcons -import com.intellij.ide.DataManager -import com.intellij.openapi.editor.markup.GutterIconRenderer -import com.intellij.psi.PsiElement -import com.intellij.util.Function -import org.jetbrains.kotlin.descriptors.ClassDescriptor -import org.jetbrains.kotlin.descriptors.ClassKind -import org.jetbrains.kotlin.idea.KotlinLanguage -import org.jetbrains.kotlin.idea.core.toDescriptor -import org.jetbrains.kotlin.idea.highlighter.dsl.DslHighlighterExtension -import org.jetbrains.kotlin.idea.highlighter.dsl.isDslHighlightingMarker -import org.jetbrains.kotlin.psi.KtClass -import javax.swing.JComponent - -private val navHandler = GutterIconNavigationHandler { event, element -> - val dataContext = (event.component as? JComponent)?.let { DataManager.getInstance().getDataContext(it) } - ?: return@GutterIconNavigationHandler - val ktClass = element?.parent as? KtClass ?: return@GutterIconNavigationHandler - val styleId = ktClass.styleIdForMarkerAnnotation() ?: return@GutterIconNavigationHandler - ColorAndFontOptions.selectOrEditColor(dataContext, DslHighlighterExtension.styleOptionDisplayName(styleId), KotlinLanguage.NAME) -} - -private val toolTipHandler = Function { - "Marker annotation for DSL" -} - -fun collectHighlightingColorsMarkers( - ktClass: KtClass, - result: MutableCollection> -) { - if (ktClass.styleIdForMarkerAnnotation() == null) return - - val anchor = ktClass.nameIdentifier ?: return - - result.add( - LineMarkerInfo( - anchor, - anchor.textRange, - AllIcons.Gutter.Colors, - Pass.LINE_MARKERS, - toolTipHandler, navHandler, - GutterIconRenderer.Alignment.RIGHT - ) - ) -} - -private fun KtClass.styleIdForMarkerAnnotation(): Int? { - val classDescriptor = toDescriptor() as? ClassDescriptor ?: return null - if (classDescriptor.kind != ClassKind.ANNOTATION_CLASS) return null - if (!classDescriptor.isDslHighlightingMarker()) return null - return DslHighlighterExtension.styleIdByMarkerAnnotation(classDescriptor) -} - diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/DslHighlightingMarker.kt.as34 b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/DslHighlightingMarker.kt.as34 deleted file mode 100644 index 7b0415615dc..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/DslHighlightingMarker.kt.as34 +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2000-2018 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.highlighter.markers - -import com.intellij.application.options.colors.ColorAndFontOptions -import com.intellij.codeHighlighting.Pass -import com.intellij.codeInsight.daemon.GutterIconNavigationHandler -import com.intellij.codeInsight.daemon.LineMarkerInfo -import com.intellij.icons.AllIcons -import com.intellij.ide.DataManager -import com.intellij.openapi.editor.markup.GutterIconRenderer -import com.intellij.psi.PsiElement -import com.intellij.util.Function -import org.jetbrains.kotlin.descriptors.ClassDescriptor -import org.jetbrains.kotlin.descriptors.ClassKind -import org.jetbrains.kotlin.idea.KotlinLanguage -import org.jetbrains.kotlin.idea.core.toDescriptor -import org.jetbrains.kotlin.idea.highlighter.dsl.DslHighlighterExtension -import org.jetbrains.kotlin.idea.highlighter.dsl.isDslHighlightingMarker -import org.jetbrains.kotlin.psi.KtClass -import javax.swing.JComponent - -private val navHandler = GutterIconNavigationHandler { event, element -> - val dataContext = (event.component as? JComponent)?.let { DataManager.getInstance().getDataContext(it) } - ?: return@GutterIconNavigationHandler - val ktClass = element?.parent as? KtClass ?: return@GutterIconNavigationHandler - val styleId = ktClass.styleIdForMarkerAnnotation() ?: return@GutterIconNavigationHandler - ColorAndFontOptions.selectOrEditColor(dataContext, DslHighlighterExtension.styleOptionDisplayName(styleId), KotlinLanguage.NAME) -} - -private val toolTipHandler = Function { - "Marker annotation for DSL" -} - -fun collectHighlightingColorsMarkers( - ktClass: KtClass, - result: MutableCollection> -) { - if (ktClass.styleIdForMarkerAnnotation() == null) return - - val anchor = ktClass.nameIdentifier ?: return - - result.add( - LineMarkerInfo( - anchor, - anchor.textRange, - AllIcons.Gutter.Colors, - Pass.LINE_MARKERS, - toolTipHandler, navHandler, - GutterIconRenderer.Alignment.RIGHT - ) - ) -} - -private fun KtClass.styleIdForMarkerAnnotation(): Int? { - val classDescriptor = toDescriptor() as? ClassDescriptor ?: return null - if (classDescriptor.kind != ClassKind.ANNOTATION_CLASS) return null - if (!classDescriptor.isDslHighlightingMarker()) return null - return DslHighlighterExtension.styleIdByMarkerAnnotation(classDescriptor) -} - diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/DslHighlightingMarker.kt.as35 b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/DslHighlightingMarker.kt.as35 deleted file mode 100644 index 7b0415615dc..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/DslHighlightingMarker.kt.as35 +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2000-2018 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.highlighter.markers - -import com.intellij.application.options.colors.ColorAndFontOptions -import com.intellij.codeHighlighting.Pass -import com.intellij.codeInsight.daemon.GutterIconNavigationHandler -import com.intellij.codeInsight.daemon.LineMarkerInfo -import com.intellij.icons.AllIcons -import com.intellij.ide.DataManager -import com.intellij.openapi.editor.markup.GutterIconRenderer -import com.intellij.psi.PsiElement -import com.intellij.util.Function -import org.jetbrains.kotlin.descriptors.ClassDescriptor -import org.jetbrains.kotlin.descriptors.ClassKind -import org.jetbrains.kotlin.idea.KotlinLanguage -import org.jetbrains.kotlin.idea.core.toDescriptor -import org.jetbrains.kotlin.idea.highlighter.dsl.DslHighlighterExtension -import org.jetbrains.kotlin.idea.highlighter.dsl.isDslHighlightingMarker -import org.jetbrains.kotlin.psi.KtClass -import javax.swing.JComponent - -private val navHandler = GutterIconNavigationHandler { event, element -> - val dataContext = (event.component as? JComponent)?.let { DataManager.getInstance().getDataContext(it) } - ?: return@GutterIconNavigationHandler - val ktClass = element?.parent as? KtClass ?: return@GutterIconNavigationHandler - val styleId = ktClass.styleIdForMarkerAnnotation() ?: return@GutterIconNavigationHandler - ColorAndFontOptions.selectOrEditColor(dataContext, DslHighlighterExtension.styleOptionDisplayName(styleId), KotlinLanguage.NAME) -} - -private val toolTipHandler = Function { - "Marker annotation for DSL" -} - -fun collectHighlightingColorsMarkers( - ktClass: KtClass, - result: MutableCollection> -) { - if (ktClass.styleIdForMarkerAnnotation() == null) return - - val anchor = ktClass.nameIdentifier ?: return - - result.add( - LineMarkerInfo( - anchor, - anchor.textRange, - AllIcons.Gutter.Colors, - Pass.LINE_MARKERS, - toolTipHandler, navHandler, - GutterIconRenderer.Alignment.RIGHT - ) - ) -} - -private fun KtClass.styleIdForMarkerAnnotation(): Int? { - val classDescriptor = toDescriptor() as? ClassDescriptor ?: return null - if (classDescriptor.kind != ClassKind.ANNOTATION_CLASS) return null - if (!classDescriptor.isDslHighlightingMarker()) return null - return DslHighlighterExtension.styleIdByMarkerAnnotation(classDescriptor) -} - diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt new file mode 100644 index 00000000000..031bc47accc --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt @@ -0,0 +1,32 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. 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.highlighter.markers + +import com.intellij.openapi.editor.colors.EditorColorsManager +import com.intellij.ui.LayeredIcon +import com.intellij.util.ui.ColorsIcon +import com.intellij.util.ui.JBUI +import org.jetbrains.kotlin.idea.KotlinIcons +import org.jetbrains.kotlin.idea.highlighter.dsl.DslHighlighterExtension +import javax.swing.Icon + +// BUNCH: 182 +// BUNCH: as35 +// BUNCH: as34 +internal fun createDslStyleIcon(styleId: Int): Icon { + val globalScheme = EditorColorsManager.getInstance().globalScheme + val markersColor = globalScheme.getAttributes(DslHighlighterExtension.styleById(styleId)).foregroundColor + val icon = LayeredIcon(2) + val defaultIcon = KotlinIcons.DSL_MARKER_ANNOTATION + icon.setIcon(defaultIcon, 0) + icon.setIcon( + ColorsIcon(defaultIcon.iconHeight / 2, markersColor).scale(JBUI.pixScale()), + 1, + defaultIcon.iconHeight / 2, + defaultIcon.iconWidth / 2 + ) + return icon +} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt.182 b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt.182 new file mode 100644 index 00000000000..6ffa7ad695f --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt.182 @@ -0,0 +1,16 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. 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.highlighter.markers + +import com.intellij.icons.AllIcons +import javax.swing.Icon + +// BUNCH: 182 +// BUNCH: as35 +// BUNCH: as34 +internal fun createDslStyleIcon(styleId: Int): Icon { + return AllIcons.Gutter.Colors +} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt.as34 b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt.as34 new file mode 100644 index 00000000000..6ffa7ad695f --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt.as34 @@ -0,0 +1,16 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. 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.highlighter.markers + +import com.intellij.icons.AllIcons +import javax.swing.Icon + +// BUNCH: 182 +// BUNCH: as35 +// BUNCH: as34 +internal fun createDslStyleIcon(styleId: Int): Icon { + return AllIcons.Gutter.Colors +} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt.as35 b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt.as35 new file mode 100644 index 00000000000..6ffa7ad695f --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt.as35 @@ -0,0 +1,16 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. 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.highlighter.markers + +import com.intellij.icons.AllIcons +import javax.swing.Icon + +// BUNCH: 182 +// BUNCH: as35 +// BUNCH: as34 +internal fun createDslStyleIcon(styleId: Int): Icon { + return AllIcons.Gutter.Colors +} \ No newline at end of file