diff --git a/platform/lang-impl/src/com/intellij/ide/scriptingContext/ScriptingLibraryMappings.java b/platform/lang-impl/src/com/intellij/ide/scriptingContext/ScriptingLibraryMappings.java index c38de1ac7e61..376cd7b3cf0d 100644 --- a/platform/lang-impl/src/com/intellij/ide/scriptingContext/ScriptingLibraryMappings.java +++ b/platform/lang-impl/src/com/intellij/ide/scriptingContext/ScriptingLibraryMappings.java @@ -47,7 +47,6 @@ public class ScriptingLibraryMappings extends LanguagePerFileMappings myCompoundLibMap = new HashMap(); private CompoundLibrary myProjectLibs = new CompoundLibrary(); - private Set myProjectLibFiles; public ScriptingLibraryMappings(final Project project, final LibraryType libraryType) { super(project); @@ -96,7 +95,6 @@ public class ScriptingLibraryMappings extends LanguagePerFileMappings mappings) { super.setMappings(mappings); updateDependencies(mappings); - updateProjectLibraryFiles(); } private static boolean dependencyExists(ModuleRootManager rootManager, Library library) { @@ -173,7 +171,6 @@ public class ScriptingLibraryMappings extends LanguagePerFileMappings getSourceFiles() { + Set sourceFiles = new HashSet(); + for (ScriptingLibraryTable.LibraryModel libModel : myLibraries.values()) { + sourceFiles.addAll(libModel.getSourceFiles()); + } + return sourceFiles; + } + + @Override + public Set getCompactFiles() { + Set compactFiles = new HashSet(); + for (ScriptingLibraryTable.LibraryModel libModel : myLibraries.values()) { + compactFiles.addAll(libModel.getCompactFiles()); + } + return compactFiles; + } } /** @@ -403,26 +418,21 @@ public class ScriptingLibraryMappings extends LanguagePerFileMappings(); - for (ScriptingLibraryTable.LibraryModel container : getMappings().values()) { - if (container instanceof CompoundLibrary) { - for (ScriptingLibraryTable.LibraryModel libModel : ((CompoundLibrary)container).getLibraries()) { - myProjectLibFiles.addAll(Arrays.asList(libModel.getSourceFiles())); - myProjectLibFiles.addAll(Arrays.asList(libModel.getCompactFiles())); - } - } - } - } - - public Set getProjectLibraryFiles() { - if (myProjectLibFiles == null) { - updateProjectLibraryFiles(); - } - return myProjectLibFiles; + + public Set getLibraryFilesFor(VirtualFile srcFile) { + Set libFiles = new HashSet(); + collectLibraryFilesFor(srcFile, libFiles); + return libFiles; } - + private void collectLibraryFilesFor(VirtualFile file, Set libFiles) { + if (file == null) return; + ScriptingLibraryTable.LibraryModel libraryModel = getMapping(file); + if (libraryModel != null) { + libFiles.addAll(libraryModel.getCompactFiles()); + libFiles.addAll(libraryModel.getSourceFiles()); + } + collectLibraryFilesFor(file.getParent(), libFiles); + } } diff --git a/platform/lang-impl/src/com/intellij/ide/scriptingContext/ui/EditLibraryDialog.java b/platform/lang-impl/src/com/intellij/ide/scriptingContext/ui/EditLibraryDialog.java index 5618ea8e8dc3..e50517cb219e 100644 --- a/platform/lang-impl/src/com/intellij/ide/scriptingContext/ui/EditLibraryDialog.java +++ b/platform/lang-impl/src/com/intellij/ide/scriptingContext/ui/EditLibraryDialog.java @@ -44,6 +44,7 @@ import java.awt.*; import java.awt.event.*; import java.util.ArrayList; import java.util.Arrays; +import java.util.Set; public class EditLibraryDialog extends DialogWrapper { @@ -290,11 +291,11 @@ public class EditLibraryDialog extends DialogWrapper { fireTableDataChanged(); } - public void setFiles(VirtualFile[] sourceFiles, VirtualFile[] compactFiles) { + public void setFiles(Set sourceFiles, Set compactFiles) { myFiles.clear(); - myFiles.addAll(Arrays.asList(sourceFiles)); - myFiles.addAll(Arrays.asList(compactFiles)); - myCompactFiles.addAll(Arrays.asList(compactFiles)); + myFiles.addAll(sourceFiles); + myFiles.addAll(compactFiles); + myCompactFiles.addAll(compactFiles); } public void setFileType(VirtualFile file, boolean isCompact) { diff --git a/platform/lang-impl/src/com/intellij/openapi/roots/libraries/scripting/ScriptingLibraryTable.java b/platform/lang-impl/src/com/intellij/openapi/roots/libraries/scripting/ScriptingLibraryTable.java index 2cbaa05d6d6e..a01a247226d9 100644 --- a/platform/lang-impl/src/com/intellij/openapi/roots/libraries/scripting/ScriptingLibraryTable.java +++ b/platform/lang-impl/src/com/intellij/openapi/roots/libraries/scripting/ScriptingLibraryTable.java @@ -79,7 +79,7 @@ public class ScriptingLibraryTable { if (myCompactFilesCache == null) { myCompactFilesCache = new HashSet(); for (LibraryModel libraryModel : myLibraryModels) { - myCompactFilesCache.addAll(Arrays.asList(libraryModel.getCompactFiles())); + myCompactFilesCache.addAll(libraryModel.getCompactFiles()); } } return myCompactFilesCache.contains(file); @@ -183,12 +183,12 @@ public class ScriptingLibraryTable { myDocUrls.addAll(Arrays.asList(docUrls)); } - public VirtualFile[] getSourceFiles() { - return mySourceFiles.toArray(new VirtualFile[mySourceFiles.size()]); + public Set getSourceFiles() { + return mySourceFiles; } - public VirtualFile[] getCompactFiles() { - return myCompactFiles.toArray(new VirtualFile[myCompactFiles.size()]); + public Set getCompactFiles() { + return myCompactFiles; } public String[] getDocUrls() { @@ -196,7 +196,7 @@ public class ScriptingLibraryTable { } @NotNull - public VirtualFile[] getFiles(OrderRootType rootType) { + public Set getFiles(OrderRootType rootType) { if (rootType == COMPACT_ROOT_TYPE) { return getCompactFiles(); }