diff --git a/platform/platform-impl/src/com/intellij/ide/actions/RecentLocationsRenderer.java b/platform/platform-impl/src/com/intellij/ide/actions/RecentLocationsRenderer.java index 7620b3089b3c..3560ae659000 100644 --- a/platform/platform-impl/src/com/intellij/ide/actions/RecentLocationsRenderer.java +++ b/platform/platform-impl/src/com/intellij/ide/actions/RecentLocationsRenderer.java @@ -10,7 +10,6 @@ import com.intellij.openapi.fileEditor.impl.IdeDocumentHistoryImpl; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.VerticalFlowLayout; import com.intellij.openapi.util.TextRange; -import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; import com.intellij.ui.*; import com.intellij.ui.speedSearch.SpeedSearch; @@ -47,10 +46,46 @@ class RecentLocationsRenderer extends ColoredListCellRenderer ranges = mySpeedSearch.matchingFragments(text); + IdeDocumentHistoryImpl.PlaceInfo placeInfo = value.getInfo(); + String breadcrumb = RecentLocationsAction.getBreadcrumbs(myProject, placeInfo); + + JComponent title = JBUI.Panels + .simplePanel() + .addToLeft(createBreadcrumbsComponent(list, mySpeedSearch, breadcrumb, background, selected)) + .addToCenter(createTitledSeparator(background)) + .addToRight(createFileNameComponent(list, mySpeedSearch, breadcrumb, placeInfo, selected)) + .withBackground(background); + + JPanel panel = new JPanel(new VerticalFlowLayout(0, 0)); + panel.add(title); + + String text = editor.getDocument().getText(); + if (!StringUtil.isEmpty(text)) { + addEditorComponent(panel, editor, text, background, mySpeedSearch); + } + + return panel; + } + + @NotNull + private static JComponent createTitledSeparator(@NotNull Color background) { + JComponent titledSeparator = new TitledSeparator(); + titledSeparator.setBackground(background); + return titledSeparator; + } + + private static void addEditorComponent(@NotNull JPanel panel, + @NotNull EditorEx editor, + @NotNull String text, + @NotNull Color background, + @NotNull SpeedSearch speedSearch) { + editor.setBackgroundColor(background); + Iterable ranges = speedSearch.matchingFragments(text); if (ranges != null) { selectSearchResultsInEditor(editor, ranges.iterator()); @@ -59,47 +94,24 @@ class RecentLocationsRenderer extends ColoredListCellRenderer list, - @NotNull String breadcrumb, - boolean selected) { + private static SimpleColoredComponent createBreadcrumbsComponent(@NotNull JList list, + @NotNull SpeedSearch speedSearch, + @NotNull String breadcrumb, + @NotNull Color background, + boolean selected) { SimpleColoredComponent breadcrumbTextComponent = new SimpleColoredComponent(); breadcrumbTextComponent.setForeground(TITLE_FOREGROUND_COLOR); + breadcrumbTextComponent.setBackground(background); breadcrumbTextComponent.append(breadcrumb); - Iterable breadCrumbRanges = mySpeedSearch.matchingFragments(breadcrumb); + Iterable breadCrumbRanges = speedSearch.matchingFragments(breadcrumb); if (breadCrumbRanges != null) { SpeedSearchUtil.applySpeedSearchHighlighting(list, breadcrumbTextComponent, true, selected); } @@ -108,16 +120,17 @@ class RecentLocationsRenderer extends ColoredListCellRenderer list, - @NotNull IdeDocumentHistoryImpl.PlaceInfo placeInfo, - @NotNull String breadcrumb, - boolean selected) { + private static SimpleColoredComponent createFileNameComponent(@NotNull JList list, + @NotNull SpeedSearch speedSearch, + @NotNull String breadcrumb, + @NotNull IdeDocumentHistoryImpl.PlaceInfo placeInfo, + boolean selected) { SimpleColoredComponent fileNameComponent = new SimpleColoredComponent(); fileNameComponent.setForeground(TITLE_FOREGROUND_COLOR); if (!StringUtil.equals(breadcrumb, placeInfo.getFile().getName())) { fileNameComponent.append(placeInfo.getFile().getName()); fileNameComponent.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 2)); - Iterable fileNameRanges = mySpeedSearch.matchingFragments(placeInfo.getFile().getName()); + Iterable fileNameRanges = speedSearch.matchingFragments(placeInfo.getFile().getName()); if (fileNameRanges != null) { SpeedSearchUtil.applySpeedSearchHighlighting(list, fileNameComponent, true, selected); } @@ -134,22 +147,6 @@ class RecentLocationsRenderer extends ColoredListCellRenderer