Changed to use newer beginRule API
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/RemoteTagSynchronizer.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/RemoteTagSynchronizer.java
index 5dc6783..b142666 100644
--- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/RemoteTagSynchronizer.java
+++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/RemoteTagSynchronizer.java
@@ -233,7 +233,7 @@
 				try {
 					// Get a scheduling rule on the project since CVS may obtain a lock higher then
 					// the resource itself.
-					JobManager.getInstance().beginRule(rule);
+					JobManager.getInstance().beginRule(rule, monitor);
 					
 					monitor.setTaskName(Policy.bind("RemoteTagSynchronizer.0", resource.getFullPath().makeRelative().toString())); //$NON-NLS-1$
 					
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoveRootAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoveRootAction.java
index 6a1b436..f552df7 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoveRootAction.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoveRootAction.java
@@ -10,13 +10,16 @@
  *******************************************************************************/
 package org.eclipse.team.internal.ccvs.ui.repo;
 
+import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
 import java.util.Iterator;
 
 import org.eclipse.core.internal.jobs.JobManager;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.jobs.ISchedulingRule;
+import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.team.core.RepositoryProvider;
@@ -28,7 +31,9 @@
 import org.eclipse.team.internal.ccvs.ui.actions.CVSAction;
 import org.eclipse.team.internal.ccvs.ui.model.RepositoryLocationSchedulingRule;
 import org.eclipse.team.internal.ui.dialogs.DetailsDialogWithProjects;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.actions.SelectionListenerAction;
+import org.eclipse.ui.progress.IProgressManager;
 import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
 
 
@@ -76,8 +81,9 @@
 	public void run() {
 		ICVSRepositoryLocation[] roots = getSelectedRemoteRoots();
 		if (roots.length == 0) return;
-		CVSProviderPlugin provider = CVSProviderPlugin.getPlugin();
+		final CVSProviderPlugin provider = CVSProviderPlugin.getPlugin();
 		for (int i = 0; i < roots.length; i++) {
+			final ICVSRepositoryLocation root = roots[i];
 			try {	
 				// Check if any projects are shared with the repository
 				IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
@@ -109,17 +115,32 @@
 						}
 					});
 				} else {
-					ISchedulingRule rule = new RepositoryLocationSchedulingRule(roots[i]);
-					JobManager.getInstance().beginRule(rule);
+					IProgressManager manager = PlatformUI.getWorkbench().getProgressManager();
 					try {
-						view.getContentProvider().cancelJobs(roots[i]);
-						provider.disposeRepository(roots[i]);
-					} finally {
-						JobManager.getInstance().endRule(rule);
+						manager.busyCursorWhile(new IRunnableWithProgress() {
+							public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+								ISchedulingRule rule = new RepositoryLocationSchedulingRule(root);
+								try {
+									JobManager.getInstance().beginRule(rule, monitor);
+									view.getContentProvider().cancelJobs(root);
+									provider.disposeRepository(root);
+								} catch (CVSException e) {
+									throw new InvocationTargetException(e);
+								} finally {
+									JobManager.getInstance().endRule(rule);
+								}
+
+							}
+						});
+					} catch (InvocationTargetException e) {
+						throw CVSException.wrapException(e);
+					} catch (InterruptedException e) {
+						// Canceled
+						return;
 					}
 				}
 			} catch (CVSException e) {
-				CVSUIPlugin.log(e);
+				CVSUIPlugin.openError(view.getShell(), null, null, e, CVSUIPlugin.PERFORM_SYNC_EXEC | CVSUIPlugin.LOG_TEAM_EXCEPTIONS | CVSUIPlugin.LOG_NONTEAM_EXCEPTIONS);
 			}
 		}
 	}