From dd81e040fdfaab626a67940260fd63ab30063463 Mon Sep 17 00:00:00 2001 From: "Vitaliy.Bibaev" Date: Thu, 11 Jan 2018 18:49:03 +0300 Subject: [PATCH] Report statistics of stream debugger usage --- .../streams/action/TraceStreamAction.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/plugins/stream-debugger/src/com/intellij/debugger/streams/action/TraceStreamAction.java b/plugins/stream-debugger/src/com/intellij/debugger/streams/action/TraceStreamAction.java index b7f36dd1e1a8..ded87225648e 100644 --- a/plugins/stream-debugger/src/com/intellij/debugger/streams/action/TraceStreamAction.java +++ b/plugins/stream-debugger/src/com/intellij/debugger/streams/action/TraceStreamAction.java @@ -15,6 +15,7 @@ import com.intellij.debugger.streams.ui.impl.ElementChooserImpl; import com.intellij.debugger.streams.ui.impl.EvaluationAwareTraceWindow; import com.intellij.debugger.streams.wrapper.StreamChain; import com.intellij.debugger.streams.wrapper.StreamChainBuilder; +import com.intellij.internal.statistic.UsageTrigger; import com.intellij.lang.java.JavaLanguage; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; @@ -40,6 +41,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; +import java.util.Locale; import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -54,6 +56,7 @@ public class TraceStreamAction extends AnAction { private final List mySupportedLibraries = LibrarySupportProvider.getList().stream().map(SupportedLibrary::new).collect(Collectors.toList()); private final Set mySupportedLanguages = StreamEx.of(mySupportedLibraries).map(x -> x.languageId).toSet(); + private int myLastVisitedPsiElementHash; @Override public void update(@NotNull AnActionEvent e) { @@ -65,9 +68,16 @@ public class TraceStreamAction extends AnAction { presentation.setEnabled(false); } else { - if (mySupportedLanguages.contains(element.getLanguage().getID())) { + final String languageId = element.getLanguage().getID(); + if (mySupportedLanguages.contains(languageId)) { presentation.setVisible(true); - presentation.setEnabled(isChainExists(element)); + final boolean chainExists = isChainExists(element); + presentation.setEnabled(chainExists); + final int elementHash = System.identityHashCode(element); + if (chainExists && myLastVisitedPsiElementHash != elementHash) { + UsageTrigger.trigger("debugger.streams." + languageId.toLowerCase(Locale.US) + ".activated"); + myLastVisitedPsiElementHash = elementHash; + } } else { presentation.setEnabledAndVisible(false); @@ -129,6 +139,7 @@ public class TraceStreamAction extends AnAction { private static void runTrace(@NotNull StreamChain chain, @NotNull SupportedLibrary library, @NotNull XDebugSession session) { final EvaluationAwareTraceWindow window = new EvaluationAwareTraceWindow(session, chain); + UsageTrigger.trigger("debugger.streams." + library.languageId.toLowerCase(Locale.US) + ".used"); ApplicationManager.getApplication().invokeLater(window::show); final Project project = session.getProject(); final TraceExpressionBuilder expressionBuilder = library.createExpressionBuilder(project); -- 2.32.0