mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
FUS-94 File extension/type state/usage
This commit is contained in:
+14
@@ -0,0 +1,14 @@
|
||||
// Copyright 2000-2018 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.collectors.fus.fileTypes;
|
||||
|
||||
import com.intellij.internal.statistic.service.fus.collectors.ProjectUsageTriggerCollector;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class FileExtensionEditUsageTriggerCollector extends ProjectUsageTriggerCollector {
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getGroupId() {
|
||||
return "statistics.file.extensions.edit";
|
||||
}
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
// Copyright 2000-2018 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.collectors.fus.fileTypes;
|
||||
|
||||
import com.intellij.internal.statistic.service.fus.collectors.ProjectUsageTriggerCollector;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class FileExtensionOpenUsageTriggerCollector extends ProjectUsageTriggerCollector {
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getGroupId() {
|
||||
return "statistics.file.extensions.open";
|
||||
}
|
||||
}
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
// Copyright 2000-2018 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.collectors.fus.fileTypes;
|
||||
|
||||
import com.intellij.internal.statistic.beans.UsageDescriptor;
|
||||
import com.intellij.internal.statistic.service.fus.collectors.ProjectUsagesCollector;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.ProjectFileIndex;
|
||||
import com.intellij.util.NotNullFunction;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class FileExtensionUsagesCollector extends ProjectUsagesCollector {
|
||||
@NotNull
|
||||
@Override
|
||||
public Set<UsageDescriptor> getUsages(@NotNull Project project) {
|
||||
final Set<String> extensions = new HashSet<>();
|
||||
ProjectFileIndex.getInstance(project).iterateContent(fileOrDir -> {
|
||||
if (!fileOrDir.isDirectory()) {
|
||||
extensions.add(fileOrDir.getExtension() != null ? fileOrDir.getExtension() : fileOrDir.getName());
|
||||
}
|
||||
return true;
|
||||
});
|
||||
return ContainerUtil.map2Set(extensions, (NotNullFunction<String, UsageDescriptor>)extension -> new UsageDescriptor(extension, 1));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getGroupId() {
|
||||
return "statistics.file.extensions";
|
||||
}
|
||||
}
|
||||
+69
@@ -0,0 +1,69 @@
|
||||
// Copyright 2000-2018 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.collectors.fus.fileTypes;
|
||||
|
||||
import com.intellij.internal.statistic.service.fus.collectors.FUSProjectUsageTrigger;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.actionSystem.ex.AnActionListener;
|
||||
import com.intellij.openapi.components.AbstractProjectComponent;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.actionSystem.EditorAction;
|
||||
import com.intellij.openapi.editor.actionSystem.EditorWriteActionHandler;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.openapi.fileEditor.FileEditorManager;
|
||||
import com.intellij.openapi.fileEditor.FileEditorManagerEvent;
|
||||
import com.intellij.openapi.fileEditor.FileEditorManagerListener;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.messages.MessageBusConnection;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class FileExtensionUsagesCollectorComponent extends AbstractProjectComponent {
|
||||
public FileExtensionUsagesCollectorComponent(Project project) {
|
||||
super(project);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void projectOpened() {
|
||||
MessageBusConnection myConnection = myProject.getMessageBus().connect();
|
||||
myConnection.subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, new FileEditorManagerListener() {
|
||||
@Override
|
||||
public void fileOpened(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
|
||||
FUSProjectUsageTrigger.getInstance(myProject).trigger(FileExtensionOpenUsageTriggerCollector.class, file.getExtension() != null ? file.getExtension() : file.getName());
|
||||
FUSProjectUsageTrigger.getInstance(myProject).trigger(FileTypeOpenUsageTriggerCollector.class, file.getFileType().getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fileClosed(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void selectionChanged(@NotNull FileEditorManagerEvent event) {
|
||||
}
|
||||
});
|
||||
ActionManager.getInstance().addAnActionListener(new AnActionListener() {
|
||||
@Override
|
||||
public void beforeActionPerformed(AnAction action, DataContext dataContext, AnActionEvent event) {
|
||||
if (action instanceof EditorAction && ((EditorAction)action).getHandler() instanceof EditorWriteActionHandler) {
|
||||
onChange(dataContext);
|
||||
}
|
||||
}
|
||||
|
||||
private void onChange(DataContext dataContext) {
|
||||
final Editor editor = CommonDataKeys.EDITOR.getData(dataContext);
|
||||
if (editor == null || editor.getProject() != myProject) return;
|
||||
VirtualFile file = FileDocumentManager.getInstance().getFile(editor.getDocument());
|
||||
if (file != null) {
|
||||
FUSProjectUsageTrigger.getInstance(myProject).trigger(FileExtensionEditUsageTriggerCollector.class,
|
||||
file.getExtension() != null ? file.getExtension() : file.getName());
|
||||
FUSProjectUsageTrigger.getInstance(myProject).trigger(FileTypeEditUsageTriggerCollector.class, file.getFileType().getName());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beforeEditorTyping(char c, DataContext dataContext) {
|
||||
onChange(dataContext);
|
||||
}
|
||||
}, myProject);
|
||||
}
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
// Copyright 2000-2018 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.collectors.fus.fileTypes;
|
||||
|
||||
import com.intellij.internal.statistic.service.fus.collectors.ProjectUsageTriggerCollector;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class FileTypeEditUsageTriggerCollector extends ProjectUsageTriggerCollector {
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getGroupId() {
|
||||
return "statistics.file.types.edit";
|
||||
}
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
// Copyright 2000-2018 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.collectors.fus.fileTypes;
|
||||
|
||||
import com.intellij.internal.statistic.service.fus.collectors.ProjectUsageTriggerCollector;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class FileTypeOpenUsageTriggerCollector extends ProjectUsageTriggerCollector {
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getGroupId() {
|
||||
return "statistics.file.types.open";
|
||||
}
|
||||
}
|
||||
@@ -916,6 +916,9 @@
|
||||
|
||||
<statistics.usagesCollector implementation="com.intellij.internal.statistic.collectors.legacy.fileTypes.LegacyFileTypeUsagesCollector"/>
|
||||
<statistics.projectUsagesCollector implementation="com.intellij.internal.statistic.collectors.fus.fileTypes.FileTypeUsagesCollector"/>
|
||||
<statistics.projectUsagesCollector implementation="com.intellij.internal.statistic.collectors.fus.fileTypes.FileExtensionUsagesCollector"/>
|
||||
<statistics.projectUsagesCollector implementation="com.intellij.internal.statistic.collectors.fus.fileTypes.FileExtensionOpenUsageTriggerCollector"/>
|
||||
<statistics.projectUsagesCollector implementation="com.intellij.internal.statistic.collectors.fus.fileTypes.FileExtensionEditUsageTriggerCollector"/>
|
||||
|
||||
<statistics.usagesCollector implementation="com.intellij.facet.impl.statistics.FrameworkUsagesCollector"/>
|
||||
<statistics.usagesCollector implementation="com.intellij.facet.impl.statistics.ModuleTypeUsagesCollector"/>
|
||||
|
||||
@@ -220,6 +220,9 @@
|
||||
<implementation-class>com.intellij.ide.GeneratedSourceFileChangeTrackerImpl</implementation-class>
|
||||
</component>
|
||||
|
||||
<component>
|
||||
<implementation-class>com.intellij.internal.statistic.collectors.fus.fileTypes.FileExtensionUsagesCollectorComponent</implementation-class>
|
||||
</component>
|
||||
</project-components>
|
||||
|
||||
<module-components>
|
||||
|
||||
Reference in New Issue
Block a user