diff options
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.java | 32 |
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); + } /** |