From f4faded166b74323a111b7e7a654b6862a7c1e83 Mon Sep 17 00:00:00 2001 From: nik Date: Fri, 7 Oct 2011 13:34:02 +0400 Subject: [PATCH] fixed double disposing of newly created library on 'cancel' --- .../libraryEditor/CreateNewLibraryAction.java | 23 +++++++++++-------- .../libraryEditor/CreateNewLibraryDialog.java | 2 +- .../libraryEditor/NewLibraryEditor.java | 5 ---- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/CreateNewLibraryAction.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/CreateNewLibraryAction.java index fc1eda9cdf4c..97f8686d0798 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/CreateNewLibraryAction.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/CreateNewLibraryAction.java @@ -18,11 +18,13 @@ package com.intellij.openapi.roots.ui.configuration.libraryEditor; import com.intellij.ide.IdeBundle; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.application.AccessToken; +import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.fileChooser.FileChooser; import com.intellij.openapi.fileChooser.FileChooserDescriptor; import com.intellij.openapi.project.DumbAwareAction; import com.intellij.openapi.project.Project; +import com.intellij.openapi.roots.impl.libraries.LibraryEx; import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.roots.libraries.LibraryType; import com.intellij.openapi.roots.libraries.ui.LibraryRootsComponentDescriptor; @@ -96,15 +98,18 @@ public class CreateNewLibraryAction extends DumbAwareAction { final Library library = modifiableModel.createLibrary(LibraryEditingUtil.suggestNewLibraryName(modifiableModel, roots), myType); final BaseLibrariesConfigurable rootConfigurable = ProjectStructureConfigurable.getInstance(myProject).getConfigurableFor(library); - final ExistingLibraryEditor libraryEditor = modifiableModel.getLibraryEditor(library); - libraryEditor.addRoots(roots); - if (libraryEditor.hasChanges()) { - ApplicationManager.getApplication().runWriteAction(new Runnable(){ - public void run() { - libraryEditor.commit(); //update lib node - } - }); + final NewLibraryEditor editor = new NewLibraryEditor(((LibraryEx)library).getType(), ((LibraryEx)library).getProperties()); + editor.addRoots(roots); + final Library.ModifiableModel model = library.getModifiableModel(); + editor.applyTo((LibraryEx.ModifiableModelEx)model); + AccessToken token = WriteAction.start(); + try { + model.commit(); } + finally { + token.finish(); + } + final DefaultMutableTreeNode libraryNode = MasterDetailsComponent.findNodeByObject((TreeNode)rootConfigurable.getTree().getModel().getRoot(), library); rootConfigurable.selectNodeInTree(libraryNode); diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/CreateNewLibraryDialog.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/CreateNewLibraryDialog.java index 8e9fd1b1aeac..6ae56cf0b248 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/CreateNewLibraryDialog.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/CreateNewLibraryDialog.java @@ -71,7 +71,7 @@ public class CreateNewLibraryDialog extends LibraryEditorDialogBase { final LibraryTableBase.ModifiableModelEx modifiableModel = (LibraryTableBase.ModifiableModelEx)getTableModifiableModel(); final Library library = modifiableModel.createLibrary(myLibraryEditor.getName(), myLibraryEditor.getType()); final LibraryEx.ModifiableModelEx model = (LibraryEx.ModifiableModelEx)library.getModifiableModel(); - myLibraryEditor.apply(model); + myLibraryEditor.applyTo(model); new WriteAction() { protected void run(final Result result) { model.commit(); diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/NewLibraryEditor.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/NewLibraryEditor.java index 77d50c836bcd..d9afad06a211 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/NewLibraryEditor.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/NewLibraryEditor.java @@ -168,11 +168,6 @@ public class NewLibraryEditor extends LibraryEditorBase { return false; } - public void apply(@NotNull LibraryEx.ModifiableModelEx model) { - model.setName(myLibraryName); - applyTo(model); - } - public void applyTo(LibraryEx.ModifiableModelEx model) { model.setProperties(myProperties); for (OrderRootType type : myRoots.keySet()) {