mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-85781 "Cancel" for "Scanning files" does nothing
This commit is contained in:
@@ -140,22 +140,22 @@ public class DirectoryIndexComponent extends DirectoryIndexImpl {
|
||||
if (module != null) {
|
||||
if (parentInfo.isInModuleSource) {
|
||||
String newDirPackageName = getPackageNameForSubdir(parentPackage, file.getName());
|
||||
state.fillMapWithModuleSource(file, module, newDirPackageName, parentInfo.sourceRoot, parentInfo.isTestSource);
|
||||
state.fillMapWithModuleSource(file, module, newDirPackageName, parentInfo.sourceRoot, parentInfo.isTestSource, null);
|
||||
}
|
||||
}
|
||||
|
||||
if (parentInfo.libraryClassRoot != null) {
|
||||
String newDirPackageName = getPackageNameForSubdir(parentPackage, file.getName());
|
||||
state.fillMapWithLibraryClasses(file, newDirPackageName, parentInfo.libraryClassRoot);
|
||||
state.fillMapWithLibraryClasses(file, newDirPackageName, parentInfo.libraryClassRoot, null);
|
||||
}
|
||||
|
||||
if (parentInfo.isInLibrarySource) {
|
||||
String newDirPackageName = getPackageNameForSubdir(parentPackage, file.getName());
|
||||
state.fillMapWithLibrarySources(file, newDirPackageName, parentInfo.sourceRoot);
|
||||
state.fillMapWithLibrarySources(file, newDirPackageName, parentInfo.sourceRoot, null);
|
||||
}
|
||||
|
||||
if (!parentInfo.getOrderEntries().isEmpty()) {
|
||||
state.fillMapWithOrderEntries(file, parentInfo.getOrderEntries(), null, null, null, parentInfo);
|
||||
state.fillMapWithOrderEntries(file, parentInfo.getOrderEntries(), null, null, null, parentInfo, null);
|
||||
}
|
||||
return state;
|
||||
}
|
||||
|
||||
+32
-20
@@ -357,7 +357,7 @@ public class DirectoryIndexImpl extends DirectoryIndex {
|
||||
for (SourceFolder sourceFolder : sourceFolders) {
|
||||
VirtualFile dir = sourceFolder.getFile();
|
||||
if (dir != null) {
|
||||
fillMapWithModuleSource(dir, module, sourceFolder.getPackagePrefix(), dir, sourceFolder.isTestSource());
|
||||
fillMapWithModuleSource(dir, module, sourceFolder.getPackagePrefix(), dir, sourceFolder.isTestSource(), progress);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -367,7 +367,7 @@ public class DirectoryIndexImpl extends DirectoryIndex {
|
||||
final Module module,
|
||||
final String packageName,
|
||||
final VirtualFile sourceRoot,
|
||||
final boolean isTestSource) {
|
||||
final boolean isTestSource, @Nullable final ProgressIndicator progress) {
|
||||
|
||||
VfsUtilCore.visitChildrenRecursively(dir, new DirectoryVisitor() {
|
||||
|
||||
@@ -375,6 +375,9 @@ public class DirectoryIndexImpl extends DirectoryIndex {
|
||||
|
||||
@Override
|
||||
protected DirectoryInfo updateInfo(VirtualFile file) {
|
||||
if (progress != null) {
|
||||
progress.checkCanceled();
|
||||
}
|
||||
DirectoryInfo info = myDirToInfoMap.get(file);
|
||||
if (info == null) return null;
|
||||
if (!module.equals(info.module)) return null;
|
||||
@@ -417,13 +420,16 @@ public class DirectoryIndexImpl extends DirectoryIndex {
|
||||
if (isLibrary) {
|
||||
VirtualFile[] sourceRoots = orderEntry.getFiles(OrderRootType.SOURCES);
|
||||
for (final VirtualFile sourceRoot : sourceRoots) {
|
||||
fillMapWithLibrarySources(sourceRoot, "", sourceRoot);
|
||||
fillMapWithLibrarySources(sourceRoot, "", sourceRoot, progress);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void fillMapWithLibrarySources(VirtualFile dir, String packageName, VirtualFile sourceRoot) {
|
||||
protected void fillMapWithLibrarySources(VirtualFile dir, String packageName, VirtualFile sourceRoot, @Nullable ProgressIndicator progress) {
|
||||
if (progress != null) {
|
||||
progress.checkCanceled();
|
||||
}
|
||||
if (isIgnored(dir)) return;
|
||||
|
||||
DirectoryInfo info = getOrCreateDirInfo(dir);
|
||||
@@ -441,7 +447,7 @@ public class DirectoryIndexImpl extends DirectoryIndex {
|
||||
for (VirtualFile child : children) {
|
||||
if (child.isDirectory()) {
|
||||
String childPackageName = getPackageNameForSubdir(packageName, child.getName());
|
||||
fillMapWithLibrarySources(child, childPackageName, sourceRoot);
|
||||
fillMapWithLibrarySources(child, childPackageName, sourceRoot, progress);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -455,13 +461,16 @@ public class DirectoryIndexImpl extends DirectoryIndex {
|
||||
if (isLibrary) {
|
||||
VirtualFile[] classRoots = orderEntry.getFiles(OrderRootType.CLASSES);
|
||||
for (final VirtualFile classRoot : classRoots) {
|
||||
fillMapWithLibraryClasses(classRoot, "", classRoot);
|
||||
fillMapWithLibraryClasses(classRoot, "", classRoot, progress);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void fillMapWithLibraryClasses(VirtualFile dir, String packageName, VirtualFile classRoot) {
|
||||
protected void fillMapWithLibraryClasses(VirtualFile dir, String packageName, VirtualFile classRoot, @Nullable ProgressIndicator progress) {
|
||||
if (progress != null) {
|
||||
progress.checkCanceled();
|
||||
}
|
||||
if (isIgnored(dir)) return;
|
||||
|
||||
DirectoryInfo info = getOrCreateDirInfo(dir);
|
||||
@@ -481,7 +490,7 @@ public class DirectoryIndexImpl extends DirectoryIndex {
|
||||
for (VirtualFile child : children) {
|
||||
if (child.isDirectory()) {
|
||||
String childPackageName = getPackageNameForSubdir(packageName, child.getName());
|
||||
fillMapWithLibraryClasses(child, childPackageName, classRoot);
|
||||
fillMapWithLibraryClasses(child, childPackageName, classRoot, progress);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -489,7 +498,7 @@ public class DirectoryIndexImpl extends DirectoryIndex {
|
||||
private void initOrderEntries(Module module,
|
||||
MultiMap<VirtualFile, OrderEntry> depEntries,
|
||||
MultiMap<VirtualFile, OrderEntry> libClassRootEntries,
|
||||
MultiMap<VirtualFile, OrderEntry> libSourceRootEntries) {
|
||||
MultiMap<VirtualFile, OrderEntry> libSourceRootEntries, ProgressIndicator progress) {
|
||||
|
||||
for (OrderEntry orderEntry : getOrderEntries(module)) {
|
||||
if (orderEntry instanceof ModuleOrderEntry) {
|
||||
@@ -512,7 +521,7 @@ public class DirectoryIndexImpl extends DirectoryIndex {
|
||||
|
||||
VirtualFile[] sourceRoots = orderEntry.getFiles(OrderRootType.SOURCES);
|
||||
for (VirtualFile sourceRoot : sourceRoots) {
|
||||
fillMapWithOrderEntries(sourceRoot, oneEntryList, entryModule, null, null, null);
|
||||
fillMapWithOrderEntries(sourceRoot, oneEntryList, entryModule, null, null, null, progress);
|
||||
}
|
||||
}
|
||||
else if (orderEntry instanceof LibraryOrderEntry || orderEntry instanceof JdkOrderEntry) {
|
||||
@@ -530,23 +539,23 @@ public class DirectoryIndexImpl extends DirectoryIndex {
|
||||
|
||||
private void fillMapWithOrderEntries(MultiMap<VirtualFile, OrderEntry> depEntries,
|
||||
MultiMap<VirtualFile, OrderEntry> libClassRootEntries,
|
||||
MultiMap<VirtualFile, OrderEntry> libSourceRootEntries) {
|
||||
MultiMap<VirtualFile, OrderEntry> libSourceRootEntries, ProgressIndicator progress) {
|
||||
for (Map.Entry<VirtualFile, Collection<OrderEntry>> mapEntry : depEntries.entrySet()) {
|
||||
final VirtualFile vRoot = mapEntry.getKey();
|
||||
final Collection<OrderEntry> entries = mapEntry.getValue();
|
||||
fillMapWithOrderEntries(vRoot, entries, null, null, null, null);
|
||||
fillMapWithOrderEntries(vRoot, entries, null, null, null, null, progress);
|
||||
}
|
||||
|
||||
for (Map.Entry<VirtualFile, Collection<OrderEntry>> mapEntry : libClassRootEntries.entrySet()) {
|
||||
final VirtualFile vRoot = mapEntry.getKey();
|
||||
final Collection<OrderEntry> entries = mapEntry.getValue();
|
||||
fillMapWithOrderEntries(vRoot, entries, null, vRoot, null, null);
|
||||
fillMapWithOrderEntries(vRoot, entries, null, vRoot, null, null, progress);
|
||||
}
|
||||
|
||||
for (Map.Entry<VirtualFile, Collection<OrderEntry>> mapEntry : libSourceRootEntries.entrySet()) {
|
||||
final VirtualFile vRoot = mapEntry.getKey();
|
||||
final Collection<OrderEntry> entries = mapEntry.getValue();
|
||||
fillMapWithOrderEntries(vRoot, entries, null, null, vRoot, null);
|
||||
fillMapWithOrderEntries(vRoot, entries, null, null, vRoot, null, progress);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -581,10 +590,10 @@ public class DirectoryIndexImpl extends DirectoryIndex {
|
||||
|
||||
protected void fillMapWithOrderEntries(final VirtualFile root,
|
||||
final Collection<OrderEntry> orderEntries,
|
||||
final Module module,
|
||||
final VirtualFile libraryClassRoot,
|
||||
final VirtualFile librarySourceRoot,
|
||||
final DirectoryInfo parentInfo) {
|
||||
@Nullable final Module module,
|
||||
@Nullable final VirtualFile libraryClassRoot,
|
||||
@Nullable final VirtualFile librarySourceRoot,
|
||||
@Nullable final DirectoryInfo parentInfo, @Nullable final ProgressIndicator progress) {
|
||||
|
||||
VfsUtilCore.visitChildrenRecursively(root, new DirectoryVisitor() {
|
||||
|
||||
@@ -592,6 +601,9 @@ public class DirectoryIndexImpl extends DirectoryIndex {
|
||||
|
||||
@Override
|
||||
protected DirectoryInfo updateInfo(VirtualFile dir) {
|
||||
if (progress != null) {
|
||||
progress.checkCanceled();
|
||||
}
|
||||
if (isIgnored(dir)) return null;
|
||||
|
||||
DirectoryInfo info = myDirToInfoMap.get(dir); // do not create it here!
|
||||
@@ -662,9 +674,9 @@ public class DirectoryIndexImpl extends DirectoryIndex {
|
||||
initOrderEntries(module,
|
||||
depEntries,
|
||||
libClassRootEntries,
|
||||
libSourceRootEntries);
|
||||
libSourceRootEntries, progress);
|
||||
}
|
||||
fillMapWithOrderEntries(depEntries, libClassRootEntries, libSourceRootEntries);
|
||||
fillMapWithOrderEntries(depEntries, libClassRootEntries, libSourceRootEntries, progress);
|
||||
|
||||
killOrderEntryArrayDuplicates();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user