diff options
author | Michael Valenta | 2005-03-31 16:44:11 +0000 |
---|---|---|
committer | Michael Valenta | 2005-03-31 16:44:11 +0000 |
commit | 20402d95055964df356f4d2d55357ef57ebbfe1d (patch) | |
tree | a491e43e1ef90a745401b38eec04a09cffe3f65b | |
parent | 06bfd282e76873dc19c58412f40263509ff8efd3 (diff) | |
download | eclipse.platform.team-20402d95055964df356f4d2d55357ef57ebbfe1d.tar.gz eclipse.platform.team-20402d95055964df356f4d2d55357ef57ebbfe1d.tar.xz eclipse.platform.team-20402d95055964df356f4d2d55357ef57ebbfe1d.zip |
Bug 89609 Synchronizing on a Working Set should use proper sync scope
-rw-r--r-- | bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SyncAction.java | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SyncAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SyncAction.java index 231ea490b..b710b09d4 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SyncAction.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SyncAction.java @@ -11,11 +11,11 @@ package org.eclipse.team.internal.ccvs.ui.actions; import java.lang.reflect.InvocationTargetException; -import java.util.HashSet; -import java.util.Set; +import java.util.*; import org.eclipse.compare.CompareUI; import org.eclipse.core.resources.*; +import org.eclipse.core.resources.mapping.ResourceMapping; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.action.IAction; import org.eclipse.jface.dialogs.MessageDialog; @@ -32,6 +32,7 @@ import org.eclipse.team.internal.ccvs.ui.subscriber.WorkspaceSynchronizeParticip import org.eclipse.team.internal.ui.Utils; import org.eclipse.team.ui.TeamUI; import org.eclipse.team.ui.synchronize.*; +import org.eclipse.ui.IWorkingSet; import org.eclipse.ui.PlatformUI; /** @@ -54,7 +55,12 @@ public class SyncAction extends WorkspaceTraversalAction { if (includesAllCVSProjects(resources)) { scope = new WorkspaceScope(); } else { - scope = new ResourceScope(resources); + IWorkingSet[] sets = getSelectedWorkingSets(); + if (sets != null) { + scope = new WorkingSetScope(sets); + } else { + scope = new ResourceScope(resources); + } } participant = new WorkspaceSynchronizeParticipant(scope); TeamUI.getSynchronizeManager().addSynchronizeParticipants(new ISynchronizeParticipant[] {participant}); @@ -62,6 +68,23 @@ public class SyncAction extends WorkspaceTraversalAction { participant.refresh(resources, getTargetPart().getSite()); } } + + private IWorkingSet[] getSelectedWorkingSets() { + ResourceMapping[] mappings = getCVSResourceMappings(); + List sets = new ArrayList(); + for (int i = 0; i < mappings.length; i++) { + ResourceMapping mapping = mappings[i]; + if (mapping.getModelObject() instanceof IWorkingSet) { + IWorkingSet set = (IWorkingSet) mapping.getModelObject(); + sets.add(set); + } else { + return null; + } + } + if (sets.isEmpty()) + return null; + return (IWorkingSet[]) sets.toArray(new IWorkingSet[sets.size()]); + } private boolean includesAllCVSProjects(IResource[] resources) { // First, make sure all the selected thinsg are projects |