diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/LibraryDependentToolWindowManager.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/LibraryDependentToolWindowManager.java index eae0e801cc3c..238b7e917004 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/LibraryDependentToolWindowManager.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/LibraryDependentToolWindowManager.java @@ -14,6 +14,7 @@ import com.intellij.openapi.wm.ex.ToolWindowManagerEx; import com.intellij.openapi.wm.ext.LibraryDependentToolWindow; import com.intellij.psi.PsiManager; import com.intellij.util.messages.MessageBusConnection; +import org.jetbrains.annotations.NotNull; public class LibraryDependentToolWindowManager extends AbstractProjectComponent { private final ToolWindowManagerEx myToolWindowManager; @@ -28,34 +29,37 @@ public class LibraryDependentToolWindowManager extends AbstractProjectComponent public void projectOpened() { final ModuleRootListener rootListener = new ModuleRootAdapter() { public void rootsChanged(ModuleRootEvent event) { - checkToolWindowStatuses(); + if (!myProject.isDisposed()) { + checkToolWindowStatuses(myProject); + } } }; StartupManager.getInstance(myProject).runWhenProjectIsInitialized(new Runnable() { public void run() { - checkToolWindowStatuses(); - final MessageBusConnection connection = myProject.getMessageBus().connect(myProject); - connection.subscribe(ProjectTopics.PROJECT_ROOTS, rootListener); + if (!myProject.isDisposed()) { + checkToolWindowStatuses(myProject); + final MessageBusConnection connection = myProject.getMessageBus().connect(myProject); + connection.subscribe(ProjectTopics.PROJECT_ROOTS, rootListener); + } } }); } - private void checkToolWindowStatuses() { - if (myProject.isDisposed()) { - return; - } - final PsiManager psiManager = PsiManager.getInstance(myProject); - if (psiManager.isDisposed()) { - return; - } + private void checkToolWindowStatuses(@NotNull final Project project) { + assert !project.isDisposed(); - DumbService.getInstance(myProject).smartInvokeLater(new Runnable() { + DumbService.getInstance(project).smartInvokeLater(new Runnable() { public void run() { - if (myProject.isDisposed()) return; - + if (project.isDisposed()) { + return; + } + final PsiManager psiManager = PsiManager.getInstance(myProject); + if (psiManager.isDisposed()) { + return; + } for (LibraryDependentToolWindow libraryToolWindow : Extensions.getExtensions(LibraryDependentToolWindow.EXTENSION_POINT_NAME)) { - if (libraryToolWindow.getLibrarySearchHelper().isLibraryExists(myProject)) { + if (libraryToolWindow.getLibrarySearchHelper().isLibraryExists(project)) { ensureToolWindowExists(libraryToolWindow); } else {