Dynamically forming JS library scope, removed JSLibraryScopeFilter

This commit is contained in:
Rustam.Vishnyakov
2011-01-25 17:28:50 +03:00
parent cd2f20719a
commit a4a3bc01d5
3 changed files with 43 additions and 32 deletions
@@ -47,7 +47,6 @@ public class ScriptingLibraryMappings extends LanguagePerFileMappings<ScriptingL
private final ScriptingLibraryManager myLibraryManager;
private final Map<VirtualFile, CompoundLibrary> myCompoundLibMap = new HashMap<VirtualFile, CompoundLibrary>();
private CompoundLibrary myProjectLibs = new CompoundLibrary();
private Set<VirtualFile> myProjectLibFiles;
public ScriptingLibraryMappings(final Project project, final LibraryType libraryType) {
super(project);
@@ -96,7 +95,6 @@ public class ScriptingLibraryMappings extends LanguagePerFileMappings<ScriptingL
public void setMappings(Map<VirtualFile, ScriptingLibraryTable.LibraryModel> mappings) {
super.setMappings(mappings);
updateDependencies(mappings);
updateProjectLibraryFiles();
}
private static boolean dependencyExists(ModuleRootManager rootManager, Library library) {
@@ -173,7 +171,6 @@ public class ScriptingLibraryMappings extends LanguagePerFileMappings<ScriptingL
setMapping(file, container);
}
updateDependencies(getMappings());
updateProjectLibraryFiles();
}
public boolean isAssociatedWith(VirtualFile file, String libName) {
@@ -378,6 +375,24 @@ public class ScriptingLibraryMappings extends LanguagePerFileMappings<ScriptingL
myLibraries.clear();
myLibraries.putAll(myOldLibraries);
}
@Override
public Set<VirtualFile> getSourceFiles() {
Set<VirtualFile> sourceFiles = new HashSet<VirtualFile>();
for (ScriptingLibraryTable.LibraryModel libModel : myLibraries.values()) {
sourceFiles.addAll(libModel.getSourceFiles());
}
return sourceFiles;
}
@Override
public Set<VirtualFile> getCompactFiles() {
Set<VirtualFile> compactFiles = new HashSet<VirtualFile>();
for (ScriptingLibraryTable.LibraryModel libModel : myLibraries.values()) {
compactFiles.addAll(libModel.getCompactFiles());
}
return compactFiles;
}
}
/**
@@ -403,26 +418,21 @@ public class ScriptingLibraryMappings extends LanguagePerFileMappings<ScriptingL
}
return isApplicable(libFile, srcFile.getParent());
}
private void updateProjectLibraryFiles() {
myProjectLibFiles = new HashSet<VirtualFile>();
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<VirtualFile> getProjectLibraryFiles() {
if (myProjectLibFiles == null) {
updateProjectLibraryFiles();
}
return myProjectLibFiles;
public Set<VirtualFile> getLibraryFilesFor(VirtualFile srcFile) {
Set<VirtualFile> libFiles = new HashSet<VirtualFile>();
collectLibraryFilesFor(srcFile, libFiles);
return libFiles;
}
private void collectLibraryFilesFor(VirtualFile file, Set<VirtualFile> 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);
}
}
@@ -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<VirtualFile> sourceFiles, Set<VirtualFile> 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) {
@@ -79,7 +79,7 @@ public class ScriptingLibraryTable {
if (myCompactFilesCache == null) {
myCompactFilesCache = new HashSet<VirtualFile>();
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<VirtualFile> getSourceFiles() {
return mySourceFiles;
}
public VirtualFile[] getCompactFiles() {
return myCompactFiles.toArray(new VirtualFile[myCompactFiles.size()]);
public Set<VirtualFile> getCompactFiles() {
return myCompactFiles;
}
public String[] getDocUrls() {
@@ -196,7 +196,7 @@ public class ScriptingLibraryTable {
}
@NotNull
public VirtualFile[] getFiles(OrderRootType rootType) {
public Set<VirtualFile> getFiles(OrderRootType rootType) {
if (rootType == COMPACT_ROOT_TYPE) {
return getCompactFiles();
}