mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Similar usages: statistics for actions and load-more events
GitOrigin-RevId: 1bbb19e4078f6605c183670a2c2cc817f9129561
This commit is contained in:
committed by
intellij-monorepo-bot
parent
a9e7ed216e
commit
09a53cbb15
@@ -1121,6 +1121,7 @@
|
||||
<statistics.counterUsagesCollector implementationClass="com.intellij.ide.actions.runAnything.RunAnythingUsageCollector"/>
|
||||
<statistics.counterUsagesCollector implementationClass="com.intellij.codeInsight.template.impl.SurroundWithLogger"/>
|
||||
<statistics.counterUsagesCollector implementationClass="com.intellij.find.FindUsagesCollector"/>
|
||||
<statistics.counterUsagesCollector implementationClass="com.intellij.usages.similarity.statistics.SimilarUsagesCollector"/>
|
||||
<statistics.counterUsagesCollector implementationClass="com.intellij.ide.actions.CreateDirectoryUsageCollector"/>
|
||||
<statistics.counterUsagesCollector implementationClass="com.intellij.refactoring.ui.RefactoringDialogUsageCollector"/>
|
||||
<statistics.counterUsagesCollector implementationClass="com.intellij.ide.projectView.impl.ProjectViewImpl$ProjectViewPaneChangesCollector"/>
|
||||
|
||||
+7
-1
@@ -29,6 +29,7 @@ import com.intellij.usages.UsageView;
|
||||
import com.intellij.usages.impl.UsageViewImpl;
|
||||
import com.intellij.usages.similarity.clustering.ClusteringSearchSession;
|
||||
import com.intellij.usages.similarity.clustering.UsageCluster;
|
||||
import com.intellij.usages.similarity.statistics.SimilarUsagesCollector;
|
||||
import com.intellij.usages.similarity.usageAdapter.SimilarUsage;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.ui.JBUI;
|
||||
@@ -59,6 +60,7 @@ public class MostCommonUsagePatternsComponent extends SimpleToolWindowPanel impl
|
||||
|
||||
public MostCommonUsagePatternsComponent(@NotNull UsageViewImpl usageView, @NotNull ClusteringSearchSession session) {
|
||||
super(true);
|
||||
SimilarUsagesCollector.logMoreSimilarUsagePatternsShow(session.hashCode());
|
||||
mySession = session;
|
||||
myUsageView = usageView;
|
||||
myProject = usageView.getProject();
|
||||
@@ -72,6 +74,8 @@ public class MostCommonUsagePatternsComponent extends SimpleToolWindowPanel impl
|
||||
new RefreshAction(IdeBundle.messagePointer("action.refresh"), IdeBundle.messagePointer("action.refresh"), AllIcons.Actions.Refresh) {
|
||||
@Override
|
||||
public void actionPerformed(@NotNull AnActionEvent e) {
|
||||
SimilarUsagesCollector.logMostCommonUsagePatternsRefreshClicked(mySession.hashCode());
|
||||
mySortedClusters.set(null);
|
||||
myMainPanel.removeAll();
|
||||
myMainPanel.revalidate();
|
||||
mySelectedUsages = myUsageView.getSelectedUsages();
|
||||
@@ -106,6 +110,7 @@ public class MostCommonUsagePatternsComponent extends SimpleToolWindowPanel impl
|
||||
lazyLoadingScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
|
||||
BoundedRangeModelThresholdListener.install(lazyLoadingScrollPane.getVerticalScrollBar(), () -> {
|
||||
if (!mySortedClusters.isNull()) {
|
||||
SimilarUsagesCollector.logMoreClustersLoaded(mySession.hashCode());
|
||||
mySortedClusters.get().stream().skip(myAlreadyRenderedSnippets).limit(CLUSTER_LIMIT).forEach(cluster -> {
|
||||
renderClusterDescription(cluster.getUsages());
|
||||
});
|
||||
@@ -128,7 +133,8 @@ public class MostCommonUsagePatternsComponent extends SimpleToolWindowPanel impl
|
||||
private @NotNull ActionLink createOpenSimilarUsagesActionLink(@NotNull UsageInfo info, @NotNull Set<SimilarUsage> usagesToRender) {
|
||||
final ActionLink actionLink =
|
||||
new ActionLink(UsageViewBundle.message("similar.usages.show.0.similar.usages.title", usagesToRender.size() - 1), e -> {
|
||||
final SimilarUsagesComponent similarComponent = new SimilarUsagesComponent(info, this);
|
||||
SimilarUsagesCollector.logShowSimilarUsagesLinkClicked(mySession.hashCode());
|
||||
final SimilarUsagesComponent similarComponent = new SimilarUsagesComponent(mySession, info, this);
|
||||
removeAll();
|
||||
setToolbar(new SimilarUsagesToolbar(similarComponent, UsageViewBundle.message("0.similar.usages", usagesToRender.size() - 1),
|
||||
myRefreshAction,
|
||||
|
||||
+7
-1
@@ -9,6 +9,8 @@ import com.intellij.ui.components.panels.VerticalLayout;
|
||||
import com.intellij.usageView.UsageInfo;
|
||||
import com.intellij.usageView.UsageViewBundle;
|
||||
import com.intellij.usages.UsageInfo2UsageAdapter;
|
||||
import com.intellij.usages.similarity.clustering.ClusteringSearchSession;
|
||||
import com.intellij.usages.similarity.statistics.SimilarUsagesCollector;
|
||||
import com.intellij.usages.similarity.usageAdapter.SimilarUsage;
|
||||
import com.intellij.util.ui.JBUI;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
@@ -27,8 +29,11 @@ public class SimilarUsagesComponent extends JPanel implements Disposable {
|
||||
private int alreadyShown = 0;
|
||||
private final @NotNull UsageInfo myOriginalUsage;
|
||||
|
||||
public SimilarUsagesComponent(@NotNull UsageInfo originalUsage, @NotNull Disposable parent) {
|
||||
private final @NotNull ClusteringSearchSession mySession;
|
||||
|
||||
public SimilarUsagesComponent(@NotNull ClusteringSearchSession session, @NotNull UsageInfo originalUsage, @NotNull Disposable parent) {
|
||||
myOriginalUsage = originalUsage;
|
||||
mySession = session;
|
||||
setLayout(new VerticalLayout(0));
|
||||
setBackground(UIUtil.getTextFieldBackground());
|
||||
Disposer.register(parent, this);
|
||||
@@ -85,6 +90,7 @@ public class SimilarUsagesComponent extends JPanel implements Disposable {
|
||||
renderOriginalUsage();
|
||||
renderSimilarUsages(usagesToRender);
|
||||
BoundedRangeModelThresholdListener.install(similarUsagesScrollPane.getVerticalScrollBar(), () -> {
|
||||
SimilarUsagesCollector.logMoreUsagesLoaded(mySession.hashCode());
|
||||
renderSimilarUsages(usagesToRender);
|
||||
return Unit.INSTANCE;
|
||||
});
|
||||
|
||||
+6
-1
@@ -11,7 +11,9 @@ import com.intellij.ui.components.AnActionLink;
|
||||
import com.intellij.usageView.UsageInfo;
|
||||
import com.intellij.usageView.UsageViewBundle;
|
||||
import com.intellij.usages.UsageView;
|
||||
import com.intellij.usages.similarity.clustering.ClusteringSearchSession;
|
||||
import com.intellij.usages.similarity.clustering.UsageCluster;
|
||||
import com.intellij.usages.similarity.statistics.SimilarUsagesCollector;
|
||||
import com.intellij.usages.similarity.usageAdapter.SimilarUsage;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
@@ -78,7 +80,10 @@ public class UsagePreviewToolbarWithSimilarUsagesLink extends JPanel {
|
||||
previewPanel.releaseEditor();
|
||||
UsageInfo firstSelectedInfo = ContainerUtil.getFirstItem(infos);
|
||||
assert firstSelectedInfo != null;
|
||||
final SimilarUsagesComponent similarComponent = new SimilarUsagesComponent(firstSelectedInfo, previewPanel);
|
||||
ClusteringSearchSession session = ContainerUtil.getFirstItem(usages).getClusteringSession();
|
||||
SimilarUsagesCollector.logLinkToSimilarUsagesLinkFromUsagePreviewClicked(session.hashCode());
|
||||
final SimilarUsagesComponent similarComponent =
|
||||
new SimilarUsagesComponent(session, firstSelectedInfo, previewPanel);
|
||||
previewPanel.add(
|
||||
new SimilarUsagesToolbar(similarComponent, UsageViewBundle.message("0.similar.usages", usages.size() - 1), null,
|
||||
new AnActionLink(UsageViewBundle.message("0.similar.usages.back.to.usage.preview", UIUtil.leftArrow()),
|
||||
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.usages.similarity.statistics
|
||||
|
||||
import com.intellij.internal.statistic.eventLog.EventLogGroup
|
||||
import com.intellij.internal.statistic.eventLog.events.EventFields
|
||||
import com.intellij.internal.statistic.service.fus.collectors.CounterUsagesCollector
|
||||
|
||||
class SimilarUsagesCollector : CounterUsagesCollector() {
|
||||
override fun getGroup(): EventLogGroup = GROUP
|
||||
|
||||
companion object {
|
||||
private val GROUP = EventLogGroup("similar.usages", 1)
|
||||
private val SESSION_ID = EventFields.Int("id")
|
||||
private val MOST_COMMON_USAGE_PATTERNS_SHOWN = GROUP.registerEvent("most.common.usages.shown", SESSION_ID)
|
||||
private val MOST_COMMON_USAGE_PATTERNS_REFRESH_CLICKED = GROUP.registerEvent("most.common.usage.patterns.refresh.clicked", SESSION_ID)
|
||||
private val LINK_TO_SIMILAR_USAGES_FROM_USAGE_PREVIEW_CLICKED = GROUP.registerEvent("link.to.similar.usage.clicked", SESSION_ID)
|
||||
private val SHOW_SIMILAR_USAGES_LINK_CLICKED = GROUP.registerEvent("show.similar.usages.link.clicked", SESSION_ID)
|
||||
private val MORE_CLUSTERS_LOADED = GROUP.registerEvent("more.clusters.loaded", SESSION_ID)
|
||||
private val MORE_USAGES_LOADED = GROUP.registerEvent("more.usages.loaded", SESSION_ID)
|
||||
|
||||
@JvmStatic
|
||||
fun logMoreSimilarUsagePatternsShow(sessionId: Int) {
|
||||
MOST_COMMON_USAGE_PATTERNS_SHOWN.log(sessionId)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun logMostCommonUsagePatternsRefreshClicked(sessionId: Int) {
|
||||
MOST_COMMON_USAGE_PATTERNS_REFRESH_CLICKED.log(sessionId)
|
||||
}
|
||||
@JvmStatic
|
||||
fun logLinkToSimilarUsagesLinkFromUsagePreviewClicked(sessionId: Int) {
|
||||
LINK_TO_SIMILAR_USAGES_FROM_USAGE_PREVIEW_CLICKED.log(sessionId)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun logShowSimilarUsagesLinkClicked(sessionId: Int) {
|
||||
SHOW_SIMILAR_USAGES_LINK_CLICKED.log(sessionId)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun logMoreClustersLoaded(sessionId: Int) {
|
||||
MORE_CLUSTERS_LOADED.log(sessionId)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun logMoreUsagesLoaded(sessionId: Int) {
|
||||
MORE_USAGES_LOADED.log(sessionId)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user