Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/target/SynchronizedTargetProvider.java')
-rw-r--r--bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/target/SynchronizedTargetProvider.java32
1 files changed, 32 insertions, 0 deletions
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/target/SynchronizedTargetProvider.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/target/SynchronizedTargetProvider.java
index 5cac0628e..03b90c466 100644
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/target/SynchronizedTargetProvider.java
+++ b/bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/target/SynchronizedTargetProvider.java
@@ -69,6 +69,12 @@ public abstract class SynchronizedTargetProvider extends TargetProvider {
abstract public ResourceState newState(IResource resource);
/**
+ * Answers a new state based on an existing local resource and
+ * an associated existing remote resource.
+ */
+ abstract public ResourceState newState(IResource resource, IRemoteTargetResource remote);
+
+ /**
* Get the state descriptor for a given resource.
*/
public ResourceState getState(IResource resource) {
@@ -77,6 +83,16 @@ public abstract class SynchronizedTargetProvider extends TargetProvider {
state.loadState();
return state;
}
+
+ /**
+ * Get the state descriptor for a given resource.
+ */
+ public ResourceState getState(IResource resource, IRemoteTargetResource remote) {
+ // Create a new resource state with default values.
+ ResourceState state = newState(resource, remote);
+ state.loadState();
+ return state;
+ }
/**
* Get the resource from the provider to the workspace, and remember the fetched
@@ -93,6 +109,22 @@ public abstract class SynchronizedTargetProvider extends TargetProvider {
}
}, resources, depth, progress);
}
+
+ /**
+ * Get the resource from the provider to the workspace, and remember the fetched
+ * state as the base state of the resource.
+ *
+ * @see ITeamProvider.get(IResource[], int, IProgressMonitor)
+ */
+ public void get(IResource resource, final IRemoteTargetResource remote, IProgressMonitor progress)
+ throws TeamException {
+ execute(new IIterativeOperation() {
+ public IStatus visit(IResource resource, int depth, IProgressMonitor progress) {
+ ResourceState state = getState(resource, remote);
+ return new Symmetria().get(state, IResource.DEPTH_INFINITE, progress);
+ }
+ }, new IResource[] {resource}, IResource.DEPTH_ZERO, progress);
+ }
/**

Back to the top