From b579d0bd6ac5c13df19cf1015b332802a1787330 Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Fri, 28 Apr 2017 12:41:08 +0200 Subject: [PATCH] any hierarchy children calculation becomes interruptible --- .../ide/hierarchy/call/CalleeMethodsTreeStructure.java | 5 ----- .../ide/hierarchy/call/CallerMethodsTreeStructure.java | 5 ----- .../com/intellij/ide/hierarchy/HierarchyTreeStructure.java | 3 ++- 3 files changed, 2 insertions(+), 11 deletions(-) diff --git a/java/java-impl/src/com/intellij/ide/hierarchy/call/CalleeMethodsTreeStructure.java b/java/java-impl/src/com/intellij/ide/hierarchy/call/CalleeMethodsTreeStructure.java index 406983c6de2a..745519edeeec 100644 --- a/java/java-impl/src/com/intellij/ide/hierarchy/call/CalleeMethodsTreeStructure.java +++ b/java/java-impl/src/com/intellij/ide/hierarchy/call/CalleeMethodsTreeStructure.java @@ -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; diff --git a/java/java-impl/src/com/intellij/ide/hierarchy/call/CallerMethodsTreeStructure.java b/java/java-impl/src/com/intellij/ide/hierarchy/call/CallerMethodsTreeStructure.java index a44155def8fc..c66cf3ff63df 100644 --- a/java/java-impl/src/com/intellij/ide/hierarchy/call/CallerMethodsTreeStructure.java +++ b/java/java-impl/src/com/intellij/ide/hierarchy/call/CallerMethodsTreeStructure.java @@ -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(); diff --git a/platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyTreeStructure.java b/platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyTreeStructure.java index 5b57ec29cb21..f0f94cb80318 100644 --- a/platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyTreeStructure.java +++ b/platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyTreeStructure.java @@ -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;