diff options
author | Michael Valenta | 2006-01-08 04:00:07 +0000 |
---|---|---|
committer | Michael Valenta | 2006-01-08 04:00:07 +0000 |
commit | a3e49cc3e451aa88091d4fb8d9b8d18540f9416c (patch) | |
tree | c49bb7fc0870bf41c8b852ed4bbf63d78b8c9744 | |
parent | c5691df48d118caa18ef73220f03dbce25ae515b (diff) | |
download | eclipse.platform.team-a3e49cc3e451aa88091d4fb8d9b8d18540f9416c.tar.gz eclipse.platform.team-a3e49cc3e451aa88091d4fb8d9b8d18540f9416c.tar.xz eclipse.platform.team-a3e49cc3e451aa88091d4fb8d9b8d18540f9416c.zip |
Bug 114752 [Model API] Convert CVS operations to use operation scope
3 files changed, 55 insertions, 26 deletions
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/mapping/provider/ScopeGenerator.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/mapping/provider/ScopeGenerator.java index 673678549..0ca32ad9c 100644 --- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/mapping/provider/ScopeGenerator.java +++ b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/mapping/provider/ScopeGenerator.java @@ -48,6 +48,7 @@ public class ScopeGenerator { * @param selectedMappings the selected set of resource mappings * @param context the resource mapping context used to determine the * resources to be oeprated on + * @param consultModels whether models should be consulted during scope generation * @param monitor a progress monitor * @return a scope that defines the complete set of resources to be operated * on @@ -55,7 +56,7 @@ public class ScopeGenerator { */ public IResourceMappingScope prepareScope( ResourceMapping[] selectedMappings, ResourceMappingContext context, - IProgressMonitor monitor) throws CoreException { + boolean consultModels, IProgressMonitor monitor) throws CoreException { monitor.beginTask(null, IProgressMonitor.UNKNOWN); @@ -75,31 +76,33 @@ public class ScopeGenerator { do { newResources = addMappingsToScope(scope, targetMappings, context, Policy.subMonitorFor(monitor, IProgressMonitor.UNKNOWN)); - IResource[] adjusted = adjustNewResources(newResources); - targetMappings = internalGetMappingsFromProviders(adjusted, - context, Policy - .subMonitorFor(monitor, IProgressMonitor.UNKNOWN)); - - // TODO: The new resources aren't really just the new ones so reduce - // the set if needed - if (!handledResources.isEmpty()) { - for (Iterator iter = newResources.iterator(); iter.hasNext();) { - IResource resource = (IResource) iter.next(); - if (handledResources.contains(resource)) { - iter.remove(); + if (consultModels) { + IResource[] adjusted = adjustNewResources(newResources); + targetMappings = internalGetMappingsFromProviders(adjusted, + context, Policy + .subMonitorFor(monitor, IProgressMonitor.UNKNOWN)); + + // TODO: The new resources aren't really just the new ones so reduce + // the set if needed + if (!handledResources.isEmpty()) { + for (Iterator iter = newResources.iterator(); iter.hasNext();) { + IResource resource = (IResource) iter.next(); + if (handledResources.contains(resource)) { + iter.remove(); + } } } + + handledResources.addAll(newResources); + if (firstTime) { + firstTime = false; + } else if (!hasAdditionalResources) { + hasAdditionalResources = !newResources.isEmpty(); + } } - - handledResources.addAll(newResources); - if (firstTime) { - firstTime = false; - } else if (!hasAdditionalResources) { - hasAdditionalResources = !newResources.isEmpty(); - } - } while (!newResources.isEmpty()); - setHasAdditionalMappings(scope, hasAdditionalMappings(scope)); - scope.setHasAdditionalResources(hasAdditionalResources); + } while (consultModels & !newResources.isEmpty()); + setHasAdditionalMappings(scope, consultModels && hasAdditionalMappings(scope)); + scope.setHasAdditionalResources(consultModels && hasAdditionalResources); return scope; } diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/operations/ResourceMappingOperation.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/operations/ResourceMappingOperation.java index 9758053f4..fd9bd2e4a 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/operations/ResourceMappingOperation.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/operations/ResourceMappingOperation.java @@ -103,7 +103,7 @@ public abstract class ResourceMappingOperation extends ModelProviderOperation { */ protected void buildScope(IProgressMonitor monitor) throws InvocationTargetException { try { - scope = getScopeGenerator().prepareScope(selectedMappings, context, monitor); + scope = getScopeGenerator().prepareScope(selectedMappings, context, consultModelsWhenGeneratingScope(), monitor); IResourceMappingScope inputScope = getScopeGenerator().asInputScope(scope); if (scope.hasAdditionalMappings()) { boolean prompt = false; @@ -356,9 +356,20 @@ public abstract class ResourceMappingOperation extends ModelProviderOperation { return null; } + /** + * Execute the operation. This method is invoked after the + * scope has been generated. + * @param monitor a progress monitor + * @throws InvocationTargetException + * @throws InterruptedException + */ protected abstract void execute(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException; + /** + * Return the scope of this operation. + * @return the scope of this operation + */ public IResourceMappingScope getScope() { return scope; } @@ -373,4 +384,19 @@ public abstract class ResourceMappingOperation extends ModelProviderOperation { return previewRequested; } + /** + * Return whether the model providers should be consulted + * when generating the scope. When <code>true</code>, the scope + * generation process will consult any model providers to determine + * if additional mappings, and hence additional resources, need to + * be included in the operation. If <code>false</code>, the models + * are not consulted and only the input mappings are included in the + * scope. a value of <code>true</code> is returned by default. + * @return whether the model providers should be consulted + * when generating the scope + */ + protected boolean consultModelsWhenGeneratingScope() { + return true; + } + } diff --git a/tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/mapping/ScopeBuildingTests.java b/tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/mapping/ScopeBuildingTests.java index 0c681dfd9..0fb2f1c24 100644 --- a/tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/mapping/ScopeBuildingTests.java +++ b/tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/mapping/ScopeBuildingTests.java @@ -54,10 +54,10 @@ public class ScopeBuildingTests extends TeamTest { protected ScopeGenerator getScopeGenerator() { return new ScopeGenerator() { public IResourceMappingScope prepareScope( - ResourceMapping[] selectedMappings, ResourceMappingContext context, + ResourceMapping[] selectedMappings, ResourceMappingContext context, boolean consultModel, IProgressMonitor monitor) throws CoreException { - IResourceMappingScope resourceMappingScope = super.prepareScope(selectedMappings, context, monitor); + IResourceMappingScope resourceMappingScope = super.prepareScope(selectedMappings, context, false, monitor); // Add the additional test mappings to the scope for (int i = 0; i < additionalMappings.length; i++) { ResourceMapping mapping = additionalMappings[i]; |