diff --git a/images/src/org/intellij/images/editor/impl/ImageEditorUI.java b/images/src/org/intellij/images/editor/impl/ImageEditorUI.java index 15cb24b91fc0..5258e5d6a1af 100644 --- a/images/src/org/intellij/images/editor/impl/ImageEditorUI.java +++ b/images/src/org/intellij/images/editor/impl/ImageEditorUI.java @@ -44,6 +44,7 @@ import com.intellij.util.LazyInitializer; import com.intellij.util.ObjectUtils; import com.intellij.util.SVGLoader; import com.intellij.util.ui.JBUI; +import com.intellij.util.ui.UIUtil; import org.intellij.images.ImagesBundle; import org.intellij.images.editor.ImageDocument; import org.intellij.images.editor.ImageDocument.ScaledImageProvider; @@ -72,6 +73,7 @@ import java.awt.image.BufferedImage; import java.awt.image.ColorModel; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.util.Objects; /** * Image editor UI @@ -156,7 +158,7 @@ final class ImageEditorUI extends JPanel implements DataProvider, CopyProvider, actionToolbar.setTargetComponent(this); toolbarPanel = actionToolbar.getComponent(); - toolbarPanel.setBackground(JBColor.lazy(() -> getBackground())); + toolbarPanel.setBackground(JBColor.lazy(() -> Objects.requireNonNullElse(getBackground(), UIUtil.getPanelBackground()))); toolbarPanel.addMouseListener(new FocusRequester()); } diff --git a/images/src/org/intellij/images/editor/impl/jcef/JCefImageViewerUI.kt b/images/src/org/intellij/images/editor/impl/jcef/JCefImageViewerUI.kt index 15003ebcacd4..2ddf892f2da6 100644 --- a/images/src/org/intellij/images/editor/impl/jcef/JCefImageViewerUI.kt +++ b/images/src/org/intellij/images/editor/impl/jcef/JCefImageViewerUI.kt @@ -15,6 +15,7 @@ import com.intellij.ui.components.ZoomableViewport import com.intellij.ui.components.panels.NonOpaquePanel import com.intellij.util.ObjectUtils import com.intellij.util.ui.JBUI +import com.intellij.util.ui.UIUtil import org.intellij.images.ImagesBundle import org.intellij.images.editor.actionSystem.ImageEditorActions import org.intellij.images.editor.impl.jcef.JCefImageViewer.Companion.isDebugMode @@ -110,7 +111,7 @@ class JCefImageViewerUI(private val myContentComponent: Component, } val toolbarPanel = actionToolbar.component - toolbarPanel.background = JBColor.lazy { background } + toolbarPanel.background = JBColor.lazy { background ?: UIUtil.getPanelBackground()} val topPanel: JPanel = NonOpaquePanel(BorderLayout()) topPanel.add(toolbarPanel, BorderLayout.WEST) @@ -123,7 +124,7 @@ class JCefImageViewerUI(private val myContentComponent: Component, myViewPort.setLayout(CardLayout()) myViewer.preferredFocusedComponent.addMouseWheelListener(MOUSE_WHEEL_LISTENER) myViewPort.add(myContentComponent, IMAGE_PANEL) - myContentComponent.background = JBColor.lazy { background } + myContentComponent.background = JBColor.lazy { background ?: UIUtil.getPanelBackground()} val errorLabel = JLabel( ImagesBundle.message("error.broken.image.file.format"), diff --git a/platform/diff-impl/src/com/intellij/diff/tools/combined/CombinedDiffUI.kt b/platform/diff-impl/src/com/intellij/diff/tools/combined/CombinedDiffUI.kt index b5c0d20ace0a..0a9dcb466a59 100644 --- a/platform/diff-impl/src/com/intellij/diff/tools/combined/CombinedDiffUI.kt +++ b/platform/diff-impl/src/com/intellij/diff/tools/combined/CombinedDiffUI.kt @@ -11,7 +11,7 @@ import java.awt.Insets internal object CombinedDiffUI { val MAIN_HEADER_BACKGROUND: Color = JBColor.lazy { - return@lazy if (ExperimentalUI.isNewUI()) JBUI.CurrentTheme.EditorTabs.background() else UIUtil.getPanelBackground() + if (ExperimentalUI.isNewUI()) JBUI.CurrentTheme.EditorTabs.background() else UIUtil.getPanelBackground() } val MAIN_HEADER_INSETS: Insets diff --git a/platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java b/platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java index c867b0611145..4f758f016e89 100644 --- a/platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java +++ b/platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java @@ -475,12 +475,11 @@ public final class DiffUtil { Color commentFg = JBColor.lazy(() -> { EditorColorsScheme scheme = EditorColorsManager.getInstance().getGlobalScheme(); TextAttributes commentAttributes = scheme.getAttributes(DefaultLanguageHighlighterColors.LINE_COMMENT); - if (commentAttributes.getForegroundColor() != null && commentAttributes.getBackgroundColor() == null) { - return commentAttributes.getForegroundColor(); - } - else { - return scheme.getDefaultForeground(); + Color commentAttributesForegroundColor = commentAttributes.getForegroundColor(); + if (commentAttributesForegroundColor != null && commentAttributes.getBackgroundColor() == null) { + return commentAttributesForegroundColor; } + return scheme.getDefaultForeground(); }); label.setForeground(commentFg); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/actions/ReaderModeActionProvider.kt b/platform/lang-impl/src/com/intellij/codeInsight/actions/ReaderModeActionProvider.kt index 779e6d78b1c1..d8d90e5bdcad 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/actions/ReaderModeActionProvider.kt +++ b/platform/lang-impl/src/com/intellij/codeInsight/actions/ReaderModeActionProvider.kt @@ -99,7 +99,7 @@ private class ReaderModeActionProvider : InspectionWidgetActionProvider { } } }.also { - it.foreground = JBColor.lazy { editor.colorsScheme.getColor(FOREGROUND) ?: FOREGROUND.defaultColor } + it.foreground = JBColor.lazy { editor.colorsScheme.getColor(FOREGROUND) ?: FOREGROUND.defaultColor ?: UIUtil.getInactiveTextColor()} if (!SystemInfo.isWindows) { it.font = FontUIResource(it.font.deriveFont(it.font.style, it.font.size - JBUIScale.scale(2).toFloat())) } diff --git a/platform/platform-api/src/com/intellij/execution/process/ColoredOutputTypeRegistryImpl.java b/platform/platform-api/src/com/intellij/execution/process/ColoredOutputTypeRegistryImpl.java index c3eb2109c13d..92885d5e05a6 100644 --- a/platform/platform-api/src/com/intellij/execution/process/ColoredOutputTypeRegistryImpl.java +++ b/platform/platform-api/src/com/intellij/execution/process/ColoredOutputTypeRegistryImpl.java @@ -11,15 +11,16 @@ import com.intellij.openapi.util.Key; import com.intellij.openapi.util.text.StringUtil; import com.intellij.ui.JBColor; import com.intellij.util.containers.ContainerUtil; +import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.awt.*; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Supplier; @@ -131,7 +132,7 @@ public final class ColoredOutputTypeRegistryImpl extends ColoredOutputTypeRegist } private static Color getColorByKey(TextAttributesKey colorKey) { - return JBColor.lazy(() -> EditorColorsManager.getInstance().getGlobalScheme().getAttributes(colorKey).getForegroundColor()); + return JBColor.lazy(() -> Objects.requireNonNullElse(EditorColorsManager.getInstance().getGlobalScheme().getAttributes(colorKey).getForegroundColor(), UIUtil.getListForeground())); } private static @NotNull Color getDefaultForegroundColor() { @@ -307,7 +308,7 @@ public final class ColoredOutputTypeRegistryImpl extends ColoredOutputTypeRegist return new ConsoleViewContentType(attribute, attrs); } - private static Color getColor(int colorIndex, Color enforcedColor, Supplier getDefaultColor) { + private static Color getColor(int colorIndex, Color enforcedColor, @NotNull Supplier getDefaultColor) { if (enforcedColor != null) { return enforcedColor; } diff --git a/platform/platform-impl/src/com/intellij/ide/ui/UITheme.kt b/platform/platform-impl/src/com/intellij/ide/ui/UITheme.kt index af04505f392b..f5737b523186 100644 --- a/platform/platform-impl/src/com/intellij/ide/ui/UITheme.kt +++ b/platform/platform-impl/src/com/intellij/ide/ui/UITheme.kt @@ -391,7 +391,7 @@ private fun addPattern(key: String?, value: Any?, defaults: UIDefaults) { } } -internal class IJColorUIResource(color: Color?, private val name: String) : JBColor(Supplier { color }), UIResource { +internal class IJColorUIResource(color: Color, private val name: String) : JBColor(Supplier { color }), UIResource { override fun getName(): String = name override fun toString(): String = "IJColorUIResource(color=${super.toString()}, name=$name)" diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/TextEditorWithPreview.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/TextEditorWithPreview.java index 4f9f43e22bc3..1e2c34a4ac7e 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/TextEditorWithPreview.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/TextEditorWithPreview.java @@ -47,6 +47,7 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.HashMap; import java.util.Map; +import java.util.Objects; import java.util.function.Supplier; import static com.intellij.openapi.actionSystem.ActionPlaces.TEXT_EDITOR_WITH_PREVIEW; @@ -144,7 +145,7 @@ public class TextEditorWithPreview extends UserDataHolderBase implements TextEdi mySplitter.setFirstComponent(myEditor.getComponent()); mySplitter.setSecondComponent(myPreview.getComponent()); mySplitter.setDividerWidth(ExperimentalUI.isNewUI() ? 1 : 2); // We're using OnePixelSplitter, but it actually supports wider dividers. - mySplitter.getDivider().setBackground(JBColor.lazy(() -> EditorColorsManager.getInstance().getGlobalScheme().getColor(EditorColors.PREVIEW_BORDER_COLOR))); + mySplitter.getDivider().setBackground(JBColor.lazy(() -> Objects.requireNonNullElse(EditorColorsManager.getInstance().getGlobalScheme().getColor(EditorColors.PREVIEW_BORDER_COLOR), UIUtil.getPanelBackground()))); myToolbarWrapper = createSplitEditorToolbar(mySplitter); diff --git a/platform/platform-impl/src/com/intellij/ui/components/DefaultLinkButtonUI.kt b/platform/platform-impl/src/com/intellij/ui/components/DefaultLinkButtonUI.kt index c3ba657cafab..20e55b844cb6 100644 --- a/platform/platform-impl/src/com/intellij/ui/components/DefaultLinkButtonUI.kt +++ b/platform/platform-impl/src/com/intellij/ui/components/DefaultLinkButtonUI.kt @@ -190,7 +190,7 @@ private fun getTextColor(button: AbstractButton) = when { else -> button.foreground ?: getLinkColor(button) } -private fun getLinkColor(button: AbstractButton) = when { +private fun getLinkColor(button: AbstractButton): Color = when { isPressed(button) -> Link.Foreground.PRESSED isHovered(button) -> Link.Foreground.HOVERED isVisited(button) -> Link.Foreground.VISITED diff --git a/platform/platform-impl/src/com/intellij/util/ui/ButtonlessScrollBarUI.java b/platform/platform-impl/src/com/intellij/util/ui/ButtonlessScrollBarUI.java index 41e7d7ea1ee7..49c8b59d16de 100644 --- a/platform/platform-impl/src/com/intellij/util/ui/ButtonlessScrollBarUI.java +++ b/platform/platform-impl/src/com/intellij/util/ui/ButtonlessScrollBarUI.java @@ -15,6 +15,7 @@ import com.intellij.ui.scale.JBUIScale; import com.intellij.util.Alarm; import com.intellij.util.MethodHandleUtil; import com.intellij.util.concurrency.SynchronizedClearableLazy; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; @@ -42,7 +43,7 @@ public class ButtonlessScrollBarUI extends BasicScrollBarUI { return jbColor(Gray._230, UIUtil.getListBackground()); } - private JBColor jbColor(final Color regular, final Color dark) { + private JBColor jbColor(@NotNull Color regular, @NotNull Color dark) { return JBColor.lazy(() -> isDark() ? dark : regular); } diff --git a/platform/util/ui/src/com/intellij/ui/ColorUtil.java b/platform/util/ui/src/com/intellij/ui/ColorUtil.java index cfd7942091a1..606e242ef03c 100644 --- a/platform/util/ui/src/com/intellij/ui/ColorUtil.java +++ b/platform/util/ui/src/com/intellij/ui/ColorUtil.java @@ -111,7 +111,7 @@ public final class ColorUtil { }); } - private static Color wrap(@NotNull Color color, Supplier func) { + private static Color wrap(@NotNull Color color, @NotNull Supplier func) { return color instanceof JBColor ? JBColor.lazy(func) : func.get(); } @@ -121,7 +121,7 @@ public final class ColorUtil { } public static @NotNull Color shift(final @NotNull Color c, final double d) { - Supplier func = () -> new Color(shift(c.getRed(), d), shift(c.getGreen(), d), shift(c.getBlue(), d), c.getAlpha()); + Supplier<@NotNull Color> func = () -> new Color(shift(c.getRed(), d), shift(c.getGreen(), d), shift(c.getBlue(), d), c.getAlpha()); return wrap(c, func); } @@ -138,7 +138,7 @@ public final class ColorUtil { public static @NotNull Color toAlpha(@Nullable Color color, final int a) { final Color c = color == null ? Color.black : color; - Supplier func = () -> new Color(c.getRed(), c.getGreen(), c.getBlue(), a); + Supplier<@NotNull Color> func = () -> new Color(c.getRed(), c.getGreen(), c.getBlue(), a); return wrap(c, func); } diff --git a/platform/util/ui/src/com/intellij/ui/JBColor.java b/platform/util/ui/src/com/intellij/ui/JBColor.java index 4b97b0890a1a..36c067232179 100644 --- a/platform/util/ui/src/com/intellij/ui/JBColor.java +++ b/platform/util/ui/src/com/intellij/ui/JBColor.java @@ -51,7 +51,7 @@ public class JBColor extends Color { } @SuppressWarnings("LambdaUnfriendlyMethodOverload") - protected JBColor(@NotNull Supplier function) { + protected JBColor(@NotNull Supplier function) { super(0); name = null; defaultColor = null; @@ -80,7 +80,8 @@ public class JBColor extends Color { func = null; } - public static JBColor lazy(@NotNull Supplier supplier) { + @NotNull + public static JBColor lazy(@NotNull Supplier supplier) { return new JBColor(supplier); } diff --git a/platform/util/ui/src/com/intellij/ui/MixedColorProducer.java b/platform/util/ui/src/com/intellij/ui/MixedColorProducer.java index c49e4e47d979..9155058494f9 100644 --- a/platform/util/ui/src/com/intellij/ui/MixedColorProducer.java +++ b/platform/util/ui/src/com/intellij/ui/MixedColorProducer.java @@ -10,8 +10,8 @@ import java.util.function.Supplier; /** * This is a color producer that allows dynamically mix two colors. */ -public final class MixedColorProducer implements Supplier { - private final Couple couple; +public final class MixedColorProducer implements Supplier<@NotNull Color> { + private final Couple<@NotNull Color> couple; private double mixer; private Color cached; private int argb0; @@ -68,10 +68,11 @@ public final class MixedColorProducer implements Supplier { if (mixer >= 1) return couple.second; updateFirstARGB(); updateSecondARGB(); - if (cached == null) { + Color result = cached; + if (result == null) { //noinspection UseJBColor - cached = new Color(mix(16), mix(8), mix(0), mix(24)); + cached = result = new Color(mix(16), mix(8), mix(0), mix(24)); } - return cached; + return result; } } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebuggerEditorBase.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebuggerEditorBase.java index d096e7ed7782..0f9448ad63d6 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebuggerEditorBase.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebuggerEditorBase.java @@ -61,9 +61,7 @@ import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.lang.ref.WeakReference; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; +import java.util.*; import java.util.List; public abstract class XDebuggerEditorBase implements Expandable { @@ -153,7 +151,7 @@ public abstract class XDebuggerEditorBase implements Expandable { protected JComponent addChooser(JComponent component) { BorderLayoutPanel panel = JBUI.Panels.simplePanel(component); - panel.setBackground(JBColor.lazy(() -> component.getBackground())); + panel.setBackground(JBColor.lazy(() -> Objects.requireNonNullElse(component.getBackground(), UIUtil.getPanelBackground()))); panel.addToRight(myLanguageChooser); return panel; }