mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
conserve memory: do not store PsiFile in a node
This commit is contained in:
@@ -34,15 +34,16 @@ import java.awt.*;
|
||||
* Date: 30-Jan-2006
|
||||
*/
|
||||
public class BasePsiNode<T extends PsiElement> extends PackageDependenciesNode {
|
||||
private SmartPsiElementPointer myPsiElementPointer = null;
|
||||
private PsiFile myFile = null;
|
||||
private final SmartPsiElementPointer myPsiElementPointer;
|
||||
|
||||
public BasePsiNode(final T element) {
|
||||
super(element.getProject());
|
||||
if (element.isValid()) {
|
||||
myPsiElementPointer = SmartPointerManager.getInstance(element.getProject()).createLazyPointer(element);
|
||||
myFile = element.getContainingFile();
|
||||
}
|
||||
myPsiElementPointer = SmartPointerManager.getInstance(myProject).createSmartPsiElementPointer(element);
|
||||
}
|
||||
else {
|
||||
myPsiElementPointer = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -67,8 +68,8 @@ public class BasePsiNode<T extends PsiElement> extends PackageDependenciesNode {
|
||||
|
||||
@Nullable
|
||||
public Color getColor() {
|
||||
if (myColor == null && myFile != null) {
|
||||
myColor = FileStatusManager.getInstance(myFile.getProject()).getStatus(myFile.getVirtualFile()).getColor();
|
||||
if (myColor == null && getContainingFile() != null) {
|
||||
myColor = FileStatusManager.getInstance(myProject).getStatus(myPsiElementPointer.getVirtualFile()).getColor();
|
||||
if (myColor == null) {
|
||||
myColor = NOT_CHANGED;
|
||||
}
|
||||
@@ -104,7 +105,7 @@ public class BasePsiNode<T extends PsiElement> extends PackageDependenciesNode {
|
||||
}
|
||||
|
||||
public PsiFile getContainingFile() {
|
||||
return myFile;
|
||||
return myPsiElementPointer.getContainingFile();
|
||||
}
|
||||
|
||||
public boolean isValid() {
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
package com.intellij.packageDependencies.ui;
|
||||
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Iconable;
|
||||
import com.intellij.openapi.vcs.FileStatusManager;
|
||||
@@ -33,10 +32,8 @@ import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public class FileNode extends PackageDependenciesNode {
|
||||
private PsiFile myFile;
|
||||
private final VirtualFile myVFile;
|
||||
private final boolean myMarked;
|
||||
private static final Logger LOG = Logger.getInstance("com.intellij.packageDependencies.ui.FileNode");
|
||||
|
||||
public FileNode(VirtualFile file, Project project, boolean marked) {
|
||||
super(project);
|
||||
@@ -125,9 +122,6 @@ public class FileNode extends PackageDependenciesNode {
|
||||
|
||||
@Nullable
|
||||
private PsiFile getFile() {
|
||||
if (myFile == null) {
|
||||
myFile = PsiManager.getInstance(myProject).findFile(myVFile);
|
||||
}
|
||||
return myFile;
|
||||
return PsiManager.getInstance(myProject).findFile(myVFile);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user