[project view pane] cleanup code

This commit is contained in:
Yann Cébron 2020-03-06 16:01:42 +01:00
parent 3998ab116d
commit 22e4b82163
2 changed files with 31 additions and 23 deletions

View File

@ -3,16 +3,20 @@
package org.intellij.sdk.view.pane;
import com.intellij.icons.AllIcons;
import com.intellij.ide.projectView.*;
import com.intellij.ide.projectView.impl.ProjectViewImpl;
import com.intellij.ide.projectView.PresentationData;
import com.intellij.ide.projectView.ProjectView;
import com.intellij.ide.util.treeView.AbstractTreeNode;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.fileEditor.FileEditorManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectUtil;
import com.intellij.openapi.util.*;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.*;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileEvent;
import com.intellij.openapi.vfs.VirtualFileListener;
import com.intellij.psi.search.FilenameIndex;
import com.intellij.util.Alarm;
import org.jetbrains.annotations.NotNull;
@ -58,7 +62,7 @@ public class ImagesProjectNode extends AbstractTreeNode<VirtualFile> {
private Set<VirtualFile> getImagesFiles(Project project) {
Set<VirtualFile> files = project.getUserData(IMAGES_PROJECT_DIRS);
if (files == null) {
files = new HashSet<VirtualFile>();
files = new HashSet<>();
project.putUserData(IMAGES_PROJECT_DIRS, files);
}
return files;
@ -80,19 +84,16 @@ public class ImagesProjectNode extends AbstractTreeNode<VirtualFile> {
}
if (files.isEmpty()) return Collections.emptyList();
final List<AbstractTreeNode> nodes = new ArrayList<AbstractTreeNode>(files.size());
final boolean alwaysOnTop = ((ProjectViewImpl) ProjectView.getInstance(myProject)).isFoldersAlwaysOnTop("");
Collections.sort(files, new Comparator<VirtualFile>() {
@Override
public int compare(VirtualFile o1, VirtualFile o2) {
if (alwaysOnTop) {
final boolean d1 = o1.isDirectory();
final boolean d2 = o2.isDirectory();
if (d1 && !d2) return -1;
if (!d1 && d2) return 1;
}
return StringUtil.naturalCompare(o1.getName(), o2.getName());
final boolean alwaysOnTop = ProjectView.getInstance(myProject).isFoldersAlwaysOnTop("");
Collections.sort(files, (o1, o2) -> {
if (alwaysOnTop) {
final boolean d1 = o1.isDirectory();
final boolean d2 = o2.isDirectory();
if (d1 && !d2) return -1;
if (!d1 && d2) return 1;
}
return StringUtil.naturalCompare(o1.getName(), o2.getName());
});
for (VirtualFile file : files) {
nodes.add(new ImagesProjectNode(myProject, file));
@ -158,8 +159,8 @@ public class ImagesProjectNode extends AbstractTreeNode<VirtualFile> {
@Override
public void run() {
ProjectView.getInstance(myProject)
.getProjectViewPaneById(ImagesProjectViewPane.ID)
.updateFromRoot(true);
.getProjectViewPaneById(ImagesProjectViewPane.ID)
.updateFromRoot(true);
}
});
}

View File

@ -23,11 +23,13 @@ public class ImagesProjectViewPane extends AbstractProjectViewPSIPane {
super(project);
}
@NotNull
@Override
public String getTitle() {
return "SDK-Images";
}
@NotNull
@Override
public javax.swing.Icon getIcon() {
return AllIcons.FileTypes.Custom;
@ -44,6 +46,7 @@ public class ImagesProjectViewPane extends AbstractProjectViewPSIPane {
return 10;
}
@NotNull
@Override
public SelectInTarget createSelectInTarget() {
return new ProjectViewSelectInTarget(myProject) {
@ -66,23 +69,26 @@ public class ImagesProjectViewPane extends AbstractProjectViewPSIPane {
};
}
@NotNull
@Override
protected ProjectAbstractTreeStructureBase createStructure() {
return new ProjectTreeStructure(myProject, ID) {
@Override
protected AbstractTreeNode createRoot(Project project, ViewSettings settings) {
protected AbstractTreeNode createRoot(@NotNull Project project, @NotNull ViewSettings settings) {
return new ImagesProjectNode(project);
}
@NotNull
@Override
public Object[] getChildElements(Object element) {
public Object[] getChildElements(@NotNull Object element) {
return super.getChildElements(element);
}
};
}
@NotNull
@Override
protected ProjectViewTree createTree(DefaultTreeModel model) {
protected ProjectViewTree createTree(@NotNull DefaultTreeModel model) {
return new ProjectViewTree(myProject, model) {
@Override
public boolean isRootVisible() {
@ -91,8 +97,9 @@ public class ImagesProjectViewPane extends AbstractProjectViewPSIPane {
};
}
@NotNull
@Override
protected AbstractTreeUpdater createTreeUpdater(AbstractTreeBuilder builder) {
protected AbstractTreeUpdater createTreeUpdater(@NotNull AbstractTreeBuilder builder) {
return new AbstractTreeUpdater(builder);
}
}