From afb34733d23512f506961d34a2d2c45f040548ce Mon Sep 17 00:00:00 2001 From: nik Date: Thu, 23 Sep 2010 11:32:24 +0400 Subject: [PATCH] IDEA-58921: Not disposed after using project wizard + framework support, download libs via maven --- .../impl/ui/libraries/EditLibraryDialog.java | 6 +-- .../libraries/LibraryCompositionSettings.java | 38 ++++++------------- .../ui/libraries/LibraryOptionsPanel.java | 9 +++-- .../libraries/CreateCustomLibraryAction.java | 2 - .../libraryEditor/LibraryRootsComponent.java | 5 +-- .../projectRoot/LibraryConfigurable.java | 6 ++- 6 files changed, 24 insertions(+), 42 deletions(-) diff --git a/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/EditLibraryDialog.java b/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/EditLibraryDialog.java index c311ff37293a..aa7e4f54b6e1 100644 --- a/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/EditLibraryDialog.java +++ b/java/idea-ui/src/com/intellij/facet/impl/ui/libraries/EditLibraryDialog.java @@ -15,8 +15,6 @@ */ package com.intellij.facet.impl.ui.libraries; -import com.intellij.openapi.roots.libraries.Library; -import com.intellij.openapi.roots.ui.configuration.libraryEditor.ExistingLibraryEditor; import com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryRootsComponent; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.util.Disposer; @@ -39,9 +37,7 @@ public class EditLibraryDialog extends DialogWrapper { public EditLibraryDialog(Component parent, LibraryCompositionSettings settings) { super(parent, true); mySettings = settings; - final Library library = settings.getOrCreateLibrary(); - - myLibraryRootsComponent = LibraryRootsComponent.createComponent(new ExistingLibraryEditor(library, null)); + myLibraryRootsComponent = LibraryRootsComponent.createComponent(settings.getOrCreateLibrary()); Disposer.register(getDisposable(), myLibraryRootsComponent); 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 33bf8a57ae56..6f906880b72c 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 @@ -18,11 +18,10 @@ package com.intellij.facet.impl.ui.libraries; import com.intellij.facet.ui.libraries.LibraryDownloadInfo; import com.intellij.facet.ui.libraries.LibraryInfo; import com.intellij.openapi.Disposable; -import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.roots.ModifiableRootModel; import com.intellij.openapi.roots.OrderRootType; -import com.intellij.openapi.roots.impl.libraries.ApplicationLibraryTable; import com.intellij.openapi.roots.libraries.Library; +import com.intellij.openapi.roots.ui.configuration.libraryEditor.NewLibraryEditor; import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainer; import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainerFactory; import com.intellij.openapi.vfs.VfsUtil; @@ -52,7 +51,7 @@ public class LibraryCompositionSettings implements Disposable { private final Icon myIcon; private boolean myDownloadSources = true; private boolean myDownloadJavadocs = true; - private Library myLibrary; + private NewLibraryEditor myLibraryEditor; public LibraryCompositionSettings(final @NotNull LibraryInfo[] libraryInfos, final @NotNull String defaultLibraryName, @@ -66,16 +65,10 @@ public class LibraryCompositionSettings implements Disposable { } public void addFilesToLibrary(VirtualFile[] files, OrderRootType orderRootType) { - final Library.ModifiableModel modifiableModel = getOrCreateLibrary().getModifiableModel(); + final NewLibraryEditor libraryEditor = getOrCreateLibrary(); for (VirtualFile file : files) { - modifiableModel.addRoot(file, orderRootType); + libraryEditor.addRoot(file, orderRootType); } - ApplicationManager.getApplication().runWriteAction(new Runnable() { - @Override - public void run() { - modifiableModel.commit(); - } - }); } @NotNull @@ -156,9 +149,8 @@ public class LibraryCompositionSettings implements Disposable { @Nullable private Library createLibrary(final ModifiableRootModel rootModel, @Nullable LibrariesContainer additionalContainer) { - if (myLibrary != null) { - VirtualFile[] roots = myLibrary.getFiles(OrderRootType.CLASSES); - myLibrary.dispose(); + if (myLibraryEditor != null) { + VirtualFile[] roots = myLibraryEditor.getFiles(OrderRootType.CLASSES); return LibrariesContainerFactory.createLibrary(additionalContainer, LibrariesContainerFactory.createContainer(rootModel), myLibraryName, myLibraryLevel, roots, VirtualFile.EMPTY_ARRAY); } @@ -217,25 +209,19 @@ public class LibraryCompositionSettings implements Disposable { } @Nullable - public Library getLibrary() { - return myLibrary; + public NewLibraryEditor getLibraryEditor() { + return myLibraryEditor; } @NotNull - public Library getOrCreateLibrary() { - if (myLibrary == null) { - ApplicationManager.getApplication().runWriteAction(new Runnable() { - @Override - public void run() { - myLibrary = new ApplicationLibraryTable().createLibrary(); - } - }); + public NewLibraryEditor getOrCreateLibrary() { + if (myLibraryEditor == null) { + myLibraryEditor = new NewLibraryEditor(); } - return myLibrary; + return myLibraryEditor; } @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 a74bf9bd9806..fe5e8ce01fbb 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 @@ -22,6 +22,7 @@ import com.intellij.openapi.fileChooser.FileChooser; import com.intellij.openapi.fileChooser.FileChooserDescriptor; import com.intellij.openapi.roots.OrderRootType; import com.intellij.openapi.roots.libraries.Library; +import com.intellij.openapi.roots.ui.configuration.libraryEditor.NewLibraryEditor; import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainer; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.util.Computable; @@ -93,7 +94,7 @@ public class LibraryOptionsPanel { showDialog(new DownloadingOptionsDialog(myConfigureButton, mySettings)); break; case PICK_FILES: - if (mySettings.getLibrary() == null) { + if (mySettings.getLibraryEditor() == null) { VirtualFile[] files = showFileChooser(); mySettings.addFilesToLibrary(files, OrderRootType.CLASSES); } @@ -175,8 +176,8 @@ public class LibraryOptionsPanel { mySettings.getLibraryName()); break; case PICK_FILES: - Library library = mySettings.getLibrary(); - if (library == null) { + NewLibraryEditor libraryEditor = mySettings.getLibraryEditor(); + if (libraryEditor == null) { myMessage.setForeground(Color.red); message = "Press Configure button to add classes to the library"; } @@ -185,7 +186,7 @@ public class LibraryOptionsPanel { " with {2} file(s) will be created", mySettings.getLibraryLevel(), mySettings.getLibraryName(), - library.getFiles(OrderRootType.CLASSES).length); + libraryEditor.getFiles(OrderRootType.CLASSES).length); } break; case DO_NOT_CREATE: diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraries/CreateCustomLibraryAction.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraries/CreateCustomLibraryAction.java index 3d0bdc7c98ce..fa6dd9053cc1 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraries/CreateCustomLibraryAction.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraries/CreateCustomLibraryAction.java @@ -77,8 +77,6 @@ public class CreateCustomLibraryAction extends DumbAwareAction { final LibraryOrderEntry orderEntry = rootModel.addLibraryEntry(library); myModuleStructureConfigurable.selectOrderEntry(myModule, orderEntry); } - else { - } } public static List getActions(StructureConfigurableContext context, ModuleStructureConfigurable moduleStructureConfigurable) { diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/LibraryRootsComponent.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/LibraryRootsComponent.java index 5245fdff9023..a54195d43197 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/LibraryRootsComponent.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/LibraryRootsComponent.java @@ -102,7 +102,7 @@ public class LibraryRootsComponent implements Disposable { private final Map myFileChooserUserData = new HashMap(); private final LibraryEditor myLibraryEditor; - private LibraryRootsComponent(Project project, LibraryEditor libraryEditor) { + private LibraryRootsComponent(@Nullable Project project, @NotNull LibraryEditor libraryEditor) { myProject = project; myLibraryEditor = libraryEditor; updateProperties(); @@ -122,9 +122,6 @@ public class LibraryRootsComponent implements Disposable { public static LibraryRootsComponent createComponent(final @Nullable Project project, @NotNull LibraryEditor libraryEditor) { LibraryRootsComponent rootsComponent = new LibraryRootsComponent(project, libraryEditor); rootsComponent.init(new LibraryTreeStructure(rootsComponent)); - if (project != null) { - Disposer.register(project, rootsComponent); - } return rootsComponent; } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/LibraryConfigurable.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/LibraryConfigurable.java index 4dd82591bf30..34ba8050fd0b 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/LibraryConfigurable.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/LibraryConfigurable.java @@ -26,6 +26,7 @@ import com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryEditor; import com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryRootsComponent; import com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.LibraryProjectStructureElement; import com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.ProjectStructureElement; +import com.intellij.openapi.util.Disposer; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.Nullable; @@ -85,7 +86,10 @@ public class LibraryConfigurable extends ProjectStructureElementConfigurable