properties: introduce isValid for ResourceBundle object and check it in project tree node EA-93126

This commit is contained in:
Dmitry Batkovich
2017-01-20 12:45:16 +03:00
parent c086bf612a
commit bda1dc8359
5 changed files with 25 additions and 6 deletions
@@ -57,6 +57,11 @@ public class EmptyResourceBundle {
public Project getProject() {
throw new IllegalStateException();
}
@Override
public boolean isValid() {
return false;
}
};
}
public static ResourceBundle getInstance() {
@@ -53,4 +53,6 @@ public abstract class ResourceBundle {
public Project getProject() {
return getDefaultPropertiesFile().getProject();
}
public abstract boolean isValid();
}
@@ -85,6 +85,16 @@ public class CustomResourceBundle extends ResourceBundle {
return baseDir;
}
@Override
public boolean isValid() {
for (PropertiesFile file : myFiles) {
if (!file.getContainingFile().isValid()) {
return false;
}
}
return true;
}
public boolean equals(final Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
@@ -56,6 +56,7 @@ public class ResourceBundleImpl extends ResourceBundle {
return myDefaultPropertiesFile.getParent().getVirtualFile();
}
@Override
public boolean isValid() {
return myValid && myDefaultPropertiesFile.getContainingFile().isValid();
}
@@ -29,6 +29,7 @@ import com.intellij.ide.projectView.impl.nodes.PsiFileNode;
import com.intellij.ide.util.treeView.AbstractTreeNode;
import com.intellij.ide.util.treeView.ValidateableNode;
import com.intellij.lang.properties.*;
import com.intellij.lang.properties.ResourceBundle;
import com.intellij.lang.properties.editor.ResourceBundleAsVirtualFile;
import com.intellij.lang.properties.psi.PropertiesFile;
import com.intellij.openapi.actionSystem.DataContext;
@@ -41,22 +42,22 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiFileSystemItem;
import com.intellij.psi.PsiManager;
import com.intellij.util.ObjectUtils;
import com.intellij.util.containers.MultiMap;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeNode;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.*;
public class ResourceBundleNode extends ProjectViewNode<ResourceBundle> implements ValidateableNode, DropTargetNode {
public ResourceBundleNode(Project project, ResourceBundle resourceBundle, final ViewSettings settings) {
super(project, resourceBundle, settings);
}
@Override
@NotNull
public Collection<AbstractTreeNode> getChildren() {
@@ -128,12 +129,12 @@ public class ResourceBundleNode extends ProjectViewNode<ResourceBundle> implemen
if (!Comparing.equal(newBundle, currentBundle)) {
return false;
}
return !(currentBundle instanceof ResourceBundleImpl) || ((ResourceBundleImpl)currentBundle).isValid();
return ObjectUtils.notNull(currentBundle).isValid();
}
@Override
public boolean isValid() {
return getValue().getDefaultPropertiesFile().getContainingFile().isValid();
return ObjectUtils.notNull(getValue()).isValid();
}
@Override