diff --git a/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryCompositionSettings.java b/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryCompositionSettings.java index 12381bc1682d..33bf8a57ae56 100644 --- a/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryCompositionSettings.java +++ b/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryCompositionSettings.java @@ -25,7 +25,6 @@ import com.intellij.openapi.roots.impl.libraries.ApplicationLibraryTable; import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainer; import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainerFactory; -import com.intellij.openapi.util.Disposer; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.containers.ContainerUtil; @@ -66,6 +65,19 @@ public class LibraryCompositionSettings implements Disposable { myIcon = icon; } + public void addFilesToLibrary(VirtualFile[] files, OrderRootType orderRootType) { + final Library.ModifiableModel modifiableModel = getOrCreateLibrary().getModifiableModel(); + for (VirtualFile file : files) { + modifiableModel.addRoot(file, orderRootType); + } + ApplicationManager.getApplication().runWriteAction(new Runnable() { + @Override + public void run() { + modifiableModel.commit(); + } + }); + } + @NotNull public LibraryInfo[] getLibraryInfos() { return myLibraryInfos; @@ -134,16 +146,19 @@ public class LibraryCompositionSettings implements Disposable { if (files.length != downloadingInfos.length) { return false; } + addFilesToLibrary(files, OrderRootType.CLASSES); } } } return true; } + @Nullable private Library createLibrary(final ModifiableRootModel rootModel, @Nullable LibrariesContainer additionalContainer) { if (myLibrary != null) { VirtualFile[] roots = myLibrary.getFiles(OrderRootType.CLASSES); + myLibrary.dispose(); return LibrariesContainerFactory.createLibrary(additionalContainer, LibrariesContainerFactory.createContainer(rootModel), myLibraryName, myLibraryLevel, roots, VirtualFile.EMPTY_ARRAY); } @@ -213,7 +228,6 @@ public class LibraryCompositionSettings implements Disposable { @Override public void run() { myLibrary = new ApplicationLibraryTable().createLibrary(); - Disposer.register(LibraryCompositionSettings.this, myLibrary); } }); } @@ -222,5 +236,6 @@ public class LibraryCompositionSettings implements Disposable { @Override public void dispose() { + System.out.println("I'm disposed!"); } } diff --git a/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryOptionsPanel.java b/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryOptionsPanel.java index deff8392b746..a74bf9bd9806 100644 --- a/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryOptionsPanel.java +++ b/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/LibraryOptionsPanel.java @@ -18,7 +18,6 @@ package com.intellij.facet.impl.ui.libraries; import com.intellij.facet.ui.libraries.LibraryInfo; import com.intellij.ide.IdeBundle; import com.intellij.ide.util.ElementsChooser; -import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.fileChooser.FileChooser; import com.intellij.openapi.fileChooser.FileChooserDescriptor; import com.intellij.openapi.roots.OrderRootType; @@ -96,16 +95,7 @@ public class LibraryOptionsPanel { case PICK_FILES: if (mySettings.getLibrary() == null) { VirtualFile[] files = showFileChooser(); - final Library.ModifiableModel modifiableModel = mySettings.getOrCreateLibrary().getModifiableModel(); - for (VirtualFile file : files) { - modifiableModel.addRoot(file, OrderRootType.CLASSES); - } - ApplicationManager.getApplication().runWriteAction(new Runnable() { - @Override - public void run() { - modifiableModel.commit(); - } - }); + mySettings.addFilesToLibrary(files, OrderRootType.CLASSES); } EditLibraryDialog dialog = new EditLibraryDialog(myConfigureButton, mySettings); showDialog(dialog);