void () { ProgressManager.checkCanceled(); if (isInitializationStarted.getAndSet(true)) { return; } // load external projects data ExternalProjectsDataStorage.getInstance(myProject).load(); myRunManagerListener.attach(); // init shortcuts manager myShortcutsManager.init(); for (ExternalSystemManager<?, ?, ?, ?, ?> systemManager : ExternalSystemManager.EP_NAME.getIterable()) { Collection<ExternalProjectInfo> externalProjects = ExternalProjectsDataStorage.getInstance(myProject).list(systemManager.getSystemId()); for (ExternalProjectInfo externalProject : externalProjects) { if (externalProject.getExternalProjectStructure() == null) { continue; } Collection<DataNode<TaskData>> taskData = ExternalSystemApiUtil.findAllRecursively(externalProject.getExternalProjectStructure(), TASK); myShortcutsManager.scheduleKeymapUpdate(taskData); } if (!externalProjects.isEmpty()) { myShortcutsManager.scheduleRunConfigurationKeymapUpdate(systemManager.getSystemId()); } } // init task activation info myTaskActivator.init(); synchronized (isInitializationFinished) { isInitializationFinished.set(true); invokeLater(() -> { myPostInitializationActivities.run(); myPostInitializationActivities.clear(); }); ApplicationManager.getApplication().executeOnPooledThread(() -> { myPostInitializationBGActivities.run(); myPostInitializationBGActivities.clear(); }); } }