mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
diff: record policy usage statistics
This commit is contained in:
@@ -34,6 +34,8 @@ import com.intellij.diff.util.DiffUtil;
|
||||
import com.intellij.diff.util.LineRange;
|
||||
import com.intellij.ide.DataManager;
|
||||
import com.intellij.ide.impl.DataManagerImpl;
|
||||
import com.intellij.internal.statistic.UsageTrigger;
|
||||
import com.intellij.internal.statistic.beans.ConvertUsagesUtil;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.actionSystem.ex.ComboBoxAction;
|
||||
@@ -585,6 +587,7 @@ public abstract class DiffRequestProcessor implements Disposable {
|
||||
public void actionPerformed(@NotNull AnActionEvent e) {
|
||||
if (myState.getActiveTool() == myDiffTool) return;
|
||||
|
||||
UsageTrigger.trigger("diff.DiffSettings.Tool." + ConvertUsagesUtil.ensureProperKey(myDiffTool.getName()));
|
||||
moveToolOnTop(myDiffTool);
|
||||
|
||||
updateRequest(true);
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
/*
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.intellij.diff.statistics;
|
||||
|
||||
import com.intellij.diff.impl.DiffSettingsHolder;
|
||||
import com.intellij.diff.tools.fragmented.UnifiedDiffTool;
|
||||
import com.intellij.diff.tools.simple.SimpleDiffTool;
|
||||
import com.intellij.diff.tools.util.base.TextDiffSettingsHolder;
|
||||
import com.intellij.diff.util.DiffPlaces;
|
||||
import com.intellij.internal.statistic.CollectUsagesException;
|
||||
import com.intellij.internal.statistic.UsagesCollector;
|
||||
import com.intellij.internal.statistic.beans.GroupDescriptor;
|
||||
import com.intellij.internal.statistic.beans.UsageDescriptor;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class DiffUsagesCollector extends UsagesCollector {
|
||||
public static final GroupDescriptor ID = GroupDescriptor.create("Diff");
|
||||
|
||||
@NotNull
|
||||
public GroupDescriptor getGroupId() {
|
||||
return ID;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Set<UsageDescriptor> getUsages() throws CollectUsagesException {
|
||||
Set<UsageDescriptor> usages = ContainerUtil.newHashSet();
|
||||
|
||||
processUsages(DiffPlaces.DEFAULT, usages);
|
||||
processUsages(DiffPlaces.CHANGES_VIEW, usages);
|
||||
processUsages(DiffPlaces.COMMIT_DIALOG, usages);
|
||||
|
||||
DiffSettingsHolder.DiffSettings diffSettings = DiffSettingsHolder.getInstance().getSettings(null);
|
||||
usages.add(new UsageDescriptor("diff.DiffSettings.Default.IterateNextFile", diffSettings.isGoToNextFileOnNextDifference() ? 1 : 0));
|
||||
|
||||
return usages;
|
||||
}
|
||||
|
||||
private static void processUsages(@NotNull String place, @NotNull Set<UsageDescriptor> usages) {
|
||||
DiffSettingsHolder.DiffSettings diffSettings = DiffSettingsHolder.getInstance().getSettings(place);
|
||||
TextDiffSettingsHolder.TextDiffSettings textSettings = TextDiffSettingsHolder.getInstance().getSettings(place);
|
||||
|
||||
usages.add(new UsageDescriptor("diff.TextDiffSettings.Default.IgnorePolicy." + textSettings.getIgnorePolicy().name(), 1));
|
||||
usages.add(new UsageDescriptor("diff.TextDiffSettings.Default.HighlightPolicy." + textSettings.getHighlightPolicy().name(), 1));
|
||||
usages.add(new UsageDescriptor("diff.TextDiffSettings.Default.ExpandByDefault", textSettings.isExpandByDefault() ? 1 : 0));
|
||||
|
||||
List<String> toolOrder = diffSettings.getDiffToolsOrder();
|
||||
int defaultToolIndex = ContainerUtil.indexOf(toolOrder, SimpleDiffTool.class.getCanonicalName());
|
||||
int unifiedToolIndex = ContainerUtil.indexOf(toolOrder, UnifiedDiffTool.class.getCanonicalName());
|
||||
boolean isUnifiedDefault = unifiedToolIndex != -1 && unifiedToolIndex < defaultToolIndex;
|
||||
usages.add(new UsageDescriptor("diff.DiffSettings.Default.isUnifiedTool", isUnifiedDefault ? 1 : 0));
|
||||
}
|
||||
}
|
||||
@@ -29,6 +29,7 @@ import com.intellij.ide.diff.DirDiffSettings;
|
||||
import com.intellij.ide.diff.JarFileDiffElement;
|
||||
import com.intellij.ide.diff.VirtualFileDiffElement;
|
||||
import com.intellij.ide.highlighter.ArchiveFileType;
|
||||
import com.intellij.internal.statistic.UsageTrigger;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.DataProvider;
|
||||
@@ -59,6 +60,8 @@ class DirDiffViewer implements FrameDiffTool.DiffViewer {
|
||||
@NotNull private final JPanel myPanel;
|
||||
|
||||
public DirDiffViewer(@NotNull DiffContext context, @NotNull ContentDiffRequest request) {
|
||||
UsageTrigger.trigger("diff.DirDiffViewer");
|
||||
|
||||
myContext = context;
|
||||
myRequest = request;
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@ package com.intellij.diff.tools.util.base;
|
||||
|
||||
import com.intellij.diff.util.DiffPlaces;
|
||||
import com.intellij.diff.util.DiffUtil;
|
||||
import com.intellij.internal.statistic.UsageTrigger;
|
||||
import com.intellij.openapi.components.PersistentStateComponent;
|
||||
import com.intellij.openapi.components.ServiceManager;
|
||||
import com.intellij.openapi.components.State;
|
||||
@@ -94,6 +95,7 @@ public class TextDiffSettingsHolder implements PersistentStateComponent<TextDiff
|
||||
|
||||
public void setHighlightPolicy(@NotNull HighlightPolicy value) {
|
||||
PLACE_SETTINGS.HIGHLIGHT_POLICY = value;
|
||||
UsageTrigger.trigger("diff.TextDiffSettings.HighlightPolicy." + value.name());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -103,6 +105,7 @@ public class TextDiffSettingsHolder implements PersistentStateComponent<TextDiff
|
||||
|
||||
public void setIgnorePolicy(@NotNull IgnorePolicy policy) {
|
||||
PLACE_SETTINGS.IGNORE_POLICY = policy;
|
||||
UsageTrigger.trigger("diff.TextDiffSettings.IgnorePolicy." + policy.name());
|
||||
}
|
||||
|
||||
// Editor settings
|
||||
|
||||
@@ -106,6 +106,7 @@
|
||||
<configurable id="diff.external" displayName="External Diff Tools"
|
||||
instance="com.intellij.diff.settings.ExternalDiffSettingsConfigurable"/>
|
||||
</applicationConfigurable>
|
||||
<statistics.usagesCollector implementation="com.intellij.diff.statistics.DiffUsagesCollector"/>
|
||||
|
||||
<applicationService serviceInterface="com.intellij.ui.SystemNotifications"
|
||||
serviceImplementation="com.intellij.ui.SystemNotificationsImpl"/>
|
||||
|
||||
Reference in New Issue
Block a user