diff --git a/java/idea-ui/src/com/intellij/jarRepository/JarRepositoryManager.java b/java/idea-ui/src/com/intellij/jarRepository/JarRepositoryManager.java index e4fe9911030c..f03390b9198c 100644 --- a/java/idea-ui/src/com/intellij/jarRepository/JarRepositoryManager.java +++ b/java/idea-ui/src/com/intellij/jarRepository/JarRepositoryManager.java @@ -21,6 +21,7 @@ import com.intellij.notification.Notification; import com.intellij.notification.NotificationType; import com.intellij.notification.Notifications; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.application.Result; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.components.PathMacroManager; @@ -212,7 +213,7 @@ public class JarRepositoryManager { return Collections.emptyList(); } - public static void loadDependenciesAsync(Project project, + public static void loadDependenciesAsync(@NotNull Project project, RepositoryLibraryProperties libraryProps, boolean loadSources, boolean loadJavadoc, @@ -233,7 +234,7 @@ public class JarRepositoryManager { ); } - public static void loadDependenciesAsync(Project project, JpsMavenRepositoryLibraryDescriptor desc, final Set artifactKinds, @Nullable List repos, @Nullable String copyTo, Consumer> resultProcessor) { + public static void loadDependenciesAsync(@NotNull Project project, JpsMavenRepositoryLibraryDescriptor desc, final Set artifactKinds, @Nullable List repos, @Nullable String copyTo, Consumer> resultProcessor) { if (repos == null || repos.isEmpty()) { repos = RemoteRepositoriesConfiguration.getInstance(project).getRepositories(); } @@ -372,10 +373,11 @@ public class JarRepositoryManager { } private static Future submitBackgroundJob(@Nullable final Project project, final String title, final Function job){ + final ModalityState startModality = ModalityState.defaultModalityState(); return JobExecutor.INSTANCE.submit(() -> { try { ourTasksInProgress++; - final ProgressIndicator indicator = new EmptyProgressIndicator(); + final ProgressIndicator indicator = new EmptyProgressIndicator(startModality); return ProgressManager.getInstance().runProcess(() -> job.apply(indicator), indicator); } catch (ProcessCanceledException ignored){ diff --git a/java/idea-ui/src/com/intellij/jarRepository/RepositoryLibraryWithDescriptionEditor.java b/java/idea-ui/src/com/intellij/jarRepository/RepositoryLibraryWithDescriptionEditor.java index 5c99fdc7928f..1589068e888d 100644 --- a/java/idea-ui/src/com/intellij/jarRepository/RepositoryLibraryWithDescriptionEditor.java +++ b/java/idea-ui/src/com/intellij/jarRepository/RepositoryLibraryWithDescriptionEditor.java @@ -16,8 +16,10 @@ package com.intellij.jarRepository; import com.intellij.jarRepository.settings.RepositoryLibraryPropertiesDialog; +import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.OrderRootType; import com.intellij.openapi.roots.libraries.ui.LibraryEditorComponent; +import com.intellij.openapi.roots.libraries.ui.OrderRoot; import com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryEditor; import com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryPropertiesEditorBase; import org.jetbrains.annotations.NotNull; @@ -26,6 +28,8 @@ import org.jetbrains.idea.maven.utils.library.RepositoryLibraryProperties; import org.jetbrains.idea.maven.utils.library.RepositoryUtils; import org.jetbrains.idea.maven.utils.library.propertiesEditor.RepositoryLibraryPropertiesModel; +import java.util.Collection; + public class RepositoryLibraryWithDescriptionEditor extends LibraryPropertiesEditorBase { @@ -47,8 +51,12 @@ public class RepositoryLibraryWithDescriptionEditor properties.getVersion(), RepositoryUtils.libraryHasSources(myEditorComponent.getLibraryEditor()), RepositoryUtils.libraryHasJavaDocs(myEditorComponent.getLibraryEditor())); + + final Project project = myEditorComponent.getProject(); + assert project != null : "EditorComponent's project must not be null in order to be used with RepositoryLibraryWithDescriptionEditor"; + RepositoryLibraryPropertiesDialog dialog = new RepositoryLibraryPropertiesDialog( - myEditorComponent.getProject(), + project, model, RepositoryLibraryDescription.findDescription(properties), true); @@ -60,15 +68,15 @@ public class RepositoryLibraryWithDescriptionEditor myEditorComponent.renameLibrary(RepositoryLibraryType.getInstance().getDescription(properties)); } final LibraryEditor libraryEditor = myEditorComponent.getLibraryEditor(); - final String copyTo = RepositoryUtils.getStorageRoot(myEditorComponent.getLibraryEditor().getUrls(OrderRootType.CLASSES), myEditorComponent.getProject()); - JarRepositoryManager.loadDependenciesAsync( - myEditorComponent.getProject(), properties, model.isDownloadSources(), model.isDownloadJavaDocs(), null, copyTo, - roots -> { - libraryEditor.removeAllRoots(); - if (roots != null) { - libraryEditor.addRoots(roots); - } - } + final String copyTo = RepositoryUtils.getStorageRoot(myEditorComponent.getLibraryEditor().getUrls(OrderRootType.CLASSES), project); + final Collection roots = JarRepositoryManager.loadDependenciesModal( + project, properties, model.isDownloadSources(), model.isDownloadJavaDocs(), copyTo, null ); + libraryEditor.removeAllRoots(); + if (roots != null) { + libraryEditor.addRoots(roots); + } + myEditorComponent.updateRootsTree(); + updateDescription(); } }