From bda1dc8359548af5d4eb64d31a4d6e0d919ae2ee Mon Sep 17 00:00:00 2001 From: Dmitry Batkovich Date: Fri, 20 Jan 2017 12:45:16 +0300 Subject: [PATCH] properties: introduce isValid for ResourceBundle object and check it in project tree node EA-93126 --- .../lang/properties/EmptyResourceBundle.java | 5 +++++ .../intellij/lang/properties/ResourceBundle.java | 2 ++ .../lang/properties/CustomResourceBundle.java | 10 ++++++++++ .../lang/properties/ResourceBundleImpl.java | 1 + .../properties/projectView/ResourceBundleNode.java | 13 +++++++------ 5 files changed, 25 insertions(+), 6 deletions(-) diff --git a/plugins/properties/properties-psi-api/src/com/intellij/lang/properties/EmptyResourceBundle.java b/plugins/properties/properties-psi-api/src/com/intellij/lang/properties/EmptyResourceBundle.java index 677184cf5606..7d172502a43f 100644 --- a/plugins/properties/properties-psi-api/src/com/intellij/lang/properties/EmptyResourceBundle.java +++ b/plugins/properties/properties-psi-api/src/com/intellij/lang/properties/EmptyResourceBundle.java @@ -57,6 +57,11 @@ public class EmptyResourceBundle { public Project getProject() { throw new IllegalStateException(); } + + @Override + public boolean isValid() { + return false; + } }; } public static ResourceBundle getInstance() { diff --git a/plugins/properties/properties-psi-api/src/com/intellij/lang/properties/ResourceBundle.java b/plugins/properties/properties-psi-api/src/com/intellij/lang/properties/ResourceBundle.java index 898a71a89049..bada25d7aabf 100644 --- a/plugins/properties/properties-psi-api/src/com/intellij/lang/properties/ResourceBundle.java +++ b/plugins/properties/properties-psi-api/src/com/intellij/lang/properties/ResourceBundle.java @@ -53,4 +53,6 @@ public abstract class ResourceBundle { public Project getProject() { return getDefaultPropertiesFile().getProject(); } + + public abstract boolean isValid(); } diff --git a/plugins/properties/properties-psi-impl/src/com/intellij/lang/properties/CustomResourceBundle.java b/plugins/properties/properties-psi-impl/src/com/intellij/lang/properties/CustomResourceBundle.java index ac0455632509..4cde3ab79fe2 100644 --- a/plugins/properties/properties-psi-impl/src/com/intellij/lang/properties/CustomResourceBundle.java +++ b/plugins/properties/properties-psi-impl/src/com/intellij/lang/properties/CustomResourceBundle.java @@ -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; diff --git a/plugins/properties/properties-psi-impl/src/com/intellij/lang/properties/ResourceBundleImpl.java b/plugins/properties/properties-psi-impl/src/com/intellij/lang/properties/ResourceBundleImpl.java index 6da2cc234732..410cc6dd263c 100644 --- a/plugins/properties/properties-psi-impl/src/com/intellij/lang/properties/ResourceBundleImpl.java +++ b/plugins/properties/properties-psi-impl/src/com/intellij/lang/properties/ResourceBundleImpl.java @@ -56,6 +56,7 @@ public class ResourceBundleImpl extends ResourceBundle { return myDefaultPropertiesFile.getParent().getVirtualFile(); } + @Override public boolean isValid() { return myValid && myDefaultPropertiesFile.getContainingFile().isValid(); } diff --git a/plugins/properties/src/com/intellij/lang/properties/projectView/ResourceBundleNode.java b/plugins/properties/src/com/intellij/lang/properties/projectView/ResourceBundleNode.java index 2b5eb3540071..c160af21ff58 100644 --- a/plugins/properties/src/com/intellij/lang/properties/projectView/ResourceBundleNode.java +++ b/plugins/properties/src/com/intellij/lang/properties/projectView/ResourceBundleNode.java @@ -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 implements ValidateableNode, DropTargetNode { public ResourceBundleNode(Project project, ResourceBundle resourceBundle, final ViewSettings settings) { super(project, resourceBundle, settings); } + + @Override @NotNull public Collection getChildren() { @@ -128,12 +129,12 @@ public class ResourceBundleNode extends ProjectViewNode 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