Breadcrumbs color settings [IDEA-CR-14449]

This commit is contained in:
Rustam Vishnyakov
2016-10-13 13:21:20 +03:00
parent e0ef2ece2f
commit 87d0e72d34
5 changed files with 104 additions and 62 deletions
@@ -66,4 +66,9 @@ public interface EditorColors {
ColorKey BORDER_LINES_COLOR = ColorKey.createColorKey("BORDER_LINES_COLOR");
TextAttributesKey INJECTED_LANGUAGE_FRAGMENT = TextAttributesKey.createTextAttributesKey("INJECTED_LANGUAGE_FRAGMENT");
TextAttributesKey BREADCRUMBS_DEFAULT = TextAttributesKey.createTextAttributesKey("BREADCRUMBS_DEFAULT");
TextAttributesKey BREADCRUMBS_HOVERED = TextAttributesKey.createTextAttributesKey("BREADCRUMBS_HOVERED");
TextAttributesKey BREADCRUMBS_CURRENT = TextAttributesKey.createTextAttributesKey("BREADCRUMBS_CURRENT");
TextAttributesKey BREADCRUMBS_INACTIVE = TextAttributesKey.createTextAttributesKey("BREADCRUMBS_INACTIVE");
}
@@ -97,7 +97,12 @@ public class GeneralColorsPage implements ColorSettingsPage, InspectionColorSett
new AttributesDescriptor(OptionsBundle.message("options.java.color.descriptor.full.coverage"), CodeInsightColors.LINE_FULL_COVERAGE),
new AttributesDescriptor(OptionsBundle.message("options.java.color.descriptor.partial.coverage"),
CodeInsightColors.LINE_PARTIAL_COVERAGE),
new AttributesDescriptor(OptionsBundle.message("options.java.color.descriptor.none.coverage"), CodeInsightColors.LINE_NONE_COVERAGE)
new AttributesDescriptor(OptionsBundle.message("options.java.color.descriptor.none.coverage"), CodeInsightColors.LINE_NONE_COVERAGE),
new AttributesDescriptor(OptionsBundle.message("options.general.color.descriptor.breadcrumbs.default"), EditorColors.BREADCRUMBS_DEFAULT),
new AttributesDescriptor(OptionsBundle.message("options.general.color.descriptor.breadcrumbs.hovered"), EditorColors.BREADCRUMBS_HOVERED),
new AttributesDescriptor(OptionsBundle.message("options.general.color.descriptor.breadcrumbs.current"), EditorColors.BREADCRUMBS_CURRENT),
new AttributesDescriptor(OptionsBundle.message("options.general.color.descriptor.breadcrumbs.inactive"), EditorColors.BREADCRUMBS_INACTIVE)
};
private static final ColorDescriptor[] COLOR_DESCRIPTORS = {
@@ -153,6 +153,10 @@ options.general.color.descriptor.reference.hyperlink=Hyperlinks//Reference
options.general.color.descriptor.todo.defaults=Code//TODO defaults
options.general.color.descriptor.bookmarks=Editor//Bookmarks
options.general.color.soft.wrap.sign=Text//Soft wrap sign
options.general.color.descriptor.breadcrumbs.default=Editor//Breadcrumbs//Default
options.general.color.descriptor.breadcrumbs.hovered=Editor//Breadcrumbs//Hovered
options.general.color.descriptor.breadcrumbs.current=Editor//Breadcrumbs//Current
options.general.color.descriptor.breadcrumbs.inactive=Editor//Breadcrumbs//Inactive
options.language.defaults.display.name=Language Defaults
@@ -58,19 +58,6 @@
<option name="VCS_ANNOTATIONS_COLOR_3" value="d9e4f9"/>
<option name="VCS_ANNOTATIONS_COLOR_4" value="fffbcf"/>
<option name="VCS_ANNOTATIONS_COLOR_5" value="ffbfc3"/>
<option name="BREADCRUMBS_BACKGROUND" value="f5f5f5"/>
<option name="BREADCRUMBS_BACKGROUND_HOVERED" value="dcdcdc"/>
<option name="BREADCRUMBS_BACKGROUND_CURRENT" value="fafadc"/>
<option name="BREADCRUMBS_BACKGROUND_INACTIVE" value="fdfdfd"/>
<option name="BREADCRUMBS_TEXT_COLOR" value="323232"/>
<option name="BREADCRUMBS_TEXT_COLOR_HOVERED" value="323232"/>
<option name="BREADCRUMBS_TEXT_COLOR_CURRENT" value="323232"/>
<option name="BREADCRUMBS_TEXT_COLOR_INACTIVE" value="aaaaaa"/>
<option name="BREADCRUMBS_BORDER_COLOR" value="aaaaaa"/>
<option name="BREADCRUMBS_BORDER_COLOR_HOVERED" value="aaaaaa"/>
<option name="BREADCRUMBS_BORDER_COLOR_CURRENT" value="aaaaaa"/>
<option name="BREADCRUMBS_BORDER_COLOR_INACTIVE" value="c8c8c8"/>
</colors>
<attributes>
@@ -1049,6 +1036,39 @@
<option name="FOREGROUND" value="bc5150" />
</value>
</option>
<option name="BREADCRUMBS_DEFAULT">
<value>
<option name="FOREGROUND" value="323232"/>
<option name="BACKGROUND" value="f5f5f5"/>
<option name="EFFECT_COLOR" value="aaaaaa"/>
<option name="EFFECT_TYPE" value="0"/>
</value>
</option>
<option name="BREADCRUMBS_HOVERED">
<value>
<option name="FOREGROUND" value="323232"/>
<option name="BACKGROUND" value="dcdcdc"/>
<option name="EFFECT_COLOR" value="aaaaaa"/>
<option name="EFFECT_TYPE" value="0"/>
</value>
</option>
<option name="BREADCRUMBS_CURRENT">
<value>
<option name="FOREGROUND" value="323232"/>
<option name="BACKGROUND" value="fafadc"/>
<option name="EFFECT_COLOR" value="aaaaaa"/>
<option name="EFFECT_TYPE" value="0"/>
</value>
</option>
<option name="BREADCRUMBS_INACTIVE">
<value>
<option name="FOREGROUND" value="aaaaaa"/>
<option name="BACKGROUND" value="fdfdfd"/>
<option name="EFFECT_COLOR" value="c8c8c8"/>
<option name="EFFECT_TYPE" value="0"/>
</value>
</option>
</attributes>
</scheme>
@@ -1105,19 +1125,6 @@
<option name="VCS_ANNOTATIONS_COLOR_3" value="41444a"/>
<option name="VCS_ANNOTATIONS_COLOR_4" value="484248"/>
<option name="VCS_ANNOTATIONS_COLOR_5" value="4c393a"/>
<option name="BREADCRUMBS_BACKGROUND" value="65686a"/>
<option name="BREADCRUMBS_BACKGROUND_HOVERED" value="797d7f"/>
<option name="BREADCRUMBS_BACKGROUND_CURRENT" value="61614b"/>
<option name="BREADCRUMBS_BACKGROUND_INACTIVE" value="828282"/>
<option name="BREADCRUMBS_TEXT_COLOR" value="bbbbbb"/>
<option name="BREADCRUMBS_TEXT_COLOR_HOVERED" value="bbbbbb"/>
<option name="BREADCRUMBS_TEXT_COLOR_CURRENT" value="bbbbbb"/>
<option name="BREADCRUMBS_TEXT_COLOR_INACTIVE" value="bbbbbb"/>
<option name="BREADCRUMBS_BORDER_COLOR" value="323232"/>
<option name="BREADCRUMBS_BORDER_COLOR_HOVERED" value="323232"/>
<option name="BREADCRUMBS_BORDER_COLOR_CURRENT" value="323232"/>
<option name="BREADCRUMBS_BORDER_COLOR_INACTIVE" value="464646"/>
</colors>
<attributes>
<option name="ANNOTATION_ATTRIBUTE_NAME_ATTRIBUTES">
@@ -2141,6 +2148,39 @@
<option name="FOREGROUND" value="9d527c" />
</value>
</option>
<option name="BREADCRUMBS_DEFAULT">
<value>
<option name="FOREGROUND" value="bbbbbb"/>
<option name="BACKGROUND" value="65686a"/>
<option name="EFFECT_COLOR" value="323232"/>
<option name="EFFECT_TYPE" value="0"/>
</value>
</option>
<option name="BREADCRUMBS_HOVERED">
<value>
<option name="FOREGROUND" value="bbbbbb"/>
<option name="BACKGROUND" value="797d7f"/>
<option name="EFFECT_COLOR" value="323232"/>
<option name="EFFECT_TYPE" value="0"/>
</value>
</option>
<option name="BREADCRUMBS_CURRENT">
<value>
<option name="FOREGROUND" value="bbbbbb"/>
<option name="BACKGROUND" value="61614b"/>
<option name="EFFECT_COLOR" value="323232"/>
<option name="EFFECT_TYPE" value="0"/>
</value>
</option>
<option name="BREADCRUMBS_INACTIVE">
<value>
<option name="FOREGROUND" value="bbbbbb"/>
<option name="BACKGROUND" value="828282"/>
<option name="EFFECT_COLOR" value="464646"/>
<option name="EFFECT_TYPE" value="0"/>
</value>
</option>
</attributes>
</scheme>
@@ -18,8 +18,10 @@ package com.intellij.xml.breadcrumbs;
import com.intellij.ide.ui.UISettings;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.colors.ColorKey;
import com.intellij.openapi.editor.colors.EditorColors;
import com.intellij.openapi.editor.colors.EditorColorsManager;
import com.intellij.openapi.editor.colors.TextAttributesKey;
import com.intellij.openapi.editor.markup.TextAttributes;
import com.intellij.openapi.util.Weighted;
import com.intellij.ui.paint.RectanglePainter;
import com.intellij.util.containers.ContainerUtil;
@@ -40,26 +42,6 @@ import java.util.List;
* @author spleaner
*/
public class BreadcrumbsComponent<T extends BreadcrumbsItem> extends JComponent implements Disposable, Weighted {
private interface Background {
ColorKey DEFAULT = ColorKey.createColorKey("BREADCRUMBS_BACKGROUND");
ColorKey HOVERED = ColorKey.createColorKey("BREADCRUMBS_BACKGROUND_HOVERED");
ColorKey CURRENT = ColorKey.createColorKey("BREADCRUMBS_BACKGROUND_CURRENT");
ColorKey INACTIVE = ColorKey.createColorKey("BREADCRUMBS_BACKGROUND_INACTIVE");
}
private interface TextColor {
ColorKey DEFAULT = ColorKey.createColorKey("BREADCRUMBS_TEXT_COLOR");
ColorKey HOVERED = ColorKey.createColorKey("BREADCRUMBS_TEXT_COLOR_HOVERED");
ColorKey CURRENT = ColorKey.createColorKey("BREADCRUMBS_TEXT_COLOR_CURRENT");
ColorKey INACTIVE = ColorKey.createColorKey("BREADCRUMBS_TEXT_COLOR_INACTIVE");
}
private interface BorderColor {
ColorKey DEFAULT = ColorKey.createColorKey("BREADCRUMBS_BORDER_COLOR");
ColorKey HOVERED = ColorKey.createColorKey("BREADCRUMBS_BORDER_COLOR_HOVERED");
ColorKey CURRENT = ColorKey.createColorKey("BREADCRUMBS_BORDER_COLOR_CURRENT");
ColorKey INACTIVE = ColorKey.createColorKey("BREADCRUMBS_BORDER_COLOR_INACTIVE");
}
private static final Logger LOG = Logger.getInstance("#com.intellij.xml.breadcrumbs.BreadcrumbsComponent");
private static final Painter DEFAULT_PAINTER = new DefaultPainter(new ButtonSettings());
@@ -622,17 +604,17 @@ public class BreadcrumbsComponent<T extends BreadcrumbsItem> extends JComponent
abstract static class PainterSettings {
@Nullable
Color getBackgroundColor(@NotNull final Crumb c) {
return getColor(c, Background.DEFAULT, Background.HOVERED, Background.CURRENT, Background.INACTIVE);
return getAttributes(c).getBackgroundColor();
}
@Nullable
Color getForegroundColor(@NotNull final Crumb c) {
return getColor(c, TextColor.DEFAULT, TextColor.HOVERED, TextColor.CURRENT, TextColor.INACTIVE);
return getAttributes(c).getForegroundColor();
}
@Nullable
Color getBorderColor(@NotNull final Crumb c) {
return getColor(c, BorderColor.DEFAULT, BorderColor.HOVERED, BorderColor.CURRENT, BorderColor.INACTIVE);
return getAttributes(c).getEffectColor();
}
@Nullable
@@ -640,28 +622,34 @@ public class BreadcrumbsComponent<T extends BreadcrumbsItem> extends JComponent
return null;
}
static Color getColor(Crumb c, ColorKey main, ColorKey hovered, ColorKey current, ColorKey inactive) {
return EditorColorsManager.getInstance().getGlobalScheme().getColor(
@NotNull
static TextAttributesKey getKey(Crumb c) {
return
c.isHovered()
? hovered
? EditorColors.BREADCRUMBS_HOVERED
: c.isSelected()
? current
? EditorColors.BREADCRUMBS_CURRENT
: c.isLight() && !(c instanceof NavigationCrumb)
? inactive
: main);
? EditorColors.BREADCRUMBS_INACTIVE
: EditorColors.BREADCRUMBS_DEFAULT;
}
@NotNull
static TextAttributes getAttributes(Crumb c) {
return EditorColorsManager.getInstance().getGlobalScheme().getAttributes(getKey(c));
}
}
static class ButtonSettings extends PainterSettings {
static Color getBackgroundColor(boolean selected, boolean hovered, boolean light, boolean navigationCrumb) {
return EditorColorsManager.getInstance().getGlobalScheme().getColor(
return EditorColorsManager.getInstance().getGlobalScheme().getAttributes(
hovered
? Background.HOVERED
? EditorColors.BREADCRUMBS_HOVERED
: selected
? Background.CURRENT
? EditorColors.BREADCRUMBS_CURRENT
: light && !navigationCrumb
? Background.INACTIVE
: Background.DEFAULT);
? EditorColors.BREADCRUMBS_INACTIVE
: EditorColors.BREADCRUMBS_DEFAULT).getBackgroundColor();
}
@Override