EA-91083 - assert: Alarm.checkDisposed

This commit is contained in:
Alexey Kudravtsev
2016-12-08 19:42:17 +03:00
parent a95bbe99b0
commit 26c851e112
2 changed files with 21 additions and 5 deletions
@@ -59,6 +59,7 @@ public abstract class HierarchyBrowserBase extends SimpleToolWindowPanel impleme
protected Content myContent;
private final AutoScrollToSourceHandler myAutoScrollToSourceHandler;
private volatile boolean myDisposed;
protected HierarchyBrowserBase(@NotNull Project project) {
super(true, true);
@@ -87,7 +88,13 @@ public abstract class HierarchyBrowserBase extends SimpleToolWindowPanel impleme
}
@Override
public void dispose() { }
public void dispose() {
myDisposed = true;
}
public boolean isDisposed() {
return myDisposed;
}
protected ActionToolbar createToolbar(final String place, final String helpID) {
final DefaultActionGroup actionGroup = new DefaultActionGroup();
@@ -17,6 +17,7 @@
package com.intellij.ide.hierarchy.actions;
import com.intellij.ide.hierarchy.HierarchyBrowser;
import com.intellij.ide.hierarchy.HierarchyBrowserBase;
import com.intellij.ide.hierarchy.HierarchyBrowserManager;
import com.intellij.ide.hierarchy.HierarchyProvider;
import com.intellij.lang.LanguageExtension;
@@ -66,12 +67,15 @@ public abstract class BrowseHierarchyActionBase extends AnAction {
createAndAddToPanel(project, provider, target);
}
public static HierarchyBrowser createAndAddToPanel(@NotNull Project project, @NotNull final HierarchyProvider provider, @NotNull PsiElement target) {
final HierarchyBrowser hierarchyBrowser = provider.createHierarchyBrowser(target);
@NotNull
public static HierarchyBrowser createAndAddToPanel(@NotNull Project project,
@NotNull final HierarchyProvider provider,
@NotNull PsiElement target) {
HierarchyBrowser hierarchyBrowser = provider.createHierarchyBrowser(target);
final Content content;
final HierarchyBrowserManager hierarchyBrowserManager = HierarchyBrowserManager.getInstance(project);
HierarchyBrowserManager hierarchyBrowserManager = HierarchyBrowserManager.getInstance(project);
final ContentManager contentManager = hierarchyBrowserManager.getContentManager();
final Content selectedContent = contentManager.getSelectedContent();
@@ -90,7 +94,12 @@ public abstract class BrowseHierarchyActionBase extends AnAction {
contentManager.setSelectedContent(content);
hierarchyBrowser.setContent(content);
final Runnable runnable = () -> provider.browserActivated(hierarchyBrowser);
final Runnable runnable = () -> {
if (hierarchyBrowser instanceof HierarchyBrowserBase && ((HierarchyBrowserBase)hierarchyBrowser).isDisposed()) {
return;
}
provider.browserActivated(hierarchyBrowser);
};
ToolWindowManager.getInstance(project).getToolWindow(ToolWindowId.HIERARCHY).activate(runnable);
return hierarchyBrowser;
}