mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
fixed double disposing of newly created library on 'cancel'
This commit is contained in:
+14
-9
@@ -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);
|
||||
|
||||
+1
-1
@@ -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();
|
||||
|
||||
-5
@@ -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()) {
|
||||
|
||||
Reference in New Issue
Block a user