From a629fb5f14ce7c998009427fca67e47b159993ea Mon Sep 17 00:00:00 2001 From: Kirill Kalishev Date: Fri, 16 Jul 2010 15:52:34 +0400 Subject: [PATCH] IDEA-25304 White background in messages (nimbus) --- .../ide/util/NavigationItemListCellRenderer.java | 11 ++++++++--- .../intellij/ide/util/PsiElementModuleRenderer.java | 8 +++++++- .../ui/components/panels/NonOpaquePanel.java | 12 ++++++++++++ 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/util/NavigationItemListCellRenderer.java b/platform/lang-impl/src/com/intellij/ide/util/NavigationItemListCellRenderer.java index 6c3ed97da272..cdbf6f125a2a 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/NavigationItemListCellRenderer.java +++ b/platform/lang-impl/src/com/intellij/ide/util/NavigationItemListCellRenderer.java @@ -34,13 +34,16 @@ import com.intellij.psi.util.PsiUtilBase; import com.intellij.ui.ColoredListCellRenderer; import com.intellij.ui.FileColorManager; import com.intellij.ui.SimpleTextAttributes; +import com.intellij.ui.components.panels.NonOpaquePanel; +import com.intellij.ui.components.panels.OpaquePanel; import com.intellij.util.IconUtil; import com.intellij.util.ui.UIUtil; import javax.swing.*; +import javax.swing.border.LineBorder; import java.awt.*; -public class NavigationItemListCellRenderer extends JPanel implements ListCellRenderer { +public class NavigationItemListCellRenderer extends OpaquePanel implements ListCellRenderer { public NavigationItemListCellRenderer() { super(new BorderLayout()); } @@ -64,6 +67,8 @@ public class NavigationItemListCellRenderer extends JPanel implements ListCellRe final Color listBg = leftCellRendererComponent.getBackground(); add(leftCellRendererComponent, BorderLayout.WEST); + setBackground(isSelected ? UIUtil.getListSelectionBackground() : UIUtil.getListBackground()); + if (hasRightRenderer){ final DefaultListCellRenderer moduleRenderer = factory.getModuleRenderer(); @@ -71,13 +76,13 @@ public class NavigationItemListCellRenderer extends JPanel implements ListCellRe moduleRenderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); rightCellRendererComponent.setBackground(listBg); add(rightCellRendererComponent, BorderLayout.EAST); - final JPanel spacer = new JPanel(); + final JPanel spacer = new NonOpaquePanel(); + final Dimension size = rightCellRendererComponent.getSize(); spacer.setSize(new Dimension((int)(size.width * 0.015 + leftCellRendererComponent.getSize().width * 0.015), size.height)); spacer.setBackground(isSelected ? UIUtil.getListSelectionBackground() : listBg); add(spacer, BorderLayout.CENTER); } - setBackground(isSelected ? UIUtil.getListSelectionBackground() : UIUtil.getListBackground()); return this; } diff --git a/platform/lang-impl/src/com/intellij/ide/util/PsiElementModuleRenderer.java b/platform/lang-impl/src/com/intellij/ide/util/PsiElementModuleRenderer.java index cbbdb541b39d..7503714e8a58 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/PsiElementModuleRenderer.java +++ b/platform/lang-impl/src/com/intellij/ide/util/PsiElementModuleRenderer.java @@ -27,6 +27,7 @@ import com.intellij.psi.PsiFile; import com.intellij.util.ui.UIUtil; import javax.swing.*; +import javax.swing.border.LineBorder; import java.awt.*; public class PsiElementModuleRenderer extends DefaultListCellRenderer{ @@ -112,9 +113,14 @@ public class PsiElementModuleRenderer extends DefaultListCellRenderer{ setText(value == null ? "" : value.toString()); }*/ setText(myText); - setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 2)); + //setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 2)); setHorizontalTextPosition(SwingConstants.LEFT); setBackground(selected ? UIUtil.getListSelectionBackground() : UIUtil.getListBackground()); setForeground(selected ? UIUtil.getListSelectionForeground() : UIUtil.getInactiveTextColor()); + + if (UIUtil.isUnderNimbusLookAndFeel()) { + setOpaque(false); + } + } } diff --git a/platform/platform-api/src/com/intellij/ui/components/panels/NonOpaquePanel.java b/platform/platform-api/src/com/intellij/ui/components/panels/NonOpaquePanel.java index 06a7e3649545..f3c521a5eb47 100644 --- a/platform/platform-api/src/com/intellij/ui/components/panels/NonOpaquePanel.java +++ b/platform/platform-api/src/com/intellij/ui/components/panels/NonOpaquePanel.java @@ -15,11 +15,15 @@ */ package com.intellij.ui.components.panels; +import com.intellij.util.ui.UIUtil; + import javax.swing.*; import java.awt.*; public class NonOpaquePanel extends Wrapper { + private static final Color TRANSPARENT = new Color(0, 0, 0, 0); + public NonOpaquePanel() { setOpaque(false); } @@ -49,4 +53,12 @@ public class NonOpaquePanel extends Wrapper { setOpaque(false); } + @Override + public void setOpaque(boolean isOpaque) { + super.setOpaque(isOpaque); + + if (!isOpaque && UIUtil.isUnderNimbusLookAndFeel()) { + setBackground(TRANSPARENT); + } + } }