From 842dea8f010f0187c766e9d1715e677f130605fb Mon Sep 17 00:00:00 2001 From: Andrey Sokolov Date: Mon, 27 Jun 2022 21:29:49 +0200 Subject: [PATCH] MLP-6 Better presentation for back button GitOrigin-RevId: df114a88f6a0a558f556fbfe86f96f490c1fdf47 --- .../MostCommonUsagePatternsComponent.java | 51 ++++++++----------- .../messages/UsageViewBundle.properties | 1 + 2 files changed, 22 insertions(+), 30 deletions(-) diff --git a/platform/usageView-impl/src/com/intellij/find/findUsages/similarity/MostCommonUsagePatternsComponent.java b/platform/usageView-impl/src/com/intellij/find/findUsages/similarity/MostCommonUsagePatternsComponent.java index 16964499a987..91e05baf2b58 100644 --- a/platform/usageView-impl/src/com/intellij/find/findUsages/similarity/MostCommonUsagePatternsComponent.java +++ b/platform/usageView-impl/src/com/intellij/find/findUsages/similarity/MostCommonUsagePatternsComponent.java @@ -50,7 +50,7 @@ public class MostCommonUsagePatternsComponent extends SimpleToolWindowPanel impl private final @NotNull Project myProject; private final @NotNull UsageViewImpl myUsageView; private final @NotNull JBPanelWithEmptyText myMainPanel; - private final @NotNull JScrollPane myScrollPane; + private final @NotNull JScrollPane myMostCommonUsageScrollPane; private final @NotNull SimpleColoredComponent myResultsText; private @NotNull Set mySelectedUsages; private @Nullable ClusteringSearchSession mySession; @@ -70,10 +70,10 @@ public class MostCommonUsagePatternsComponent extends SimpleToolWindowPanel impl myMainPanel.setLayout(new VerticalLayout(0)); myMainPanel.setBackground(UIUtil.getTextFieldBackground()); addMostCommonUsagesForSelectedGroups(); - myScrollPane = ScrollPaneFactory.createScrollPane(myMainPanel, true); - myScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); + myMostCommonUsageScrollPane = ScrollPaneFactory.createScrollPane(myMainPanel, true); + myMostCommonUsageScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); revalidate(); - setContent(myScrollPane); + setContent(myMostCommonUsageScrollPane); } @Nullable @@ -96,7 +96,7 @@ public class MostCommonUsagePatternsComponent extends SimpleToolWindowPanel impl mySelectedUsages = myUsageView.getSelectedUsages(); updateResultsText(UsageViewBundle.message("similar.usages.0.results", mySelectedUsages.size())); addMostCommonUsagesForSelectedGroups(); - setContent(myScrollPane); + setContent(myMostCommonUsageScrollPane); } @Override @@ -105,34 +105,28 @@ public class MostCommonUsagePatternsComponent extends SimpleToolWindowPanel impl presentation.setEnabled(true); } }); - actionGroup.add( - new AnAction(IdeBundle.messagePointer("action.Anonymous.text.back"), IdeBundle.messagePointer("action.Anonymous.text.back"), - AllIcons.Actions.Back) { - @Override - public void actionPerformed(@NotNull AnActionEvent e) { - if (myIsShowingSimilarUsages) { - myIsShowingSimilarUsages = false; - updateResultsText(UsageViewBundle.message("similar.usages.0.results", mySelectedUsages.size())); - ActivityTracker.getInstance().inc(); - setContent(myScrollPane); - revalidate(); - } - } - - @Override - public void update(@NotNull AnActionEvent event) { - Presentation presentation = event.getPresentation(); - presentation.setVisible(myIsShowingSimilarUsages); - } - }); ActionToolbar actionToolbar = ActionManager.getInstance().createActionToolbar(SIMILAR_USAGES_PREVIEW_TOOLBAR, actionGroup, true); actionToolbar.getComponent().setBackground(UIUtil.getTextFieldBackground()); actionToolbar.setTargetComponent(this); JPanel toolbar = new JPanel(new FlowLayout(FlowLayout.LEFT)); toolbar.setBackground(UIUtil.getTextFieldBackground()); updateResultsText(UsageViewBundle.message("similar.usages.0.results", mySelectedUsages.size())); + ActionLink backLink = new ActionLink(UsageViewBundle.message("0.similar.usages.back.to.search.results", UIUtil.leftArrow()), e -> { + if (myIsShowingSimilarUsages) { + myIsShowingSimilarUsages = false; + updateResultsText(UsageViewBundle.message("similar.usages.0.results", mySelectedUsages.size())); + setContent(myMostCommonUsageScrollPane); + revalidate(); + } + }) { + @Override + public boolean isVisible() { + return myIsShowingSimilarUsages; + } + }; toolbar.add(myResultsText); toolbar.add(actionToolbar.getComponent()); + toolbar.add(backLink); return toolbar; } @@ -178,7 +172,7 @@ public class MostCommonUsagePatternsComponent extends SimpleToolWindowPanel impl clusterToShow.stream().limit(CLUSTER_LIMIT).forEach(cluster -> { renderClusterDescription(summaryPanel, cluster.getUsages()); }); - final JScrollBar verticalScrollBar = myScrollPane.getVerticalScrollBar(); + final JScrollBar verticalScrollBar = myMostCommonUsageScrollPane.getVerticalScrollBar(); BoundedRangeModelThresholdListener.install(verticalScrollBar, () -> { clusterToShow.stream().skip(myAlreadyRenderedSnippets).limit(CLUSTER_LIMIT).forEach(cluster -> { renderClusterDescription(summaryPanel, cluster.getUsages()); @@ -189,10 +183,7 @@ public class MostCommonUsagePatternsComponent extends SimpleToolWindowPanel impl } private void renderClusterDescription(@NotNull JPanel summaryPanel, @NotNull Collection selectedUsages) { - final Set usageFilteredByGroup = new HashSet<>(); - ApplicationManager.getApplication().runReadAction(() -> { - usageFilteredByGroup.addAll(selectedUsages); - }); + final Set usageFilteredByGroup = new HashSet<>(selectedUsages); SimilarUsage usage = ContainerUtil.getFirstItem(usageFilteredByGroup); if (usage instanceof UsageInfo2UsageAdapter) { final UsageInfo usageInfo = ((UsageInfo2UsageAdapter)usage).getUsageInfo(); diff --git a/platform/usageView/resources/messages/UsageViewBundle.properties b/platform/usageView/resources/messages/UsageViewBundle.properties index fd2a35b3e725..14fd3e265444 100644 --- a/platform/usageView/resources/messages/UsageViewBundle.properties +++ b/platform/usageView/resources/messages/UsageViewBundle.properties @@ -131,6 +131,7 @@ occurrences.found.in.comments.strings.and.non.java.files=Occurrences found in co occurrences.found.in.comments.strings.non.java.files.and.generated.code=Occurrences found in comments, strings, non-code files and generated code similar.usages.tab.name=Similar Usages similar.usages.tab.title=Similar usages +0.similar.usages.back.to.search.results={0} Back to search results similar.usages.the.original.usage.label=(the original usage) similar.usages.0.results={0, number} {0, choice, 1#result|2#results} with similar usages 0.similar.usages={0, number} similar {0, choice, 1#usage|2#usages}