diff options
author | Michael Valenta | 2005-02-08 19:07:48 +0000 |
---|---|---|
committer | Michael Valenta | 2005-02-08 19:07:48 +0000 |
commit | f51ecc008732f2fe36ad5a53f8d0c3a6d974978f (patch) | |
tree | be108772c515d1ee0bf2dc02adb2150b94c7e68f | |
parent | 8924560e47d5d2ca0824614e3c12aa87401d66da (diff) | |
download | eclipse.platform.team-f51ecc008732f2fe36ad5a53f8d0c3a6d974978f.tar.gz eclipse.platform.team-f51ecc008732f2fe36ad5a53f8d0c3a6d974978f.tar.xz eclipse.platform.team-f51ecc008732f2fe36ad5a53f8d0c3a6d974978f.zip |
Added commit resource mapping context required to see outgoing deletions
5 files changed, 54 insertions, 11 deletions
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/subscribers/SubscriberResourceMappingContext.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/subscribers/SubscriberResourceMappingContext.java index c241058d3..a14ba9abd 100644 --- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/subscribers/SubscriberResourceMappingContext.java +++ b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/subscribers/SubscriberResourceMappingContext.java @@ -58,7 +58,7 @@ public class SubscriberResourceMappingContext extends ResourceMappingContext { public boolean select(SyncInfo info, IProgressMonitor monitor) { if (info != null) { int direction = info.getKind() & SyncInfo.DIRECTION_MASK; - // When updating, only outgoing and conflicting changes are needed + // When updating, only incoming and conflicting changes are needed return direction == SyncInfo.INCOMING || direction == SyncInfo.CONFLICTING ; } return false; @@ -66,6 +66,26 @@ public class SubscriberResourceMappingContext extends ResourceMappingContext { }); } + + /** + * Return a resource mapping context suitable for a check-in (or commit) operations. + * That is, operations that uploads the latest local changes to the + * server from the local workspace resources, typically creating a new version of the resource. + * @return a resource mapping context suitable for a check-in operations + */ + public static ResourceMappingContext getCheckInContext(Subscriber subscriber) { + return new SubscriberResourceMappingContext(subscriber, new SyncInfoFilter() { + public boolean select(SyncInfo info, IProgressMonitor monitor) { + if (info != null) { + int direction = info.getKind() & SyncInfo.DIRECTION_MASK; + // When committing, only outgoing and conflicting changes are needed + return direction == SyncInfo.OUTGOING || direction == SyncInfo.CONFLICTING ; + } + return false; + } + + }); + } /** * Create a resource mapping context for the given subscriber diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CommitAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CommitAction.java index efad593bf..44bba0225 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CommitAction.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CommitAction.java @@ -21,9 +21,12 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.action.IAction; import org.eclipse.jface.operation.IRunnableWithProgress; +import org.eclipse.team.core.subscribers.SubscriberResourceMappingContext; +import org.eclipse.team.internal.ccvs.core.CVSProviderPlugin; import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants; import org.eclipse.team.internal.ccvs.ui.Policy; import org.eclipse.team.internal.ccvs.ui.wizards.CommitWizard; +import org.eclipse.ui.PlatformUI; /** * Action for checking in files to a CVS provider. @@ -35,13 +38,24 @@ public class CommitAction extends WorkspaceTraversalAction { * @see CVSAction#execute(IAction) */ public void execute(IAction action) throws InvocationTargetException, InterruptedException { + + final IResource [][] resources = new IResource[][] { null }; + + PlatformUI.getWorkbench().getProgressService().busyCursorWhile(new IRunnableWithProgress() { + public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { + try { + resources[0] = getDeepResourcesToCommit(monitor); + } catch (CoreException e) { + throw new InvocationTargetException(e); + } + } + }); run(new IRunnableWithProgress() { public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { try { - final IResource [] resources= getDeepResourcesToCommit(); - CommitWizard.run(shell, resources); + CommitWizard.run(shell, resources[0]); } catch (CoreException e) { throw new InvocationTargetException(e); @@ -51,12 +65,14 @@ public class CommitAction extends WorkspaceTraversalAction { }, false, PROGRESS_BUSYCURSOR); } - private IResource[] getDeepResourcesToCommit() throws CoreException { + private IResource[] getDeepResourcesToCommit(IProgressMonitor monitor) throws CoreException { ResourceMapping[] mappings = getCVSResourceMappings(); List roots = new ArrayList(); for (int i = 0; i < mappings.length; i++) { ResourceMapping mapping = mappings[i]; - ResourceTraversal[] traversals = mapping.getTraversals(null, null); + ResourceTraversal[] traversals = mapping.getTraversals( + SubscriberResourceMappingContext.getCheckInContext(CVSProviderPlugin.getPlugin().getCVSWorkspaceSubscriber()), + monitor); for (int j = 0; j < traversals.length; j++) { ResourceTraversal traversal = traversals[j]; IResource[] resources = traversal.getResources(); diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UncommittedChangesDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UncommittedChangesDialog.java index e60c075c4..e0bd4019e 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UncommittedChangesDialog.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UncommittedChangesDialog.java @@ -100,12 +100,7 @@ public abstract class UncommittedChangesDialog extends MappingSelectionDialog { boolean matchesFilter(ResourceMapping mapping) { try { - mapping.accept(new SubscriberResourceMappingContext(subscriber, new SyncInfoFilter() { - public boolean select(SyncInfo info, IProgressMonitor monitor) { - return info != null && info.getKind() != SyncInfo.IN_SYNC; - } - - }), new IResourceVisitor() { + mapping.accept(null, new IResourceVisitor() { public boolean visit(IResource resource) throws CoreException { SyncInfo info = subscriber.getSyncInfo(resource); if (info != null && resourceFilter.select(info)) { diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CommitOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CommitOperation.java index 65d8c2db8..ba6caf867 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CommitOperation.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CommitOperation.java @@ -14,8 +14,10 @@ import java.util.ArrayList; import java.util.List; import org.eclipse.core.resources.mapping.ResourceMapping; +import org.eclipse.core.resources.mapping.ResourceMappingContext; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; +import org.eclipse.team.core.subscribers.SubscriberResourceMappingContext; import org.eclipse.team.internal.ccvs.core.*; import org.eclipse.team.internal.ccvs.core.client.*; import org.eclipse.team.internal.ccvs.core.client.Command.LocalOption; @@ -87,4 +89,11 @@ public class CommitOperation extends SingleCommandOperation { protected boolean isServerModificationOperation() { return true; } + + /* (non-Javadoc) + * @see org.eclipse.team.internal.ccvs.ui.operations.RepositoryProviderOperation#getResourceMappingContext() + */ + protected ResourceMappingContext getResourceMappingContext() { + return SubscriberResourceMappingContext.getCheckInContext(CVSProviderPlugin.getPlugin().getCVSWorkspaceSubscriber()); + } } diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/UpdateOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/UpdateOperation.java index 27ff87460..051dd5142 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/UpdateOperation.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/UpdateOperation.java @@ -144,6 +144,9 @@ public class UpdateOperation extends SingleCommandOperation { return Policy.bind("UpdateAction.update"); //$NON-NLS-1$ } + /* (non-Javadoc) + * @see org.eclipse.team.internal.ccvs.ui.operations.RepositoryProviderOperation#getResourceMappingContext() + */ protected ResourceMappingContext getResourceMappingContext() { if (Update.IGNORE_LOCAL_CHANGES.isElementOf(getLocalOptions(false))) { return SubscriberResourceMappingContext.getReplaceContext(CVSProviderPlugin.getPlugin().getCVSWorkspaceSubscriber()); |