diff --git a/platform/lang-impl/src/com/intellij/ide/util/ModuleRendererFactory.java b/platform/lang-impl/src/com/intellij/ide/util/ModuleRendererFactory.java index 40f9b2fb05cc..50292e8fff91 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/ModuleRendererFactory.java +++ b/platform/lang-impl/src/com/intellij/ide/util/ModuleRendererFactory.java @@ -29,4 +29,8 @@ public abstract class ModuleRendererFactory { } public abstract DefaultListCellRenderer getModuleRenderer(); + + public boolean rendersLocationString() { + return false; + } } 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 e283c158399f..6c3ed97da272 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/NavigationItemListCellRenderer.java +++ b/platform/lang-impl/src/com/intellij/ide/util/NavigationItemListCellRenderer.java @@ -55,12 +55,18 @@ public class NavigationItemListCellRenderer extends JPanel implements ListCellRe Font editorFont = new Font(scheme.getEditorFontName(), Font.PLAIN, scheme.getEditorFontSize()); setFont(editorFont); removeAll(); - final Component leftCellRendererComponent = - new LeftRenderer().getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); + + final boolean hasRightRenderer = UISettings.getInstance().SHOW_ICONS_IN_QUICK_NAVIGATION; + final ModuleRendererFactory factory = ModuleRendererFactory.getInstance(); + + final LeftRenderer left = new LeftRenderer(!hasRightRenderer || !factory.rendersLocationString()); + final Component leftCellRendererComponent = left.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); final Color listBg = leftCellRendererComponent.getBackground(); add(leftCellRendererComponent, BorderLayout.WEST); - if (UISettings.getInstance().SHOW_ICONS_IN_QUICK_NAVIGATION){ - final DefaultListCellRenderer moduleRenderer = ModuleRendererFactory.getInstance().getModuleRenderer(); + + if (hasRightRenderer){ + final DefaultListCellRenderer moduleRenderer = factory.getModuleRenderer(); + final Component rightCellRendererComponent = moduleRenderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); rightCellRendererComponent.setBackground(listBg); @@ -76,6 +82,12 @@ public class NavigationItemListCellRenderer extends JPanel implements ListCellRe } private static class LeftRenderer extends ColoredListCellRenderer { + public final boolean myRenderLocation; + + public LeftRenderer(boolean renderLocation) { + myRenderLocation = renderLocation; + } + protected void customizeCellRenderer( JList list, Object value, @@ -129,10 +141,12 @@ public class NavigationItemListCellRenderer extends JPanel implements ListCellRe append(name, nameAttributes); setIcon(presentation.getIcon(false)); - String containerText = presentation.getLocationString(); + if (myRenderLocation) { + String containerText = presentation.getLocationString(); - if (containerText != null && containerText.length() > 0) { - append(" " + containerText, new SimpleTextAttributes(Font.PLAIN, Color.GRAY)); + if (containerText != null && containerText.length() > 0) { + append(" " + containerText, new SimpleTextAttributes(Font.PLAIN, Color.GRAY)); + } } } else { diff --git a/platform/lang-impl/src/com/intellij/ide/util/PlatformModuleRendererFactory.java b/platform/lang-impl/src/com/intellij/ide/util/PlatformModuleRendererFactory.java index cd47f9dcd21a..06c1483059e0 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/PlatformModuleRendererFactory.java +++ b/platform/lang-impl/src/com/intellij/ide/util/PlatformModuleRendererFactory.java @@ -16,6 +16,8 @@ package com.intellij.ide.util; +import com.intellij.navigation.ItemPresentation; +import com.intellij.navigation.NavigationItem; import com.intellij.util.ui.UIUtil; import javax.swing.*; @@ -33,7 +35,20 @@ public class PlatformModuleRendererFactory extends ModuleRendererFactory { final boolean isSelected, final boolean cellHasFocus) { final Component component = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); - setText(""); + + String text = ""; + if (value instanceof NavigationItem) { + final ItemPresentation presentation = ((NavigationItem)value).getPresentation(); + if (presentation != null) { + String containerText = presentation.getLocationString(); + if (containerText != null && containerText.length() > 0) { + text = " " + containerText; + } + } + } + + + setText(text); setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 2)); setHorizontalTextPosition(SwingConstants.LEFT); setBackground(isSelected ? UIUtil.getListSelectionBackground() : UIUtil.getListBackground()); @@ -42,4 +57,9 @@ public class PlatformModuleRendererFactory extends ModuleRendererFactory { } }; } + + @Override + public boolean rendersLocationString() { + return true; + } }