IDEA-180874 Set click counters for New, Open and Import Project actions

ability to track actions not registered in xml
This commit is contained in:
Dmitry Avdeev
2017-12-15 19:00:07 +03:00
parent f9decbd37b
commit b24d4bf84f
6 changed files with 41 additions and 12 deletions
@@ -28,10 +28,14 @@ import java.io.File;
public class NewProjectFromVCSGroup extends CheckoutActionGroup {
public NewProjectFromVCSGroup() {
super("NewProjectFromVCS");
}
@NotNull
@Override
protected AnAction createAction(CheckoutProvider provider) {
return new CheckoutAction(provider) {
return new CheckoutAction(provider, myIdPrefix) {
@Override
protected CheckoutProvider.Listener getListener(Project project) {
return new CheckoutProvider.Listener() {
@@ -0,0 +1,8 @@
/*
* Copyright 2000-2017 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.internal.statistic.customUsageCollectors.actions;
public interface ActionIdProvider {
String getId();
}
@@ -24,6 +24,7 @@ import com.intellij.ide.plugins.IdeaPluginDescriptor;
import com.intellij.ide.plugins.PluginManager;
import com.intellij.ide.plugins.PluginManagerCore;
import com.intellij.idea.IdeaLogger;
import com.intellij.internal.statistic.customUsageCollectors.actions.ActionIdProvider;
import com.intellij.internal.statistic.customUsageCollectors.actions.ActionsCollector;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.actionSystem.*;
@@ -1170,6 +1171,9 @@ public final class ActionManagerImpl extends ActionManagerEx implements Disposab
if (action != null) {
myPrevPerformedActionId = myLastPreformedActionId;
myLastPreformedActionId = getId(action);
if (myLastPreformedActionId == null && action instanceof ActionIdProvider) {
myLastPreformedActionId = ((ActionIdProvider)action).getId();
}
//noinspection AssignmentToStaticFieldFromInstanceMethod
IdeaLogger.ourLastActionId = myLastPreformedActionId;
ActionsCollector.getInstance().record(myLastPreformedActionId);
@@ -15,6 +15,7 @@
*/
package com.intellij.openapi.vcs.checkout;
import com.intellij.internal.statistic.customUsageCollectors.actions.ActionIdProvider;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.CommonDataKeys;
@@ -22,12 +23,14 @@ import com.intellij.openapi.project.*;
import com.intellij.openapi.vcs.CheckoutProvider;
import com.intellij.openapi.vcs.ProjectLevelVcsManager;
public class CheckoutAction extends AnAction implements DumbAware {
public class CheckoutAction extends AnAction implements DumbAware, ActionIdProvider {
private final CheckoutProvider myProvider;
private final String myIdPrefix;
public CheckoutAction(final CheckoutProvider provider) {
public CheckoutAction(CheckoutProvider provider, String idPrefix) {
super(provider.getVcsName());
myProvider = provider;
myIdPrefix = idPrefix;
}
public void actionPerformed(final AnActionEvent e) {
@@ -39,4 +42,9 @@ public class CheckoutAction extends AnAction implements DumbAware {
protected CheckoutProvider.Listener getListener(Project project) {
return ProjectLevelVcsManager.getInstance(project).getCompositeCheckoutListener();
}
@Override
public String getId() {
return myIdPrefix + "." + myProvider.getVcsName().replaceAll("_", "");
}
}
@@ -24,6 +24,17 @@ import org.jetbrains.annotations.NotNull;
import java.util.Arrays;
public class CheckoutActionGroup extends ComputableActionGroup.Simple {
protected final String myIdPrefix;
@SuppressWarnings("unused")
public CheckoutActionGroup() {
this("Vcs.Checkout");
}
public CheckoutActionGroup(String idPrefix) {
myIdPrefix = idPrefix;
}
@NotNull
@Override
protected AnAction[] computeChildren(@NotNull ActionManager manager) {
@@ -43,6 +54,6 @@ public class CheckoutActionGroup extends ComputableActionGroup.Simple {
@NotNull
protected AnAction createAction(CheckoutProvider provider) {
return new CheckoutAction(provider);
return new CheckoutAction(provider, myIdPrefix);
}
}
@@ -19,19 +19,13 @@ import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.DefaultActionGroup;
import com.intellij.openapi.extensions.Extensions;
import com.intellij.openapi.vcs.CheckoutProvider;
import com.intellij.openapi.vcs.checkout.CheckoutAction;
import com.intellij.openapi.vcs.checkout.CheckoutActionGroup;
import com.intellij.ui.UIBundle;
import java.util.Arrays;
public class GetFromVcsAction extends WelcomePopupAction{
protected void fillActions(DefaultActionGroup group) {
final CheckoutProvider[] providers = Extensions.getExtensions(CheckoutProvider.EXTENSION_POINT_NAME);
Arrays.sort(providers, new CheckoutProvider.CheckoutProviderComparator());
for (CheckoutProvider provider : providers) {
group.add(new CheckoutAction(provider));
}
group.addAll(new CheckoutActionGroup("WelcomeScreen.GetFromVcs"));
}
protected String getCaption() {