IDEA-171774 Configuration of repository library isn't updated after changing its version

This commit is contained in:
Eugene Zhuravlev
2017-04-26 14:34:23 +02:00
parent 466ce6e703
commit 04e828dbb8
2 changed files with 23 additions and 13 deletions
@@ -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<ArtifactKind> artifactKinds, @Nullable List<RemoteRepositoryDescription> repos, @Nullable String copyTo, Consumer<Collection<OrderRoot>> resultProcessor) {
public static void loadDependenciesAsync(@NotNull Project project, JpsMavenRepositoryLibraryDescriptor desc, final Set<ArtifactKind> artifactKinds, @Nullable List<RemoteRepositoryDescription> repos, @Nullable String copyTo, Consumer<Collection<OrderRoot>> resultProcessor) {
if (repos == null || repos.isEmpty()) {
repos = RemoteRepositoriesConfiguration.getInstance(project).getRepositories();
}
@@ -372,10 +373,11 @@ public class JarRepositoryManager {
}
private static <T> Future<T> submitBackgroundJob(@Nullable final Project project, final String title, final Function<ProgressIndicator, T> 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){
@@ -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<RepositoryLibraryProperties, RepositoryLibraryType> {
@@ -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<OrderRoot> roots = JarRepositoryManager.loadDependenciesModal(
project, properties, model.isDownloadSources(), model.isDownloadJavaDocs(), copyTo, null
);
libraryEditor.removeAllRoots();
if (roots != null) {
libraryEditor.addRoots(roots);
}
myEditorComponent.updateRootsTree();
updateDescription();
}
}