ExternalProjectRefreshCallback (@NotNull final Project project, @NotNull ExternalProjectSettings projectSettings) { return new ExternalProjectRefreshCallback() { @Override public void onSuccess(@Nullable final DataNode<ProjectData> externalProject) { if (externalProject == null) return; Runnable selectDataTask = () -> { ExternalProjectDataSelectorDialog dialog = new ExternalProjectDataSelectorDialog( project, new InternalExternalProjectInfo( GradleConstants.SYSTEM_ID, projectSettings.getExternalProjectPath(), externalProject)); if (dialog.hasMultipleDataToSelect()) { dialog.showAndGet(); } else { Disposer.dispose(dialog.getDisposable()); } }; Runnable importTask = () -> ProjectDataManager.getInstance().importData(externalProject, project); boolean showSelectiveImportDialog = GradleSettings.getInstance(project).showSelectiveImportDialogOnInitialImport(); if (showSelectiveImportDialog && !ApplicationManager.getApplication().isHeadlessEnvironment()) { ApplicationManager.getApplication().invokeLater(() -> { selectDataTask.run(); ApplicationManager.getApplication().executeOnPooledThread(importTask); }); } else { importTask.run(); } } }; }