diff --git a/platform/lang-api/src/com/intellij/openapi/options/colors/ColorSettingsPage.java b/platform/lang-api/src/com/intellij/openapi/options/colors/ColorSettingsPage.java index 1edabf32e1ae..6905aae00a6b 100644 --- a/platform/lang-api/src/com/intellij/openapi/options/colors/ColorSettingsPage.java +++ b/platform/lang-api/src/com/intellij/openapi/options/colors/ColorSettingsPage.java @@ -54,9 +54,11 @@ public interface ColorSettingsPage extends ColorAndFontDescriptorsProvider { */ @Nullable Map getAdditionalHighlightingTagToDescriptorMap(); + @Nullable default Map getAdditionalInlineElementToDescriptorMap() { return null; } + /** * Specifies tag-to-'color key' mapping for regions with presentation containing additional colors from color map. * It's used to implement navigation between the list of keys and regions in sample editor. */ @Nullable default Map getAdditionalHighlightingTagToColorKeyMap() { return null; } -} \ No newline at end of file +} diff --git a/platform/lang-impl/src/com/intellij/application/options/colors/SimpleEditorPreview.java b/platform/lang-impl/src/com/intellij/application/options/colors/SimpleEditorPreview.java index 535243b772e1..e39c5def20ce 100644 --- a/platform/lang-impl/src/com/intellij/application/options/colors/SimpleEditorPreview.java +++ b/platform/lang-impl/src/com/intellij/application/options/colors/SimpleEditorPreview.java @@ -41,13 +41,6 @@ import java.util.List; import java.util.*; public class SimpleEditorPreview implements PreviewPanel { - private static final Map INLINE_ELEMENTS = new HashMap<>(); - static { - INLINE_ELEMENTS.put("parameter_hint", DefaultLanguageHighlighterColors.INLINE_PARAMETER_HINT); - INLINE_ELEMENTS.put("parameter_hint_highlighted", DefaultLanguageHighlighterColors.INLINE_PARAMETER_HINT_HIGHLIGHTED); - INLINE_ELEMENTS.put("parameter_hint_current", DefaultLanguageHighlighterColors.INLINE_PARAMETER_HINT_CURRENT); - } - private final ColorSettingsPage myPage; private final EditorEx myEditor; @@ -67,7 +60,8 @@ public class SimpleEditorPreview implements PreviewPanel { myOptions = options; myPage = page; - myHighlightsExtractor = new HighlightsExtractor(page.getAdditionalHighlightingTagToDescriptorMap(), INLINE_ELEMENTS, + myHighlightsExtractor = new HighlightsExtractor(page.getAdditionalHighlightingTagToDescriptorMap(), + page.getAdditionalInlineElementToDescriptorMap(), page.getAdditionalHighlightingTagToColorKeyMap()); myEditor = (EditorEx)FontEditorPreview.createPreviewEditor( myHighlightsExtractor.extractHighlights(page.getDemoText(), myHighlightData), // text without tags diff --git a/platform/lang-impl/src/com/intellij/application/options/colors/highlighting/InlineElementData.java b/platform/lang-impl/src/com/intellij/application/options/colors/highlighting/InlineElementData.java index 5687bcc3fd5e..240645b4d2a2 100644 --- a/platform/lang-impl/src/com/intellij/application/options/colors/highlighting/InlineElementData.java +++ b/platform/lang-impl/src/com/intellij/application/options/colors/highlighting/InlineElementData.java @@ -1,8 +1,7 @@ // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.application.options.colors.highlighting; -import com.intellij.codeInsight.daemon.impl.ParameterHintsPresentationManager; -import com.intellij.openapi.editor.DefaultLanguageHighlighterColors; +import com.intellij.codeInsight.daemon.impl.HintRenderer; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.EditorCustomElementRenderer; import com.intellij.openapi.editor.Inlay; @@ -10,12 +9,11 @@ import com.intellij.openapi.editor.colors.ColorKey; import com.intellij.openapi.editor.colors.EditorColorsScheme; import com.intellij.openapi.editor.colors.TextAttributesKey; import com.intellij.openapi.editor.markup.TextAttributes; -import com.intellij.openapi.util.Disposer; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.awt.*; import java.util.Collection; -import java.util.List; import java.util.Map; import static com.intellij.openapi.editor.colors.CodeInsightColors.BLINKING_HIGHLIGHTS_ATTRIBUTES; @@ -41,21 +39,15 @@ public class InlineElementData extends HighlightData { @Override public void addHighlToView(Editor view, EditorColorsScheme scheme, Map displayText) { int offset = getStartOffset(); - ParameterHintsPresentationManager hintsPresentationManager = ParameterHintsPresentationManager.getInstance(); - Inlay hint = hintsPresentationManager.addHint(view, offset, false, myText, null, false); - hintsPresentationManager.setHighlighted(hint, - DefaultLanguageHighlighterColors.INLINE_PARAMETER_HINT_HIGHLIGHTED.equals(getHighlightKey())); - hintsPresentationManager.setCurrent(hint, myText.contains("current")); - List inlays = view.getInlayModel().getInlineElementsInRange(offset, offset); - for (Inlay inlay : inlays) { - EditorCustomElementRenderer renderer = inlay.getRenderer(); - if (!(renderer instanceof RendererWrapper)) { - Disposer.dispose(inlay); - RendererWrapper wrapper = new RendererWrapper(renderer); - wrapper.drawBorder = myAddBorder; - view.getInlayModel().addInlineElement(offset, wrapper); + RendererWrapper renderer = new RendererWrapper(new HintRenderer(myText) { + @Nullable + @Override + protected TextAttributes getTextAttributes(@NotNull Editor editor) { + return editor.getColorsScheme().getAttributes(getHighlightKey()); } - } + }); + renderer.drawBorder = myAddBorder; + view.getInlayModel().addInlineElement(offset, false, renderer); } @Override diff --git a/platform/lang-impl/src/com/intellij/openapi/options/colors/pages/DefaultLanguageColorsPage.java b/platform/lang-impl/src/com/intellij/openapi/options/colors/pages/DefaultLanguageColorsPage.java index ca0e5c9ea667..5808917d5116 100644 --- a/platform/lang-impl/src/com/intellij/openapi/options/colors/pages/DefaultLanguageColorsPage.java +++ b/platform/lang-impl/src/com/intellij/openapi/options/colors/pages/DefaultLanguageColorsPage.java @@ -20,6 +20,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; +import java.util.HashMap; import java.util.Map; /** @@ -78,6 +79,14 @@ public class DefaultLanguageColorsPage implements RainbowColorSettingsPage, Disp TAG_HIGHLIGHTING_MAP.put("reassigned_local", DefaultLanguageHighlighterColors.REASSIGNED_LOCAL_VARIABLE); } + @NonNls private static final Map INLINE_ELEMENTS = new HashMap<>(); + + static { + INLINE_ELEMENTS.put("parameter_hint", DefaultLanguageHighlighterColors.INLINE_PARAMETER_HINT); + INLINE_ELEMENTS.put("parameter_hint_highlighted", DefaultLanguageHighlighterColors.INLINE_PARAMETER_HINT_HIGHLIGHTED); + INLINE_ELEMENTS.put("parameter_hint_current", DefaultLanguageHighlighterColors.INLINE_PARAMETER_HINT_CURRENT); + } + private final static AttributesDescriptor[] ATTRIBUTES_DESCRIPTORS = { new AttributesDescriptor( OptionsBundle.message("options.java.attribute.descriptor.bad.character"), HighlighterColors.BAD_CHARACTER), @@ -244,6 +253,12 @@ public class DefaultLanguageColorsPage implements RainbowColorSettingsPage, Disp return TAG_HIGHLIGHTING_MAP; } + @Nullable + @Override + public Map getAdditionalInlineElementToDescriptorMap() { + return INLINE_ELEMENTS; + } + @NotNull @Override public AttributesDescriptor[] getAttributeDescriptors() {