diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowManagerImpl.java index 96fe52a91bb4..d52fd21957a1 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowManagerImpl.java @@ -35,6 +35,9 @@ import com.intellij.openapi.fileEditor.ex.FileEditorManagerEx; import com.intellij.openapi.fileEditor.impl.EditorsSplitters; import com.intellij.openapi.keymap.Keymap; import com.intellij.openapi.keymap.KeymapManager; +import com.intellij.openapi.progress.ProgressIndicator; +import com.intellij.openapi.progress.ProgressManager; +import com.intellij.openapi.progress.Task; import com.intellij.openapi.project.DumbAwareRunnable; import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; @@ -481,9 +484,25 @@ public final class ToolWindowManagerImpl extends ToolWindowManagerEx implements ToolWindowEP[] beans = Extensions.getExtensions(ToolWindowEP.EP_NAME); for (final ToolWindowEP bean : beans) { final Condition condition = bean.getCondition(); - if (condition == null || condition.value(myProject)) { + if (condition == null) { initToolWindow(bean); } + else { + ProgressManager.getInstance().run( + new Task.Backgroundable(myProject, bean.id + " initialization", true) { + @Override + public void run(@NotNull ProgressIndicator indicator) { + if (condition.value(myProject)) { + ApplicationManager.getApplication().invokeLater(new Runnable() { + @Override + public void run() { + initToolWindow(bean); + } + }); + } + } + }); + } } }