migrate to UiDataProvider

Fixes IJPL-182664.

GitOrigin-RevId: 5e1a39f8e247a3244efac3801634d3c72b39d4cd
This commit is contained in:
Gregory.Shrago
2025-04-03 02:17:42 +00:00
committed by intellij-monorepo-bot
parent da934cf572
commit e846333774
11 changed files with 64 additions and 132 deletions
@@ -4,8 +4,8 @@ package com.intellij.usages.impl.rules;
import com.intellij.lang.injection.InjectedLanguageManager;
import com.intellij.navigation.NavigationItemFileStatus;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.actionSystem.DataProvider;
import com.intellij.openapi.actionSystem.PlatformCoreDataKeys;
import com.intellij.openapi.actionSystem.DataSink;
import com.intellij.openapi.actionSystem.UiDataProvider;
import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.util.Iconable;
import com.intellij.openapi.util.NlsSafe;
@@ -22,7 +22,6 @@ import com.intellij.usages.UsageTarget;
import com.intellij.usages.UsageView;
import com.intellij.usages.rules.PsiElementUsage;
import com.intellij.usages.rules.SingleParentUsageGroupingRule;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -88,7 +87,7 @@ class ClassGroupingRule extends SingleParentUsageGroupingRule implements DumbAwa
return index < 0? name : name.substring(0, index);
}
private static class ClassUsageGroup implements UsageGroup, DataProvider {
private static class ClassUsageGroup implements UsageGroup, UiDataProvider {
private final SmartPsiElementPointer<PsiClass> myClassPointer;
private final @NlsSafe String myText;
private final String myQName;
@@ -169,22 +168,14 @@ class ClassGroupingRule extends SingleParentUsageGroupingRule implements DumbAwa
}
@Override
public @Nullable Object getData(@NotNull String dataId) {
if (PlatformCoreDataKeys.BGT_DATA_PROVIDER.is(dataId)) {
return (DataProvider)this::getSlowData;
}
return null;
}
private @Nullable Object getSlowData(@NonNls String dataId) {
if (CommonDataKeys.PSI_ELEMENT.is(dataId)) {
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.lazy(CommonDataKeys.PSI_ELEMENT, () -> {
return getPsiClass();
}
else if (UsageView.USAGE_INFO_KEY.is(dataId)) {
});
sink.lazy(UsageView.USAGE_INFO_KEY, () -> {
PsiClass psiClass = getPsiClass();
return psiClass == null ? null : new UsageInfo(psiClass);
}
return null;
});
}
}
}
@@ -4,8 +4,8 @@ package com.intellij.usages.impl.rules;
import com.intellij.lang.injection.InjectedLanguageManager;
import com.intellij.navigation.NavigationItemFileStatus;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.actionSystem.DataProvider;
import com.intellij.openapi.actionSystem.PlatformCoreDataKeys;
import com.intellij.openapi.actionSystem.DataSink;
import com.intellij.openapi.actionSystem.UiDataProvider;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Iconable;
@@ -63,7 +63,7 @@ public class MethodGroupingRule extends SingleParentUsageGroupingRule {
return null;
}
private static class MethodUsageGroup implements UsageGroup, DataProvider {
private static class MethodUsageGroup implements UsageGroup, UiDataProvider {
private final SmartPsiElementPointer<PsiMethod> myMethodPointer;
private final @NlsSafe String myName;
private final Icon myIcon;
@@ -169,22 +169,14 @@ public class MethodGroupingRule extends SingleParentUsageGroupingRule {
}
@Override
public @Nullable Object getData(@NotNull String dataId) {
if (PlatformCoreDataKeys.BGT_DATA_PROVIDER.is(dataId)) {
return (DataProvider)this::getSlowData;
}
return null;
}
private @Nullable Object getSlowData(@NotNull String dataId) {
if (CommonDataKeys.PSI_ELEMENT.is(dataId)) {
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.lazy(CommonDataKeys.PSI_ELEMENT, () -> {
return getMethod();
}
else if (UsageView.USAGE_INFO_KEY.is(dataId)) {
});
sink.lazy(UsageView.USAGE_INFO_KEY, () -> {
PsiMethod method = getMethod();
return method == null ? null : new UsageInfo(method);
}
return null;
});
}
}
}
@@ -2,8 +2,8 @@
package com.intellij.usages.impl.rules;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.actionSystem.DataProvider;
import com.intellij.openapi.actionSystem.PlatformCoreDataKeys;
import com.intellij.openapi.actionSystem.DataSink;
import com.intellij.openapi.actionSystem.UiDataProvider;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vcs.FileStatus;
import com.intellij.openapi.vcs.FileStatusManager;
@@ -14,7 +14,6 @@ import com.intellij.psi.PsiManager;
import com.intellij.psi.PsiPackage;
import com.intellij.usages.UsageGroup;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
@@ -42,7 +41,7 @@ public final class PackageGroupingRule extends DirectoryGroupingRule {
return "UsageGrouping.Package";
}
private final class PackageGroup implements UsageGroup, DataProvider {
private final class PackageGroup implements UsageGroup, UiDataProvider {
private final PsiPackage myPackage;
private Icon myIcon;
@@ -109,18 +108,10 @@ public final class PackageGroupingRule extends DirectoryGroupingRule {
}
@Override
public @Nullable Object getData(@NotNull String dataId) {
if (PlatformCoreDataKeys.BGT_DATA_PROVIDER.is(dataId)) {
return (DataProvider)slowId -> getSlowData(slowId);
}
return null;
}
private @Nullable Object getSlowData(@NotNull String dataId) {
if (CommonDataKeys.PSI_ELEMENT.is(dataId)) {
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.lazy(CommonDataKeys.PSI_ELEMENT, () -> {
return myPackage;
}
return null;
});
}
}
}
+2 -2
View File
@@ -7622,13 +7622,12 @@ f:com.intellij.find.impl.FindInProjectUtil
- s:setupViewPresentation(Z,com.intellij.find.FindModel):com.intellij.usages.UsageViewPresentation
c:com.intellij.find.impl.FindInProjectUtil$StringUsageTarget
- com.intellij.navigation.ItemPresentation
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiDataProvider
- com.intellij.usages.ConfigurableUsageTarget
- pf:myFindModel:com.intellij.find.FindModel
- pf:myProject:com.intellij.openapi.project.Project
- <init>(com.intellij.openapi.project.Project,com.intellij.find.FindModel):V
- findUsages():V
- getData(java.lang.String):java.lang.Object
- getIcon(Z):javax.swing.Icon
- getLongDescriptiveName():java.lang.String
- getName():java.lang.String
@@ -7637,6 +7636,7 @@ c:com.intellij.find.impl.FindInProjectUtil$StringUsageTarget
- getShortcut():com.intellij.openapi.actionSystem.KeyboardShortcut
- isValid():Z
- showSettings():V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
f:com.intellij.find.impl.FindManagerImpl
- com.intellij.find.FindManager
- <init>(com.intellij.openapi.project.Project):V
@@ -480,7 +480,7 @@ public final class FindInProjectUtil {
}
}
public static class StringUsageTarget implements ConfigurableUsageTarget, ItemPresentation, DataProvider {
public static class StringUsageTarget implements ConfigurableUsageTarget, ItemPresentation, UiDataProvider {
protected final @NotNull Project myProject;
protected final @NotNull FindModel myFindModel;
@@ -539,18 +539,10 @@ public final class FindInProjectUtil {
}
@Override
public @Nullable Object getData(@NotNull String dataId) {
if (PlatformCoreDataKeys.BGT_DATA_PROVIDER.is(dataId)) {
return (DataProvider)slowId -> getSlowData(slowId);
}
return null;
}
private @Nullable Object getSlowData(@NotNull String dataId) {
if (UsageView.USAGE_SCOPE.is(dataId)) {
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.lazy(UsageView.USAGE_SCOPE, () -> {
return getScopeFromModel(myProject, myFindModel);
}
return null;
});
}
}
+2 -2
View File
@@ -79,7 +79,7 @@ a:com.intellij.find.FindResult
c:com.intellij.find.findUsages.PsiElement2UsageTargetAdapter
- com.intellij.navigation.ItemPresentation
- com.intellij.navigation.PsiElementNavigationItem
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiCompatibleDataProvider
- com.intellij.usages.ConfigurableUsageTarget
- com.intellij.usages.PsiElementUsageTarget
- pf:myOptions:com.intellij.find.findUsages.FindUsagesOptions
@@ -93,7 +93,6 @@ c:com.intellij.find.findUsages.PsiElement2UsageTargetAdapter
- s:convertToPsiElements(com.intellij.find.findUsages.PsiElement2UsageTargetAdapter[]):com.intellij.psi.PsiElement[]
- findUsages():V
- findUsagesInEditor(com.intellij.openapi.fileEditor.FileEditor):V
- getData(java.lang.String):java.lang.Object
- getElement():com.intellij.psi.PsiElement
- getFiles():com.intellij.openapi.vfs.VirtualFile[]
- getIcon(Z):javax.swing.Icon
@@ -110,6 +109,7 @@ c:com.intellij.find.findUsages.PsiElement2UsageTargetAdapter
- isValid():Z
- navigate(Z):V
- showSettings():V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
- update():V
f:com.intellij.ide.actions.FqnUtil
- <init>():V
@@ -9,9 +9,9 @@ import com.intellij.lang.findUsages.DescriptiveNameUtil;
import com.intellij.navigation.ItemPresentation;
import com.intellij.navigation.NavigationItem;
import com.intellij.navigation.PsiElementNavigationItem;
import com.intellij.openapi.actionSystem.DataProvider;
import com.intellij.openapi.actionSystem.DataSink;
import com.intellij.openapi.actionSystem.KeyboardShortcut;
import com.intellij.openapi.actionSystem.PlatformCoreDataKeys;
import com.intellij.openapi.actionSystem.UiCompatibleDataProvider;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.fileEditor.FileEditor;
import com.intellij.openapi.project.Project;
@@ -39,7 +39,7 @@ import org.jetbrains.annotations.Nullable;
import javax.swing.*;
public class PsiElement2UsageTargetAdapter
implements PsiElementUsageTarget, DataProvider, PsiElementNavigationItem, ItemPresentation, ConfigurableUsageTarget {
implements PsiElementUsageTarget, UiCompatibleDataProvider, PsiElementNavigationItem, ItemPresentation, ConfigurableUsageTarget {
private final SmartPsiElementPointer<?> myPointer;
protected final @NotNull FindUsagesOptions myOptions;
private String myPresentableText;
@@ -187,24 +187,12 @@ public class PsiElement2UsageTargetAdapter
}
@Override
public @Nullable Object getData(@NotNull String dataId) {
if (PlatformCoreDataKeys.BGT_DATA_PROVIDER.is(dataId)) {
return (DataProvider)this::getSlowData;
}
else if (UsageView.USAGE_SCOPE.is(dataId)) {
return myOptions.searchScope;
}
return null;
}
private @Nullable Object getSlowData(@NotNull String dataId) {
if (UsageView.USAGE_INFO_KEY.is(dataId)) {
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.set(UsageView.USAGE_SCOPE, myOptions.searchScope);
sink.lazy(UsageView.USAGE_INFO_KEY, () -> {
PsiElement element = getElement();
if (element != null && element.getTextRange() != null) {
return new UsageInfo(element);
}
}
return null;
return element != null && element.getTextRange() != null ? new UsageInfo(element) : null;
});
}
@Override
+2 -2
View File
@@ -174,7 +174,7 @@ c:com.intellij.usages.impl.rules.FileGroupingRule
- getRank():I
- isGroupingActionInverted():Z
c:com.intellij.usages.impl.rules.FileGroupingRule$FileUsageGroup
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiDataProvider
- com.intellij.usages.NamedPresentably
- com.intellij.usages.UsageGroup
- <init>(com.intellij.openapi.project.Project,com.intellij.openapi.vfs.VirtualFile):V
@@ -182,7 +182,6 @@ c:com.intellij.usages.impl.rules.FileGroupingRule$FileUsageGroup
- canNavigateToSource():Z
- compareTo(com.intellij.usages.UsageGroup):I
- equals(java.lang.Object):Z
- getData(java.lang.String):java.lang.Object
- getFileStatus():com.intellij.openapi.vcs.FileStatus
- getIcon():javax.swing.Icon
- getPresentableGroupText():java.lang.String
@@ -190,6 +189,7 @@ c:com.intellij.usages.impl.rules.FileGroupingRule$FileUsageGroup
- hashCode():I
- isValid():Z
- navigate(Z):V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
- update():V
a:com.intellij.usages.impl.rules.UsageGroupBase
- com.intellij.usages.UsageGroup
@@ -5,8 +5,10 @@ import com.intellij.find.SearchInBackgroundOption;
import com.intellij.injected.editor.VirtualFileWindow;
import com.intellij.lang.Language;
import com.intellij.notebook.editor.BackedVirtualFile;
import com.intellij.openapi.actionSystem.CustomizedDataContext;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.actionSystem.DataProvider;
import com.intellij.openapi.actionSystem.PlatformCoreDataKeys;
import com.intellij.openapi.actionSystem.DataSink;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ReadAction;
import com.intellij.openapi.diagnostic.Logger;
@@ -42,6 +44,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Arrays;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
@@ -214,17 +217,12 @@ public class UsageViewManagerImpl extends UsageViewManager {
@NotNull Supplier<SearchScope> getMaxSearchScopeToWarnOfFallingOutOf(UsageTarget @NotNull [] searchFor) {
UsageTarget target = searchFor.length > 0 ? searchFor[0] : null;
DataProvider dataProvider = target instanceof DataProvider o ? o : null;
SearchScope scope = dataProvider != null ? UsageView.USAGE_SCOPE.getData(dataProvider) : null;
if (scope != null) {
return () -> scope;
}
DataProvider bgtProvider = dataProvider != null ? PlatformCoreDataKeys.BGT_DATA_PROVIDER.getData(dataProvider) : null;
return () -> {
SearchScope scope2 = bgtProvider != null ? UsageView.USAGE_SCOPE.getData(bgtProvider) : null;
if (scope2 != null) return scope2;
return GlobalSearchScope.everythingScope(project); // by default do not warn of falling out of scope
};
DataContext dataContext = CustomizedDataContext.withSnapshot(DataContext.EMPTY_CONTEXT, sink ->
DataSink.uiDataSnapshot(sink, target));
return () -> Objects.requireNonNullElseGet(
dataContext.getData(UsageView.USAGE_SCOPE),
// by default, do not warn of falling out of scope
() -> GlobalSearchScope.everythingScope(project));
}
@Override
@@ -3,8 +3,8 @@ package com.intellij.usages.impl.rules;
import com.intellij.injected.editor.VirtualFileWindow;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.actionSystem.DataProvider;
import com.intellij.openapi.actionSystem.PlatformCoreDataKeys;
import com.intellij.openapi.actionSystem.DataSink;
import com.intellij.openapi.actionSystem.UiDataProvider;
import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectUtil;
@@ -90,7 +90,7 @@ public class DirectoryGroupingRule extends SingleParentUsageGroupingRule impleme
return "UsageGrouping.Directory";
}
protected class DirectoryGroup implements UsageGroup, DataProvider {
protected class DirectoryGroup implements UsageGroup, UiDataProvider {
protected final VirtualFile myDir;
private Icon myIcon;
private final @NlsSafe String relativePathText;
@@ -188,21 +188,11 @@ public class DirectoryGroupingRule extends SingleParentUsageGroupingRule impleme
}
@Override
public @Nullable Object getData(@NotNull String dataId) {
if (CommonDataKeys.VIRTUAL_FILE.is(dataId)) {
return myDir;
}
if (PlatformCoreDataKeys.BGT_DATA_PROVIDER.is(dataId)) {
return (DataProvider)slowId -> getSlowData(slowId);
}
return null;
}
private @Nullable Object getSlowData(@NotNull String dataId) {
if (CommonDataKeys.PSI_ELEMENT.is(dataId)) {
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.set(CommonDataKeys.VIRTUAL_FILE, myDir);
sink.lazy(CommonDataKeys.PSI_ELEMENT, () -> {
return getDirectory();
}
return null;
});
}
@Override
@@ -3,8 +3,8 @@ package com.intellij.usages.impl.rules;
import com.intellij.injected.editor.VirtualFileWindow;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.actionSystem.DataProvider;
import com.intellij.openapi.actionSystem.PlatformCoreDataKeys;
import com.intellij.openapi.actionSystem.DataSink;
import com.intellij.openapi.actionSystem.UiDataProvider;
import com.intellij.openapi.fileEditor.FileEditorManager;
import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.project.Project;
@@ -60,7 +60,7 @@ public class FileGroupingRule extends SingleParentUsageGroupingRule implements D
return true;
}
public static class FileUsageGroup implements UsageGroup, DataProvider, NamedPresentably {
public static class FileUsageGroup implements UsageGroup, UiDataProvider, NamedPresentably {
private final Project myProject;
private final VirtualFile myFile;
private @NlsSafe String myPresentableName;
@@ -144,21 +144,11 @@ public class FileGroupingRule extends SingleParentUsageGroupingRule implements D
}
@Override
public @Nullable Object getData(@NotNull String dataId) {
if (CommonDataKeys.VIRTUAL_FILE.is(dataId)) {
return myFile;
}
if (PlatformCoreDataKeys.BGT_DATA_PROVIDER.is(dataId)) {
return (DataProvider)slowId -> getSlowData(slowId);
}
return null;
}
private @Nullable Object getSlowData(@NotNull String dataId) {
if (CommonDataKeys.PSI_ELEMENT.is(dataId)) {
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.set(CommonDataKeys.VIRTUAL_FILE, myFile);
sink.lazy(CommonDataKeys.PSI_ELEMENT, () -> {
return getPsiFile();
}
return null;
});
}
@ApiStatus.Internal