Added job properties to CVSOperations
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/console/CVSOutputConsole.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/console/CVSOutputConsole.java
index 7c963d2..9046210 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/console/CVSOutputConsole.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/console/CVSOutputConsole.java
@@ -106,6 +106,7 @@
 		consoleManager = ConsolePlugin.getDefault().getConsoleManager();
 		CVSProviderPlugin.getPlugin().setConsoleListener(CVSOutputConsole.this);
 		CVSUIPlugin.getPlugin().getPreferenceStore().addPropertyChangeListener(CVSOutputConsole.this);
+		setAutoScroll(true);
 	}
 	
 	/* (non-Javadoc)
@@ -266,12 +267,7 @@
     }
 
     private void showConsole() {
-		if(showOnMessage) {
-			if(!visible)
-				CVSConsoleFactory.showConsole();
-			else
-				consoleManager.showConsoleView(this);
-		}
+		show(false);
 	}
 	
 	/* (non-Javadoc)
@@ -459,4 +455,18 @@
 		RGB rgb = PreferenceConverter.getColor(CVSUIPlugin.getPlugin().getPreferenceStore(), preference);
 		return new Color(display, rgb);
 	}
+
+    /**
+     * Show the console.
+     * @param showNoMatterWhat ignore preferences if <code>true</code>
+     */
+    public void show(boolean showNoMatterWhat) {
+		if(showNoMatterWhat || showOnMessage) {
+			if(!visible)
+				CVSConsoleFactory.showConsole();
+			else
+				consoleManager.showConsoleView(this);
+		}
+        
+    }
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CVSOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CVSOperation.java
index 4241f9a..4d52eb6 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CVSOperation.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CVSOperation.java
@@ -16,6 +16,8 @@
 import java.util.*;
 
 import org.eclipse.core.runtime.*;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.dialogs.IDialogConstants;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.swt.widgets.Shell;
@@ -288,4 +290,28 @@
 		// Put CVS jobs in the background by default.
 		return true;
 	}
+	
+    /* (non-Javadoc)
+     * @see org.eclipse.team.ui.TeamOperation#isSameFamilyAs(org.eclipse.team.ui.TeamOperation)
+     */
+    protected boolean isSameFamilyAs(TeamOperation operation) {
+        // Trat all CVS operations as a single family
+        return operation instanceof CVSOperation;
+    }
+    
+    /*
+     * Action to show the console that can be used by subclasses
+     * that wish to link the progress service to the console
+     */
+    protected IAction getShowConsoleAction() {
+        // Show the console as the goto action
+        return new Action("Show CVS Console") {
+            public void run() {
+                CVSUIPlugin.getPlugin().getConsole().show(true);
+            }
+            public String getToolTipText() {
+                return "Show CVS Console";
+            }
+        };
+    }
 }
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CheckoutOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CheckoutOperation.java
index 06bb85e..761169a 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CheckoutOperation.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/CheckoutOperation.java
@@ -12,6 +12,7 @@
 
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.action.IAction;
 import org.eclipse.team.internal.ccvs.core.CVSException;
 import org.eclipse.team.internal.ccvs.core.ICVSRemoteFolder;
 import org.eclipse.team.internal.ccvs.ui.Policy;
@@ -67,4 +68,19 @@
 	public boolean canRunAsJob() {
 		return true;
 	}
+	
+	/* (non-Javadoc)
+     * @see org.eclipse.team.ui.TeamOperation#isKeepOneProgressServiceEntry()
+     */
+    public boolean isKeepOneProgressServiceEntry() {
+        // Keep the last repository provider operation in the progress service
+        return true;
+    }
+    
+    /* (non-Javadoc)
+     * @see org.eclipse.team.ui.TeamOperation#getGotoAction()
+     */
+    protected IAction getGotoAction() {
+        return getShowConsoleAction();
+    }
 }
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/RepositoryProviderOperation.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/RepositoryProviderOperation.java
index a94e55c..cc2e0bf 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/RepositoryProviderOperation.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/operations/RepositoryProviderOperation.java
@@ -15,6 +15,7 @@
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.*;
 import org.eclipse.core.runtime.jobs.ISchedulingRule;
+import org.eclipse.jface.action.IAction;
 import org.eclipse.team.core.RepositoryProvider;
 import org.eclipse.team.core.TeamException;
 import org.eclipse.team.internal.ccvs.core.*;
@@ -193,4 +194,18 @@
 		}
 	}
 	
+	/* (non-Javadoc)
+     * @see org.eclipse.team.ui.TeamOperation#isKeepOneProgressServiceEntry()
+     */
+    public boolean isKeepOneProgressServiceEntry() {
+        // Keep the last repository provider operation in the progress service
+        return true;
+    }
+    
+    /* (non-Javadoc)
+     * @see org.eclipse.team.ui.TeamOperation#getGotoAction()
+     */
+    protected IAction getGotoAction() {
+        return getShowConsoleAction();
+    }
 }