resource bundle node should keep resource bundle as object to provide proper equals/hashCode IDEA-203616

This commit is contained in:
Dmitry Batkovich
2018-12-05 18:27:21 +03:00
parent 6b192bde9b
commit 4694ff5fc8
@@ -1,4 +1,6 @@
// Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. // Copyright 2000-2017 JetBrains s.r.o.
// Use of this source code is governed by the Apache 2.0 license that can be
// found in the LICENSE file.
package com.intellij.lang.properties.projectView; package com.intellij.lang.properties.projectView;
@@ -35,6 +37,7 @@ import org.jetbrains.annotations.Nullable;
import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeNode; import javax.swing.tree.TreeNode;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
public class ResourceBundleNode extends ProjectViewNode<PsiFile[]> implements ValidateableNode, DropTargetNode, ResourceBundleAwareNode { public class ResourceBundleNode extends ProjectViewNode<PsiFile[]> implements ValidateableNode, DropTargetNode, ResourceBundleAwareNode {
@@ -76,16 +79,11 @@ public class ResourceBundleNode extends ProjectViewNode<PsiFile[]> implements Va
} }
@Override @Override
public void update(@NotNull PresentationData presentation) { public void update(PresentationData presentation) {
presentation.setIcon(AllIcons.Nodes.ResourceBundle); presentation.setIcon(AllIcons.Nodes.ResourceBundle);
presentation.setPresentableText(PropertiesBundle.message("project.view.resource.bundle.tree.node.text", myBundle.getBaseName())); presentation.setPresentableText(PropertiesBundle.message("project.view.resource.bundle.tree.node.text", myBundle.getBaseName()));
} }
@Override
protected boolean shouldUpdateData() {
return isValid() && super.shouldUpdateData();
}
@Override @Override
public boolean canNavigateToSource() { public boolean canNavigateToSource() {
return true; return true;
@@ -131,7 +129,7 @@ public class ResourceBundleNode extends ProjectViewNode<PsiFile[]> implements Va
} }
@Override @Override
public boolean canDrop(@NotNull TreeNode[] sourceNodes) { public boolean canDrop(TreeNode[] sourceNodes) {
for (TreeNode node : sourceNodes) { for (TreeNode node : sourceNodes) {
if (extractPropertiesFileFromNode(node) == null) return false; if (extractPropertiesFileFromNode(node) == null) return false;
} }
@@ -139,7 +137,7 @@ public class ResourceBundleNode extends ProjectViewNode<PsiFile[]> implements Va
} }
@Override @Override
public void drop(@NotNull TreeNode[] sourceNodes, @NotNull DataContext dataContext) { public void drop(TreeNode[] sourceNodes, DataContext dataContext) {
MultiMap<ResourceBundle, PropertiesFile> bundleGrouping = new MultiMap<>(); MultiMap<ResourceBundle, PropertiesFile> bundleGrouping = new MultiMap<>();
for (TreeNode sourceNode : sourceNodes) { for (TreeNode sourceNode : sourceNodes) {
final PropertiesFile propertiesFile = extractPropertiesFileFromNode(sourceNode); final PropertiesFile propertiesFile = extractPropertiesFileFromNode(sourceNode);
@@ -181,7 +179,13 @@ public class ResourceBundleNode extends ProjectViewNode<PsiFile[]> implements Va
@NotNull @NotNull
@Override @Override
public ResourceBundle getResourceBundle() { public ResourceBundle getResourceBundle() {
return myBundle; return getValue();
}
@NotNull
@Override
public Collection<VirtualFile> getRoots() {
return getResourceBundle().getPropertiesFiles().stream().map(f -> f.getVirtualFile()).collect(Collectors.toList());
} }
@Nullable @Nullable