any hierarchy children calculation becomes interruptible

This commit is contained in:
Maxim.Mossienko
2017-04-28 15:14:58 +02:00
parent 1374816369
commit b579d0bd6a
3 changed files with 2 additions and 11 deletions
@@ -17,7 +17,6 @@ package com.intellij.ide.hierarchy.call;
import com.intellij.ide.hierarchy.HierarchyNodeDescriptor;
import com.intellij.ide.hierarchy.HierarchyTreeStructure;
import com.intellij.ide.projectView.impl.nodes.ProjectViewDirectoryHelper;
import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.psi.search.searches.OverridingMethodsSearch;
@@ -40,10 +39,6 @@ public final class CalleeMethodsTreeStructure extends HierarchyTreeStructure {
@NotNull
protected final Object[] buildChildren(@NotNull final HierarchyNodeDescriptor descriptor) {
return ProjectViewDirectoryHelper.calculateYieldingToWriteAction(() -> calcChildren(descriptor));
}
private Object[] calcChildren(@NotNull HierarchyNodeDescriptor descriptor) {
final PsiMember enclosingElement = ((CallHierarchyNodeDescriptor)descriptor).getEnclosingElement();
if (!(enclosingElement instanceof PsiMethod)) {
return ArrayUtil.EMPTY_OBJECT_ARRAY;
@@ -17,7 +17,6 @@ package com.intellij.ide.hierarchy.call;
import com.intellij.ide.hierarchy.HierarchyNodeDescriptor;
import com.intellij.ide.hierarchy.HierarchyTreeStructure;
import com.intellij.ide.projectView.impl.nodes.ProjectViewDirectoryHelper;
import com.intellij.ide.util.treeView.NodeDescriptor;
import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
@@ -46,10 +45,6 @@ public final class CallerMethodsTreeStructure extends HierarchyTreeStructure {
@NotNull
@Override
protected final Object[] buildChildren(@NotNull final HierarchyNodeDescriptor descriptor) {
return ProjectViewDirectoryHelper.calculateYieldingToWriteAction(() -> calcChildren(descriptor));
}
private Object[] calcChildren(@NotNull HierarchyNodeDescriptor descriptor) {
PsiMember enclosingElement = ((CallHierarchyNodeDescriptor)descriptor).getEnclosingElement();
HierarchyNodeDescriptor nodeDescriptor = getBaseDescriptor();
@@ -16,6 +16,7 @@
package com.intellij.ide.hierarchy;
import com.intellij.ide.projectView.impl.nodes.ProjectViewDirectoryHelper;
import com.intellij.ide.util.treeView.AbstractTreeStructure;
import com.intellij.ide.util.treeView.NodeDescriptor;
import com.intellij.openapi.project.IndexNotReadyException;
@@ -95,7 +96,7 @@ public abstract class HierarchyTreeStructure extends AbstractTreeStructure {
if (cachedChildren == null) {
if (descriptor.isValid()) {
try {
descriptor.setCachedChildren(buildChildren(descriptor));
descriptor.setCachedChildren(ProjectViewDirectoryHelper.calculateYieldingToWriteAction(() ->buildChildren(descriptor)));
}
catch (IndexNotReadyException e) {
return ArrayUtil.EMPTY_OBJECT_ARRAY;