mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
modifiable root model: fix libraries
This commit is contained in:
+1
-2
@@ -268,7 +268,6 @@ public class ProjectStructureConfigurable extends BaseConfigurable implements Se
|
||||
}
|
||||
|
||||
myContext.getDaemonAnalyzer().clearCaches();
|
||||
myContext.resetLibraries();
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
@@ -319,7 +318,7 @@ public class ProjectStructureConfigurable extends BaseConfigurable implements Se
|
||||
for (Configurable each : myName2Config) {
|
||||
each.disposeUIResources();
|
||||
}
|
||||
|
||||
myContext.clear();
|
||||
myName2Config.clear();
|
||||
|
||||
myModuleConfigurator.getFacetsConfigurator().clearMaps();
|
||||
|
||||
+7
-7
@@ -27,12 +27,14 @@ import com.intellij.openapi.roots.OrderRootType;
|
||||
import com.intellij.openapi.roots.impl.libraries.LibraryImpl;
|
||||
import com.intellij.openapi.roots.libraries.Library;
|
||||
import com.intellij.openapi.roots.libraries.LibraryTable;
|
||||
import com.intellij.openapi.roots.libraries.LibraryTablesRegistrar;
|
||||
import com.intellij.openapi.roots.ui.configuration.LibraryTableModifiableModelProvider;
|
||||
import com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryTableEditor;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.LibraryProjectStructureElement;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.daemon.ProjectStructureElement;
|
||||
import com.intellij.openapi.ui.*;
|
||||
import com.intellij.openapi.ui.DialogWrapper;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.ui.NamedConfigurable;
|
||||
import com.intellij.openapi.ui.TextFieldWithBrowseButton;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.vfs.LocalFileSystem;
|
||||
@@ -96,8 +98,7 @@ public abstract class BaseLibrariesConfigurable extends BaseStructureConfigurabl
|
||||
}
|
||||
|
||||
protected void loadTree() {
|
||||
final LibraryTable libraryTable = LibraryTablesRegistrar.getInstance().getLibraryTableByLevel(myLevel, myProject);
|
||||
createLibrariesNode(myContext.createModifiableModelProvider(myLevel, false), new LibrariesModifiableModel(libraryTable, myProject));
|
||||
createLibrariesNode(myContext.createModifiableModelProvider(myLevel, false));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -117,8 +118,8 @@ public abstract class BaseLibrariesConfigurable extends BaseStructureConfigurabl
|
||||
return result;
|
||||
}
|
||||
|
||||
private void createLibrariesNode(final LibraryTableModifiableModelProvider modelProvider, final LibrariesModifiableModel provider) {
|
||||
final Library[] libraries = provider.getLibraries();
|
||||
private void createLibrariesNode(final LibraryTableModifiableModelProvider modelProvider) {
|
||||
final Library[] libraries = modelProvider.getModifiableModel().getLibraries();
|
||||
for (Library library : libraries) {
|
||||
myRoot.add(new MyNode(new LibraryConfigurable(modelProvider, library, myProject, TREE_UPDATER)));
|
||||
}
|
||||
@@ -159,7 +160,6 @@ public abstract class BaseLibrariesConfigurable extends BaseStructureConfigurabl
|
||||
}
|
||||
|
||||
public void dispose() {
|
||||
myContext.myLevel2Providers.clear();
|
||||
}
|
||||
|
||||
protected AnAction createCopyAction() {
|
||||
|
||||
+2
-5
@@ -38,6 +38,7 @@ import com.intellij.openapi.ui.MasterDetailsComponent;
|
||||
import com.intellij.openapi.ui.NamedConfigurable;
|
||||
import com.intellij.openapi.util.ActionCallback;
|
||||
import com.intellij.openapi.util.Condition;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.packaging.artifacts.Artifact;
|
||||
import com.intellij.ui.ColoredTreeCellRenderer;
|
||||
import com.intellij.ui.SimpleTextAttributes;
|
||||
@@ -208,11 +209,7 @@ public abstract class BaseStructureConfigurable extends MasterDetailsComponent i
|
||||
|
||||
myAutoScrollHandler.cancelAllRequests();
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
public void run() {
|
||||
dispose();
|
||||
}
|
||||
});
|
||||
Disposer.dispose(this);
|
||||
}
|
||||
|
||||
protected void addCollapseExpandActions(final List<AnAction> result) {
|
||||
|
||||
+21
-11
@@ -35,16 +35,17 @@ public class LibrariesModifiableModel implements LibraryTable.ModifiableModel {
|
||||
private final Map<Library, LibraryEditor> myLibrary2EditorMap = new HashMap<Library, LibraryEditor>();
|
||||
private final Set<Library> myRemovedLibraries = new HashSet<Library>();
|
||||
|
||||
private final LibraryTable.ModifiableModel myLibrariesModifiableModel;
|
||||
private LibraryTable.ModifiableModel myLibrariesModifiableModel;
|
||||
private final Project myProject;
|
||||
private LibraryTable myTable;
|
||||
|
||||
public LibrariesModifiableModel(final LibraryTable table, final Project project) {
|
||||
myProject = project;
|
||||
myLibrariesModifiableModel = table.getModifiableModel();
|
||||
myTable = table;
|
||||
}
|
||||
|
||||
public Library createLibrary(String name) {
|
||||
final Library library = myLibrariesModifiableModel.createLibrary(name);
|
||||
final Library library = getLibrariesModifiableModel().createLibrary(name);
|
||||
//createLibraryEditor(library);
|
||||
final BaseLibrariesConfigurable configurable = ProjectStructureConfigurable.getInstance(myProject).getConfigurableFor(library);
|
||||
configurable.createLibraryNode(library);
|
||||
@@ -52,11 +53,11 @@ public class LibrariesModifiableModel implements LibraryTable.ModifiableModel {
|
||||
}
|
||||
|
||||
public void removeLibrary(@NotNull Library library) {
|
||||
if (myLibrariesModifiableModel.getLibraryByName(library.getName()) == null) return;
|
||||
if (getLibrariesModifiableModel().getLibraryByName(library.getName()) == null) return;
|
||||
|
||||
myRemovedLibraries.add(library);
|
||||
removeLibraryEditor(library);
|
||||
myLibrariesModifiableModel.removeLibrary(library);
|
||||
getLibrariesModifiableModel().removeLibrary(library);
|
||||
}
|
||||
|
||||
public void commit() {
|
||||
@@ -65,31 +66,32 @@ public class LibrariesModifiableModel implements LibraryTable.ModifiableModel {
|
||||
|
||||
@NotNull
|
||||
public Iterator<Library> getLibraryIterator() {
|
||||
return myLibrariesModifiableModel.getLibraryIterator();
|
||||
return getLibrariesModifiableModel().getLibraryIterator();
|
||||
}
|
||||
|
||||
public Library getLibraryByName(@NotNull String name) {
|
||||
return myLibrariesModifiableModel.getLibraryByName(name);
|
||||
return getLibrariesModifiableModel().getLibraryByName(name);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Library[] getLibraries() {
|
||||
return myLibrariesModifiableModel.getLibraries();
|
||||
return getLibrariesModifiableModel().getLibraries();
|
||||
}
|
||||
|
||||
public boolean isChanged() {
|
||||
for (LibraryEditor libraryEditor : myLibrary2EditorMap.values()) {
|
||||
if (libraryEditor.hasChanges()) return true;
|
||||
}
|
||||
return myLibrariesModifiableModel.isChanged();
|
||||
return getLibrariesModifiableModel().isChanged();
|
||||
}
|
||||
|
||||
public void deferredCommit(){
|
||||
for (LibraryEditor libraryEditor : new ArrayList<LibraryEditor>(myLibrary2EditorMap.values())) {
|
||||
libraryEditor.commit();
|
||||
libraryEditor.commit(); // TODO: is seems like commit will recreate the editor, but it should not
|
||||
}
|
||||
if (!(myLibrary2EditorMap.isEmpty() && myRemovedLibraries.isEmpty())) {
|
||||
myLibrariesModifiableModel.commit();
|
||||
getLibrariesModifiableModel().commit();
|
||||
myLibrariesModifiableModel = null;
|
||||
}
|
||||
myLibrary2EditorMap.clear();
|
||||
myRemovedLibraries.clear();
|
||||
@@ -136,4 +138,12 @@ public class LibrariesModifiableModel implements LibraryTable.ModifiableModel {
|
||||
public Library.ModifiableModel getLibraryModifiableModel(final Library library) {
|
||||
return getLibraryEditor(library).getModel();
|
||||
}
|
||||
|
||||
private LibraryTable.ModifiableModel getLibrariesModifiableModel() {
|
||||
if (myLibrariesModifiableModel == null) {
|
||||
myLibrariesModifiableModel = myTable.getModifiableModel();
|
||||
}
|
||||
|
||||
return myLibrariesModifiableModel;
|
||||
}
|
||||
}
|
||||
|
||||
+5
-2
@@ -129,7 +129,6 @@ public class StructureConfigurableContext implements Disposable {
|
||||
@Nullable
|
||||
public Library getLibrary(final String libraryName, final String libraryLevel) {
|
||||
/* the null check is added only to prevent NPE when called from getLibrary */
|
||||
if (myLevel2Providers.isEmpty()) resetLibraries();
|
||||
final LibrariesModifiableModel model = myLevel2Providers.get(libraryLevel);
|
||||
return model == null ? null : findLibraryModel(libraryName, model);
|
||||
}
|
||||
@@ -149,8 +148,12 @@ public class StructureConfigurableContext implements Disposable {
|
||||
|
||||
|
||||
public void reset() {
|
||||
myDaemonAnalyzer.reset();
|
||||
resetLibraries();
|
||||
myModulesConfigurator.resetModuleEditors();
|
||||
myDaemonAnalyzer.reset(); // should be called after resetLibraries!
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
myLevel2Providers.clear();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user