diff options
author | Eike Stepper | 2014-07-21 09:08:48 +0000 |
---|---|---|
committer | Eike Stepper | 2014-07-21 09:08:48 +0000 |
commit | 1dc6f20f2a07d6a5e495bf07c506678c558f6fe3 (patch) | |
tree | 4d7c8cf250eebeaa4effd22419a07562fa365bef /plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal | |
parent | 9f18d51b9c9bec94389c39181a25d182dd4bbb00 (diff) | |
download | org.eclipse.oomph-1dc6f20f2a07d6a5e495bf07c506678c558f6fe3.tar.gz org.eclipse.oomph-1dc6f20f2a07d6a5e495bf07c506678c558f6fe3.tar.xz org.eclipse.oomph-1dc6f20f2a07d6a5e495bf07c506678c558f6fe3.zip |
[435610] Enhance progress monitoring in BasicProjectAnalyzer
Diffstat (limited to 'plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal')
-rw-r--r-- | plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal/core/BasicProjectAnalyzer.java | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal/core/BasicProjectAnalyzer.java b/plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal/core/BasicProjectAnalyzer.java index 01a9de983..95a0cc0b7 100644 --- a/plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal/core/BasicProjectAnalyzer.java +++ b/plugins/org.eclipse.oomph.targlets.core/src/org/eclipse/oomph/targlets/internal/core/BasicProjectAnalyzer.java @@ -21,6 +21,7 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.MultiStatus; import org.eclipse.core.runtime.OperationCanceledException; +import org.eclipse.core.runtime.SubMonitor; import java.io.File; import java.util.HashMap; @@ -62,6 +63,8 @@ public class BasicProjectAnalyzer<T> throw new OperationCanceledException(); } + SubMonitor progress = SubMonitor.convert(monitor, 10); + IProject project = ResourcesFactory.eINSTANCE.loadProject(folder); if (ResourcesUtil.matchesPredicates(project, predicates)) { @@ -112,15 +115,25 @@ public class BasicProjectAnalyzer<T> { log(folder, ex); } + + progress.worked(1); } else if (!locateNestedProjects && project != null) { + progress.worked(10); return; } + analyzeRecursive(folder, predicates, locateNestedProjects, results, visitor, progress.newChild(9)); + } + + private void analyzeRecursive(File folder, EList<Predicate> predicates, boolean locateNestedProjects, Map<T, File> results, ProjectVisitor<T> visitor, + IProgressMonitor monitor) + { File[] listFiles = folder.listFiles(); if (listFiles != null) { + SubMonitor progress = SubMonitor.convert(monitor, listFiles.length); for (int i = 0; i < listFiles.length; i++) { File file = listFiles[i]; @@ -128,13 +141,17 @@ public class BasicProjectAnalyzer<T> { try { - analyze(file, predicates, locateNestedProjects, results, visitor, monitor); + analyze(file, predicates, locateNestedProjects, results, visitor, progress.newChild(1)); } catch (Exception ex) { log(file, ex); } } + else + { + progress.worked(1); + } } } } |