diff options
Diffstat (limited to 'bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/WorkspaceAction.java')
-rw-r--r-- | bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/WorkspaceAction.java | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/WorkspaceAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/WorkspaceAction.java index 46767f1c3..809a193f8 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/WorkspaceAction.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/WorkspaceAction.java @@ -46,6 +46,7 @@ import org.eclipse.team.internal.ccvs.core.resources.EclipseSynchronizer; import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo; import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo; import org.eclipse.team.internal.ccvs.ui.Policy; +import org.eclipse.team.internal.ui.PromptingDialog; /** * This class represents an action performed on a local CVS workspace @@ -522,4 +523,28 @@ public abstract class WorkspaceAction extends CVSAction { return Policy.bind("ReplaceWithLatestAction.multipleTags"); //$NON-NLS-1$ } } + + protected IResource[] checkOverwriteOfDirtyResources(IResource[] resources, IProgressMonitor monitor) throws CVSException, InterruptedException { + List dirtyResources = new ArrayList(); + IResource[] selectedResources = getSelectedResources(); + + try { + monitor = Policy.monitorFor(monitor); + monitor.beginTask(null, selectedResources.length * 100); + monitor.setTaskName(Policy.bind("ReplaceWithAction.calculatingDirtyResources")); //$NON-NLS-1$ + for (int i = 0; i < selectedResources.length; i++) { + IResource resource = selectedResources[i]; + ICVSResource cvsResource = CVSWorkspaceRoot.getCVSResourceFor(resource); + if(cvsResource.isModified(Policy.subMonitorFor(monitor, 100))) { + dirtyResources.add(resource); + } + } + } finally { + monitor.done(); + } + + PromptingDialog dialog = new PromptingDialog(getShell(), selectedResources, + getOverwriteLocalChangesPrompt((IResource[]) dirtyResources.toArray(new IResource[dirtyResources.size()])), Policy.bind("ReplaceWithAction.confirmOverwrite"));//$NON-NLS-1$ + return dialog.promptForMultiple(); + } } |