mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 14:23:28 +07:00
migrate to DataSink.lazy: project view
GitOrigin-RevId: 4a0fa6589c3cb8839d18014c92cf12592f682af5
This commit is contained in:
committed by
intellij-monorepo-bot
parent
874ddac709
commit
c747b110fc
@@ -17,10 +17,7 @@ import com.intellij.ide.projectView.impl.nodes.PackageViewProjectNode;
|
||||
import com.intellij.ide.util.DeleteHandler;
|
||||
import com.intellij.ide.util.treeView.AbstractTreeNode;
|
||||
import com.intellij.java.JavaBundle;
|
||||
import com.intellij.openapi.actionSystem.ActionUpdateThread;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.actionSystem.PlatformCoreDataKeys;
|
||||
import com.intellij.openapi.actionSystem.PlatformDataKeys;
|
||||
import com.intellij.openapi.actionSystem.*;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.registry.Registry;
|
||||
@@ -92,26 +89,25 @@ public class PackageViewPane extends AbstractProjectViewPaneWithAsyncSupport {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected @Nullable Object getSlowDataFromSelection(@Nullable Object @NotNull [] selectedUserObjects,
|
||||
@Nullable Object @Nullable [] singleSelectedPathUserObjects,
|
||||
@NotNull String dataId) {
|
||||
if (PlatformDataKeys.DELETE_ELEMENT_PROVIDER.is(dataId)) {
|
||||
protected void uiDataSnapshotForSelection(@NotNull DataSink sink,
|
||||
@Nullable Object @NotNull [] selectedUserObjects,
|
||||
@Nullable Object @Nullable [] singleSelectedPathUserObjects) {
|
||||
super.uiDataSnapshotForSelection(sink, selectedUserObjects, singleSelectedPathUserObjects);
|
||||
sink.lazy(PlatformDataKeys.DELETE_ELEMENT_PROVIDER, () -> {
|
||||
Object o = selectedUserObjects.length != 1 ? null : getValueFromNode(selectedUserObjects[0]);
|
||||
if (o instanceof PackageElement) {
|
||||
return myDeletePSIElementProvider;
|
||||
}
|
||||
}
|
||||
if (PackageElement.DATA_KEY.is(dataId)) {
|
||||
Object o = selectedUserObjects.length != 1 ? null : getValueFromNode(selectedUserObjects[0]);
|
||||
return o instanceof PackageElement ? o : null;
|
||||
}
|
||||
if (PlatformCoreDataKeys.MODULE.is(dataId)) {
|
||||
Object o = selectedUserObjects.length != 1 ? null : getValueFromNode(selectedUserObjects[0]);
|
||||
if (o instanceof PackageElement) {
|
||||
return ((PackageElement)o).getModule();
|
||||
}
|
||||
}
|
||||
return super.getSlowDataFromSelection(selectedUserObjects, singleSelectedPathUserObjects, dataId);
|
||||
return null;
|
||||
});
|
||||
sink.lazy(PackageElement.DATA_KEY, () -> {
|
||||
Object value = selectedUserObjects.length != 1 ? null : getValueFromNode(selectedUserObjects[0]);
|
||||
return value instanceof PackageElement o ? o : null;
|
||||
});
|
||||
sink.lazy(PlatformCoreDataKeys.MODULE, () -> {
|
||||
Object value = selectedUserObjects.length != 1 ? null : getValueFromNode(selectedUserObjects[0]);
|
||||
return value instanceof PackageElement o ? o.getModule() : null;
|
||||
});
|
||||
}
|
||||
|
||||
@RequiresBackgroundThread(generateAssertion = false)
|
||||
|
||||
@@ -15938,7 +15938,6 @@ a:com.intellij.ide.projectView.impl.AbstractProjectViewPane
|
||||
- f:getSelectedValues(java.lang.Object[]):java.lang.Object[]
|
||||
- getSelectionPaths():javax.swing.tree.TreePath[]
|
||||
- f:getSingleSelectedPathUserObjects():java.lang.Object[]
|
||||
- p:getSlowDataFromSelection(java.lang.Object[],java.lang.Object[],java.lang.String):java.lang.Object
|
||||
- f:getSubId():java.lang.String
|
||||
- getSubIds():java.lang.String[]
|
||||
- a:getTitle():java.lang.String
|
||||
@@ -15966,6 +15965,7 @@ a:com.intellij.ide.projectView.impl.AbstractProjectViewPane
|
||||
- f:setSubId(java.lang.String):V
|
||||
- supportsManualOrder():Z
|
||||
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
|
||||
- p:uiDataSnapshotForSelection(com.intellij.openapi.actionSystem.DataSink,java.lang.Object[],java.lang.Object[]):V
|
||||
- updateFrom(java.lang.Object,Z,Z):V
|
||||
- a:updateFromRoot(Z):com.intellij.openapi.util.ActionCallback
|
||||
- writeExternal(org.jdom.Element):V
|
||||
|
||||
@@ -314,10 +314,6 @@ public abstract class AbstractProjectViewPane implements UiCompatibleDataProvide
|
||||
paths == null || paths.length != 1 ? null :
|
||||
ArrayUtil.toObjectArray(ContainerUtil.map(paths[0].getPath(), TreeUtil::getUserObject));
|
||||
|
||||
sink.set(PlatformCoreDataKeys.BGT_DATA_PROVIDER,
|
||||
dataId -> getSlowDataFromSelection(
|
||||
selectedUserObjects, singleSelectedPathUserObjects, dataId));
|
||||
|
||||
if (paths != null) {
|
||||
ArrayList<Navigatable> navigatables = new ArrayList<>();
|
||||
for (TreePath path : paths) {
|
||||
@@ -336,6 +332,8 @@ public abstract class AbstractProjectViewPane implements UiCompatibleDataProvide
|
||||
sink.set(CommonDataKeys.NAVIGATABLE_ARRAY,
|
||||
navigatables.isEmpty() ? null : navigatables.toArray(Navigatable.EMPTY_NAVIGATABLE_ARRAY));
|
||||
}
|
||||
uiDataSnapshotForSelection(sink, selectedUserObjects, singleSelectedPathUserObjects);
|
||||
|
||||
if (myTreeStructure instanceof AbstractTreeStructureBase treeStructure) {
|
||||
List<TreeStructureProvider> providers = treeStructure.getProviders();
|
||||
if (providers != null && !providers.isEmpty()) {
|
||||
@@ -396,34 +394,31 @@ public abstract class AbstractProjectViewPane implements UiCompatibleDataProvide
|
||||
return PsiUtilCore.toPsiElementArray(result);
|
||||
}
|
||||
|
||||
@RequiresReadLock(generateAssertion = false)
|
||||
@RequiresBackgroundThread(generateAssertion = false)
|
||||
protected @Nullable Object getSlowDataFromSelection(@Nullable Object @NotNull [] selectedUserObjects,
|
||||
@Nullable Object @Nullable [] singleSelectedPathUserObjects,
|
||||
@NotNull String dataId) {
|
||||
if (CommonDataKeys.PSI_ELEMENT.is(dataId)) {
|
||||
protected void uiDataSnapshotForSelection(@NotNull DataSink sink, @Nullable Object @NotNull [] selectedUserObjects,
|
||||
@Nullable Object @Nullable [] singleSelectedPathUserObjects) {
|
||||
sink.lazy(CommonDataKeys.PSI_ELEMENT, () -> {
|
||||
final PsiElement[] elements = getPsiElements(selectedUserObjects);
|
||||
return elements.length == 1 ? elements[0] : null;
|
||||
}
|
||||
if (PlatformCoreDataKeys.PSI_ELEMENT_ARRAY.is(dataId)) {
|
||||
});
|
||||
sink.lazy(PlatformCoreDataKeys.PSI_ELEMENT_ARRAY, () -> {
|
||||
PsiElement[] elements = getPsiElements(selectedUserObjects);
|
||||
return elements.length > 0 ? elements : null;
|
||||
}
|
||||
if (PlatformCoreDataKeys.PROJECT_CONTEXT.is(dataId)) {
|
||||
});
|
||||
sink.lazy(PlatformCoreDataKeys.PROJECT_CONTEXT, () -> {
|
||||
Object selected = getSingleNodeElement(selectedUserObjects);
|
||||
return selected instanceof Project ? selected : null;
|
||||
}
|
||||
if (LangDataKeys.MODULE_CONTEXT.is(dataId)) {
|
||||
return selected instanceof Project o ? o : null;
|
||||
});
|
||||
sink.lazy(LangDataKeys.MODULE_CONTEXT, () -> {
|
||||
Object selected = getSingleNodeElement(selectedUserObjects);
|
||||
return moduleContext(myProject, selected);
|
||||
}
|
||||
if (LangDataKeys.MODULE_CONTEXT_ARRAY.is(dataId)) {
|
||||
});
|
||||
sink.lazy(LangDataKeys.MODULE_CONTEXT_ARRAY, () -> {
|
||||
return getSelectedModules(selectedUserObjects);
|
||||
}
|
||||
if (ProjectView.UNLOADED_MODULES_CONTEXT_KEY.is(dataId)) {
|
||||
});
|
||||
sink.lazy(ProjectView.UNLOADED_MODULES_CONTEXT_KEY, () -> {
|
||||
return Collections.unmodifiableList(getSelectedUnloadedModules(selectedUserObjects));
|
||||
}
|
||||
if (PlatformDataKeys.DELETE_ELEMENT_PROVIDER.is(dataId)) {
|
||||
});
|
||||
sink.lazy(PlatformDataKeys.DELETE_ELEMENT_PROVIDER, () -> {
|
||||
Module[] modules = getSelectedModules(selectedUserObjects);
|
||||
if (modules != null || !getSelectedUnloadedModules(selectedUserObjects).isEmpty()) {
|
||||
return ModuleDeleteProvider.getInstance();
|
||||
@@ -433,20 +428,19 @@ public abstract class AbstractProjectViewPane implements UiCompatibleDataProvide
|
||||
return new DetachLibraryDeleteProvider(myProject, orderEntry);
|
||||
}
|
||||
return myDeletePSIElementProvider;
|
||||
}
|
||||
if (ModuleGroup.ARRAY_DATA_KEY.is(dataId)) {
|
||||
});
|
||||
sink.lazy(ModuleGroup.ARRAY_DATA_KEY, () -> {
|
||||
final List<ModuleGroup> selectedElements = getSelectedValues(selectedUserObjects, ModuleGroup.class);
|
||||
return selectedElements.isEmpty() ? null : selectedElements.toArray(new ModuleGroup[0]);
|
||||
}
|
||||
if (LibraryGroupElement.ARRAY_DATA_KEY.is(dataId)) {
|
||||
});
|
||||
sink.lazy(LibraryGroupElement.ARRAY_DATA_KEY, () -> {
|
||||
final List<LibraryGroupElement> selectedElements = getSelectedValues(selectedUserObjects, LibraryGroupElement.class);
|
||||
return selectedElements.isEmpty() ? null : selectedElements.toArray(new LibraryGroupElement[0]);
|
||||
}
|
||||
if (NamedLibraryElement.ARRAY_DATA_KEY.is(dataId)) {
|
||||
});
|
||||
sink.lazy(NamedLibraryElement.ARRAY_DATA_KEY, () -> {
|
||||
final List<NamedLibraryElement> selectedElements = getSelectedValues(selectedUserObjects, NamedLibraryElement.class);
|
||||
return selectedElements.isEmpty() ? null : selectedElements.toArray(new NamedLibraryElement[0]);
|
||||
}
|
||||
return null;
|
||||
});
|
||||
}
|
||||
|
||||
@RequiresReadLock(generateAssertion = false)
|
||||
|
||||
Reference in New Issue
Block a user