From 9b5a6fd6c8456f5369d6e86a5142ea3a4221a414 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Fri, 16 Dec 2016 16:55:09 +0300 Subject: [PATCH] IDEA-165402 Toolwindow initialization takes noticeable time during project loading without visual... --- .../intellij/ide/startup/impl/StartupManagerImpl.java | 8 +++++++- .../openapi/fileEditor/impl/EditorsSplitters.java | 9 --------- .../openapi/project/impl/ProjectManagerImpl.java | 4 +++- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/startup/impl/StartupManagerImpl.java b/platform/platform-impl/src/com/intellij/ide/startup/impl/StartupManagerImpl.java index df8951bfde07..27ee4b06c80f 100644 --- a/platform/platform-impl/src/com/intellij/ide/startup/impl/StartupManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/ide/startup/impl/StartupManagerImpl.java @@ -141,10 +141,16 @@ public class StartupManagerImpl extends StartupManagerEx { } public void runPostStartupActivitiesFromExtensions() { - for (final StartupActivity extension : Extensions.getExtensions(StartupActivity.POST_STARTUP_ACTIVITY)) { + StartupActivity[] extensions = Extensions.getExtensions(StartupActivity.POST_STARTUP_ACTIVITY); + for (final StartupActivity extension : extensions) { final Runnable runnable = () -> { if (!myProject.isDisposed()) { + long start = System.currentTimeMillis(); extension.runActivity(myProject); + long duration = System.currentTimeMillis() - start; + if (duration > 200) { + LOG.info(extension.getClass().getSimpleName() + " run in " + duration); + } } }; if (extension instanceof DumbAware) { diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorsSplitters.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorsSplitters.java index 7f1de68d398f..2f46836bf55d 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorsSplitters.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorsSplitters.java @@ -15,7 +15,6 @@ */ package com.intellij.openapi.fileEditor.impl; -import com.intellij.ide.IdeBundle; import com.intellij.ide.ui.UISettings; import com.intellij.ide.ui.UISettingsListener; import com.intellij.openapi.Disposable; @@ -235,7 +234,6 @@ public class EditorsSplitters extends IdePanePanel implements UISettingsListener public void openFiles() { if (mySplittersElement != null) { - initializeProgress(); final JPanel comp = myUIBuilder.process(mySplittersElement, getTopPanel()); UIUtil.invokeAndWaitIfNeeded((Runnable)() -> { if (comp != null) { @@ -255,13 +253,6 @@ public class EditorsSplitters extends IdePanePanel implements UISettingsListener } } - private static void initializeProgress() { - ProgressIndicator indicator = ProgressManager.getInstance().getProgressIndicator(); - if (indicator != null) { - indicator.setText(IdeBundle.message("loading.editors")); - } - } - public int getEditorsCount() { return mySplittersElement == null ? 0 : countFiles(mySplittersElement); } diff --git a/platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectManagerImpl.java index 56f0bcf019bc..466b67db6242 100644 --- a/platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectManagerImpl.java @@ -352,7 +352,9 @@ public class ProjectManagerImpl extends ProjectManagerEx implements Disposable { } }, ModalityState.NON_MODAL); }; - if (myProgressManager.getProgressIndicator() != null) { + ProgressIndicator indicator = myProgressManager.getProgressIndicator(); + if (indicator != null) { + indicator.setText("Preparing workspace..."); process.run(); return true; }