mirror of
https://github.com/JetBrains/intellij-sdk-code-samples.git
synced 2025-07-27 16:57:49 +08:00
[2020.2 release] IJSDK-869 Port project_view_pane code sample to async tree based on GrailsProjectViewPane.kt. Still shows deprecation warning for BaseProjectTreeBuilder, AbstractTreeUpdater, AbstractTreeBuilder
This commit is contained in:
parent
5241b5af31
commit
32680b9f5d
@ -6,6 +6,7 @@ import com.intellij.icons.AllIcons;
|
||||
import com.intellij.ide.projectView.PresentationData;
|
||||
import com.intellij.ide.projectView.ProjectView;
|
||||
import com.intellij.ide.util.treeView.AbstractTreeNode;
|
||||
import com.intellij.openapi.application.ReadAction;
|
||||
import com.intellij.openapi.fileEditor.FileEditorManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.project.ProjectUtil;
|
||||
@ -43,14 +44,23 @@ public class ImagesProjectNode extends AbstractTreeNode<VirtualFile> {
|
||||
addAllByExt(project, "svg");
|
||||
}
|
||||
|
||||
// Creates a collection of image files asynchronously
|
||||
private void addAllByExt(Project project, String ext) {
|
||||
final Set<VirtualFile> imagesFiles = getImagesFiles(project);
|
||||
final VirtualFile projectDir = ProjectUtil.guessProjectDir(project);
|
||||
for (VirtualFile file : FilenameIndex.getAllFilesByExt(project, ext)) {
|
||||
while (file != null && !file.equals(projectDir)) {
|
||||
imagesFiles.add(file);
|
||||
file = file.getParent();
|
||||
|
||||
try {
|
||||
final Collection<VirtualFile> files = ReadAction.compute(() -> FilenameIndex.getAllFilesByExt(project, ext));
|
||||
|
||||
for (VirtualFile file : files) {
|
||||
while (file != null && !file.equals(projectDir)) {
|
||||
imagesFiles.add(file);
|
||||
file = file.getParent();
|
||||
}
|
||||
}
|
||||
|
||||
} catch (Throwable throwable) {
|
||||
throwable.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5,6 +5,7 @@ package org.intellij.sdk.view.pane;
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.ide.SelectInTarget;
|
||||
import com.intellij.ide.impl.ProjectViewSelectInTarget;
|
||||
import com.intellij.ide.projectView.BaseProjectTreeBuilder;
|
||||
import com.intellij.ide.projectView.ViewSettings;
|
||||
import com.intellij.ide.projectView.impl.AbstractProjectViewPSIPane;
|
||||
import com.intellij.ide.projectView.impl.ProjectAbstractTreeStructureBase;
|
||||
@ -54,12 +55,12 @@ public class ImagesProjectViewPane extends AbstractProjectViewPSIPane {
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "images";
|
||||
return ID;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMinorViewId() {
|
||||
return "images";
|
||||
return ID;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -78,10 +79,10 @@ public class ImagesProjectViewPane extends AbstractProjectViewPSIPane {
|
||||
return new ImagesProjectNode(project);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
// Children will be searched in async mode
|
||||
@Override
|
||||
public Object[] getChildElements(@NotNull Object element) {
|
||||
return super.getChildElements(element);
|
||||
public boolean isToBuildChildrenInBackground(@NotNull Object element) {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
}
|
||||
@ -89,7 +90,7 @@ public class ImagesProjectViewPane extends AbstractProjectViewPSIPane {
|
||||
@NotNull
|
||||
@Override
|
||||
protected ProjectViewTree createTree(@NotNull DefaultTreeModel model) {
|
||||
return new ProjectViewTree(myProject, model) {
|
||||
return new ProjectViewTree(model) {
|
||||
@Override
|
||||
public boolean isRootVisible() {
|
||||
return true;
|
||||
@ -97,11 +98,17 @@ public class ImagesProjectViewPane extends AbstractProjectViewPSIPane {
|
||||
};
|
||||
}
|
||||
|
||||
// Awaiting refactoring of AbstractProjectViewPSIPane#createTreeUpdater
|
||||
// Legacy code, awaiting refactoring of AbstractProjectViewPSIPane#createBuilder
|
||||
@Override
|
||||
protected BaseProjectTreeBuilder createBuilder(@NotNull DefaultTreeModel treeModel) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// Legacy code, awaiting refactoring of AbstractProjectViewPSIPane#createTreeUpdater
|
||||
@NotNull
|
||||
@Override
|
||||
protected AbstractTreeUpdater createTreeUpdater(@NotNull AbstractTreeBuilder builder) {
|
||||
return new AbstractTreeUpdater(builder);
|
||||
throw new IllegalStateException("ImagesProjectViewPane tree is async now");
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user