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

View File

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