fixed double disposing of newly created library on 'cancel'

This commit is contained in:
nik
2011-10-07 16:20:06 +04:00
parent ecd22c558c
commit f4faded166
3 changed files with 15 additions and 15 deletions
@@ -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);
@@ -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();
@@ -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()) {