diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/PathUIUtils.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/PathUIUtils.java index b0216b3fd4ca..fd0f957d9b11 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/PathUIUtils.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/PathUIUtils.java @@ -40,7 +40,7 @@ public class PathUIUtils { @Override public Collection detectRoots(@NotNull VirtualFile rootCandidate, @NotNull ProgressIndicator progressIndicator) { - return JavaUtilForVfs.suggestRoots(rootCandidate); + return JavaUtilForVfs.suggestRoots(rootCandidate, progressIndicator); } }; diff --git a/java/java-impl/src/com/intellij/ide/util/JavaUtilForVfs.java b/java/java-impl/src/com/intellij/ide/util/JavaUtilForVfs.java index 3962e4f3b739..9f2e8be17ce4 100644 --- a/java/java-impl/src/com/intellij/ide/util/JavaUtilForVfs.java +++ b/java/java-impl/src/com/intellij/ide/util/JavaUtilForVfs.java @@ -20,7 +20,6 @@ import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.fileTypes.FileTypeManager; import com.intellij.openapi.fileTypes.StdFileTypes; import com.intellij.openapi.progress.ProgressIndicator; -import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; @@ -39,13 +38,15 @@ public class JavaUtilForVfs { *
  • It contains at least one Java file.
  • *
  • Java file is located in the subfolder that matches package statement in the file.
  • * + * * @param dir a directory to scan + * @param progressIndicator * @return a list of found source roots within directory. If no source roots are found, a empty list is returned. */ - public static List suggestRoots(VirtualFile dir) { + public static List suggestRoots(VirtualFile dir, ProgressIndicator progressIndicator) { ArrayList foundDirectories = new ArrayList(); try{ - suggestRootsImpl(dir, foundDirectories); + suggestRootsImpl(dir, progressIndicator, foundDirectories); } catch(PathFoundException ignore){ } @@ -60,7 +61,9 @@ public class JavaUtilForVfs { } } - private static void suggestRootsImpl(VirtualFile dir, ArrayList foundDirectories) throws PathFoundException { + private static void suggestRootsImpl(VirtualFile dir, + ProgressIndicator progressIndicator, + ArrayList foundDirectories) throws PathFoundException { if (!dir.isDirectory()) { return; } @@ -69,13 +72,10 @@ public class JavaUtilForVfs { if (typeManager.isFileIgnored(dir) || StringUtil.startsWithIgnoreCase(dirName, "testdata")) { return; } - final ProgressIndicator progressIndicator = ProgressManager.getInstance().getProgressIndicator(); - if (progressIndicator != null) { - if (progressIndicator.isCanceled()) { - return; - } - progressIndicator.setText2(dir.getPath()); + if (progressIndicator.isCanceled()) { + return; } + progressIndicator.setText2(dir.getPath()); VirtualFile[] list = dir.getChildren(); if (list == null || list.length == 0) { @@ -105,7 +105,7 @@ public class JavaUtilForVfs { for (VirtualFile child : list) { if (child.isDirectory()) { try { - suggestRootsImpl(child, foundDirectories); + suggestRootsImpl(child, progressIndicator, foundDirectories); } catch (PathFoundException found) { if (!found.myDirectory.equals(child)) {