From: Vitaliy.Bibaev Date: Thu, 11 Jan 2018 15:49:03 +0000 (+0300) Subject: Report statistics of stream debugger usage X-Git-Tag: rubymine/181.2671~21 X-Git-Url: https://git.jetbrains.org/?p=idea%2Fcommunity.git;a=commitdiff_plain;h=dd81e040fdfaab626a67940260fd63ab30063463;hp=d705eb3cb095f577387f13c25d1249e1c1783824 Report statistics of stream debugger usage --- 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);