diff --git a/platform/util/src/com/intellij/ui/JBColor.java b/platform/util/src/com/intellij/ui/JBColor.java index ee3d5eae26e4..773f6fab1e51 100644 --- a/platform/util/src/com/intellij/ui/JBColor.java +++ b/platform/util/src/com/intellij/ui/JBColor.java @@ -2,6 +2,7 @@ package com.intellij.ui; import com.intellij.util.NotNullProducer; +import com.intellij.util.containers.hash.HashMap; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; @@ -291,4 +292,35 @@ public class JBColor extends Color { } }); } + + private static final HashMap currentThemeColors = new HashMap(); + private static final HashMap defaultThemeColors = new HashMap(); + + public static Color get(@NotNull final String colorId, @NotNull final Color defaultColor) { + return new JBColor(new NotNullProducer() { + @NotNull + @Override + public Color produce() { + Color color = currentThemeColors.get(colorId); + if (color != null) { + return color; + } + color = defaultThemeColors.get(colorId); + if (color != null) { + return color; + } + + defaultThemeColors.put(colorId, defaultColor); + return defaultColor; + } + }); + } + + public static void setCurrentThemeColor(@NotNull String colorId, @NotNull Color color) { + currentThemeColors.put(colorId, color); + } + + public static void clearCurrentThemeColors() { + currentThemeColors.clear(); + } }