From 60f764e8b642b21e53c8f2a8809afcdab2d8404e Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Tue, 17 Aug 2010 20:55:32 +0400 Subject: [PATCH] allow searching by container text in goto declaration popup (PY-1533 & friends); don't show location twice in the same popup in platform products --- .../navigation/NavigationUtil.java | 2 +- .../ide/util/PsiElementListCellRenderer.java | 20 ++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/navigation/NavigationUtil.java b/platform/lang-impl/src/com/intellij/codeInsight/navigation/NavigationUtil.java index 941246d16fa8..ab6b5cb31da8 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/navigation/NavigationUtil.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/navigation/NavigationUtil.java @@ -82,7 +82,7 @@ public final class NavigationUtil { if (title != null) { builder.setTitle(title); } - renderer.installSpeedSearch(builder); + renderer.installSpeedSearch(builder, true); return builder.setItemChoosenCallback(runnable).createPopup(); } diff --git a/platform/lang-impl/src/com/intellij/ide/util/PsiElementListCellRenderer.java b/platform/lang-impl/src/com/intellij/ide/util/PsiElementListCellRenderer.java index 3749ae6e3f96..2f1fa958d7f1 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/PsiElementListCellRenderer.java +++ b/platform/lang-impl/src/com/intellij/ide/util/PsiElementListCellRenderer.java @@ -155,7 +155,12 @@ public abstract class PsiElementListCellRenderer extends J @Nullable protected DefaultListCellRenderer getRightCellRenderer() { if (UISettings.getInstance().SHOW_ICONS_IN_QUICK_NAVIGATION) { - return ModuleRendererFactory.getInstance().getModuleRenderer(); + final DefaultListCellRenderer renderer = ModuleRendererFactory.getInstance().getModuleRenderer(); + if (renderer instanceof PlatformModuleRendererFactory.PlatformModuleRenderer) { + // it won't display any new information + return null; + } + return renderer; } return null; } @@ -187,10 +192,18 @@ public abstract class PsiElementListCellRenderer extends J } public void installSpeedSearch(PopupChooserBuilder builder) { + installSpeedSearch(builder, false); + } + + public void installSpeedSearch(PopupChooserBuilder builder, final boolean includeContainerText) { builder.setFilteringEnabled(new Function() { public String fun(Object o) { if (o instanceof PsiElement) { - return PsiElementListCellRenderer.this.getElementText((T)o); + final String elementText = PsiElementListCellRenderer.this.getElementText((T)o); + if (includeContainerText) { + return elementText + " " + getContainerText((T) o, elementText); + } + return elementText; } else { return o.toString(); @@ -207,7 +220,8 @@ public abstract class PsiElementListCellRenderer extends J new ListSpeedSearch(list) { protected String getElementText(Object o) { if (o instanceof PsiElement) { - return PsiElementListCellRenderer.this.getElementText((T)o); + final String elementText = PsiElementListCellRenderer.this.getElementText((T)o); + return elementText + " " + getContainerText((T) o, elementText); } else { return o.toString();