package com.jetbrains.lang.dart.resolve;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiManager;
import com.intellij.psi.impl.ResolveScopeManager;
import com.intellij.psi.search.GlobalSearchScope;
import org.jetbrains.annotations.NotNull;
public class DartUseScope extends GlobalSearchScope {
@NotNull final VirtualFile myFileWithSearchedDeclaration;
/**
* @param fileWithSearchedDeclaration must be within project content
*/
public DartUseScope(@NotNull final Project project, @NotNull final VirtualFile fileWithSearchedDeclaration) {
super(project);
myFileWithSearchedDeclaration = fileWithSearchedDeclaration;
}
@Override
public boolean contains(@NotNull VirtualFile file) {
if (myFileWithSearchedDeclaration.equals(file)) return true;
assert getProject() != null;
final PsiFile psiFile = PsiManager.getInstance(getProject()).findFile(file);
return psiFile != null &&
ResolveScopeManager.getInstance(getProject()).getResolveScope(psiFile).contains(myFileWithSearchedDeclaration);
}
@Override
public int compare(@NotNull VirtualFile file1, @NotNull VirtualFile file2) {
return 0;
}
@Override
public boolean isSearchInModuleContent(@NotNull Module aModule) {
return true;
}
@Override
public boolean isSearchInLibraries() {
return false;
}
}