diff --git a/platform/lang-impl/src/com/intellij/webcore/packaging/InstalledPackagesPanel.java b/platform/lang-impl/src/com/intellij/webcore/packaging/InstalledPackagesPanel.java index ef3f9e5c8771..d06492bd1480 100644 --- a/platform/lang-impl/src/com/intellij/webcore/packaging/InstalledPackagesPanel.java +++ b/platform/lang-impl/src/com/intellij/webcore/packaging/InstalledPackagesPanel.java @@ -86,12 +86,14 @@ public class InstalledPackagesPanel extends JPanel { myUpgradeButton = new DumbAwareActionButton("Upgrade", IconUtil.getMoveUpIcon()) { @Override public void actionPerformed(@NotNull AnActionEvent e) { + PackageManagementUsageCollector.triggerUpgradePerformed(myProject, myPackageManagementService); upgradeAction(); } }; myInstallButton = new DumbAwareActionButton("Install", IconUtil.getAddIcon()) { @Override public void actionPerformed(@NotNull AnActionEvent e) { + PackageManagementUsageCollector.triggerInstallPerformed(myProject, myPackageManagementService); if (myPackageManagementService != null) { ManagePackagesDialog dialog = createManagePackagesDialog(); dialog.show(); @@ -102,6 +104,7 @@ public class InstalledPackagesPanel extends JPanel { myUninstallButton = new DumbAwareActionButton("Uninstall", IconUtil.getRemoveIcon()) { @Override public void actionPerformed(@NotNull AnActionEvent e) { + PackageManagementUsageCollector.triggerUninstallPerformed(myProject, myPackageManagementService); uninstallAction(); } }; diff --git a/platform/lang-impl/src/com/intellij/webcore/packaging/PackageManagementUsageCollector.java b/platform/lang-impl/src/com/intellij/webcore/packaging/PackageManagementUsageCollector.java new file mode 100644 index 000000000000..9d486e585ca8 --- /dev/null +++ b/platform/lang-impl/src/com/intellij/webcore/packaging/PackageManagementUsageCollector.java @@ -0,0 +1,47 @@ +// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package com.intellij.webcore.packaging; + +import com.intellij.internal.statistic.eventLog.FeatureUsageData; +import com.intellij.internal.statistic.service.fus.collectors.FUCounterUsageLogger; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.Pair; +import com.intellij.util.containers.ContainerUtil; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Map; + +public class PackageManagementUsageCollector { + + private static final Map CLASS_TO_NAME = ContainerUtil.newHashMap( + Pair.create("com.intellij.javascript.nodejs.settings.NodePackageManagementService", "Node.js"), + Pair.create("com.jetbrains.python.packaging.ui.PyPackageManagementService", "Python") + ); + + private PackageManagementUsageCollector() {} + + public static void triggerInstallPerformed(@NotNull Project project, @Nullable PackageManagementService service) { + trigger(project, service, "install"); + } + + public static void triggerUpgradePerformed(@NotNull Project project, @Nullable PackageManagementService service) { + trigger(project, service, "upgrade"); + } + + public static void triggerUninstallPerformed(@NotNull Project project, @Nullable PackageManagementService service) { + trigger(project, service, "uninstall"); + } + + private static void trigger(@NotNull Project project, @Nullable PackageManagementService service, @NotNull String actionName) { + String serviceName = toKnownServiceName(service); + if (serviceName != null) { + FeatureUsageData data = new FeatureUsageData().addData("action", actionName); + FUCounterUsageLogger.getInstance().logEvent(project, "package.management.ui", serviceName, data); + } + } + + @Nullable + private static String toKnownServiceName(@Nullable PackageManagementService service) { + return service != null ? CLASS_TO_NAME.get(service.getClass().getName()) : null; + } +} diff --git a/platform/platform-resources/src/META-INF/LangExtensions.xml b/platform/platform-resources/src/META-INF/LangExtensions.xml index da52735d2ec9..93d1d99909ad 100644 --- a/platform/platform-resources/src/META-INF/LangExtensions.xml +++ b/platform/platform-resources/src/META-INF/LangExtensions.xml @@ -919,6 +919,7 @@ +