Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Valenta2006-01-08 04:00:07 +0000
committerMichael Valenta2006-01-08 04:00:07 +0000
commita3e49cc3e451aa88091d4fb8d9b8d18540f9416c (patch)
treec49bb7fc0870bf41c8b852ed4bbf63d78b8c9744
parentc5691df48d118caa18ef73220f03dbce25ae515b (diff)
downloadeclipse.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
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/core/mapping/provider/ScopeGenerator.java49
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/operations/ResourceMappingOperation.java28
-rw-r--r--tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/mapping/ScopeBuildingTests.java4
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];

Back to the top