mirror of
https://github.com/JetBrains/intellij-sdk-code-samples.git
synced 2025-07-27 16:57:49 +08:00
[project view pane] cleanup code
This commit is contained in:
parent
3998ab116d
commit
22e4b82163
@ -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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user