force cancel update on close toolwindow (IDEA-75080)

This commit is contained in:
anna
2011-10-10 17:37:29 +02:00
parent c8eafbe32f
commit ca84d3b2f8
5 changed files with 18 additions and 3 deletions
@@ -126,6 +126,7 @@ public class SliceManager implements PersistentStateComponent<SliceManager.Store
ToolWindow toolWindow = ToolWindowManager.getInstance(myProject).getToolWindow(dataFlowToThis ? BACK_TOOLWINDOW_ID : FORTH_TOOLWINDOW_ID);
final SlicePanel slicePanel = new SlicePanel(myProject, dataFlowToThis, rootNode, splitByLeafExpressions, toolWindow) {
protected void close() {
super.close();
contentManager.removeContent(myContent[0], true);
}
@@ -22,6 +22,7 @@ import com.intellij.ide.util.treeView.AbstractTreeNode;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.progress.ProgressIndicator;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Splitter;
import com.intellij.openapi.util.Disposer;
@@ -351,7 +352,12 @@ public abstract class SlicePanel extends JPanel implements TypeSafeDataProvider,
}
}
protected abstract void close();
protected void close() {
final ProgressIndicator progress = myBuilder.getUi().getProgress();
if (progress != null) {
progress.cancel();
}
}
private final class MyRefreshAction extends RefreshAction {
private MyRefreshAction(JComponent tree) {
@@ -6,8 +6,6 @@ import com.intellij.codeInsight.daemon.LightDaemonAnalyzerTestCase;
import com.intellij.codeInsight.daemon.impl.HighlightInfo;
import com.intellij.ide.util.treeView.AbstractTreeNode;
import com.intellij.lang.annotation.HighlightSeverity;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.projectRoots.impl.JavaSdkImpl;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.wm.impl.ToolWindowHeadlessManagerImpl;
@@ -20,6 +20,7 @@ import com.intellij.ide.actions.CloseTabToolbarAction;
import com.intellij.ide.actions.ContextHelpAction;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.progress.ProgressIndicator;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.SimpleToolWindowPanel;
import com.intellij.pom.Navigatable;
@@ -98,6 +99,7 @@ public abstract class HierarchyBrowserBase extends SimpleToolWindowPanel impleme
}
protected abstract JTree getCurrentTree();
protected abstract HierarchyTreeBuilder getCurrentBuilder();
@Nullable
protected abstract PsiElement getElementFromDescriptor(@NotNull HierarchyNodeDescriptor descriptor);
@@ -215,6 +217,10 @@ public abstract class HierarchyBrowserBase extends SimpleToolWindowPanel impleme
private final class CloseAction extends CloseTabToolbarAction {
public final void actionPerformed(final AnActionEvent e) {
final ProgressIndicator progress = getCurrentBuilder().getUi().getProgress();
if (progress != null) {
progress.cancel();
}
myContent.getManager().removeContent(myContent, true);
}
}
@@ -438,6 +438,10 @@ public class AbstractTreeUi {
});
}
public ProgressIndicator getProgress() {
return myProgress;
}
private void releaseNow() {
try {
acquireLock();