mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Slow updating of project view while resource bundle dissociation fixed
This commit is contained in:
+13
-1
@@ -17,6 +17,7 @@ package com.intellij.lang.properties.customizeActions;
|
||||
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.ide.projectView.ProjectView;
|
||||
import com.intellij.ide.util.treeView.AbstractTreeBuilder;
|
||||
import com.intellij.lang.properties.PropertiesImplUtil;
|
||||
import com.intellij.lang.properties.ResourceBundle;
|
||||
import com.intellij.lang.properties.ResourceBundleManager;
|
||||
@@ -27,12 +28,15 @@ import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.LangDataKeys;
|
||||
import com.intellij.openapi.fileEditor.FileEditorManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiDirectory;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiFileSystemItem;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.HashSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
@@ -73,14 +77,22 @@ public class DissociateResourceBundleAction extends AnAction {
|
||||
|
||||
public static void dissociate(final Collection<ResourceBundle> resourceBundles, final Project project) {
|
||||
final FileEditorManager fileEditorManager = FileEditorManager.getInstance(project);
|
||||
final Set<PsiFileSystemItem> toUpdateInProjectView = new HashSet<PsiFileSystemItem>();
|
||||
for (ResourceBundle resourceBundle : resourceBundles) {
|
||||
fileEditorManager.closeFile(new ResourceBundleAsVirtualFile(resourceBundle));
|
||||
for (final PropertiesFile propertiesFile : resourceBundle.getPropertiesFiles()) {
|
||||
fileEditorManager.closeFile(propertiesFile.getVirtualFile());
|
||||
PsiDirectory containingDirectory = propertiesFile.getContainingFile().getContainingDirectory();
|
||||
if (containingDirectory != null) {
|
||||
toUpdateInProjectView.add(containingDirectory);
|
||||
}
|
||||
}
|
||||
ResourceBundleManager.getInstance(project).dissociateResourceBundle(resourceBundle);
|
||||
}
|
||||
ProjectView.getInstance(project).refresh();
|
||||
AbstractTreeBuilder treeBuilder = ProjectView.getInstance(project).getCurrentProjectViewPane().getTreeBuilder();
|
||||
for (PsiFileSystemItem item : toUpdateInProjectView) {
|
||||
treeBuilder.queueUpdateFrom(item, false);
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
+9
@@ -32,6 +32,7 @@ import com.intellij.openapi.fileEditor.FileEditorManager;
|
||||
import com.intellij.openapi.fileEditor.OpenFileDescriptor;
|
||||
import com.intellij.openapi.fileTypes.StdFileTypes;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiManager;
|
||||
@@ -97,4 +98,12 @@ public class ResourceBundleNode extends ProjectViewNode<ResourceBundle>{
|
||||
public Comparable getTypeSortKey() {
|
||||
return new PsiFileNode.ExtensionSortKey(StdFileTypes.PROPERTIES.getDefaultExtension());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean validate() {
|
||||
if (!super.validate()) {
|
||||
return false;
|
||||
}
|
||||
return Comparing.equal(getValue().getDefaultPropertiesFile().getResourceBundle(), getValue());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user