refactoring packages in team.ui
diff --git a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/subscribers/RefreshSubscribersJob.java b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/subscribers/RefreshSubscribersJob.java
index 1bbecb4..e28bb90 100644
--- a/bundles/org.eclipse.team.core/src/org/eclipse/team/core/subscribers/RefreshSubscribersJob.java
+++ b/bundles/org.eclipse.team.core/src/org/eclipse/team/core/subscribers/RefreshSubscribersJob.java
@@ -22,6 +22,7 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.OperationCanceledException;
 import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.ISchedulingRule;
 import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.core.runtime.jobs.JobChangeAdapter;
 import org.eclipse.team.core.TeamException;
@@ -35,42 +36,43 @@
  * Upon completion of the user initiated refresh, the scheduled background refreshes
  * will resume.
  * 
+ * There can be several refresh jobs created but they will be serialized.
+ * 
  * [Note: this job currently updates all roots of every subscriber. It may be better to have API 
  * to specify a more constrained set of resources and subscribers to refresh.] 
  */
 public class RefreshSubscribersJob extends Job implements ITeamResourceChangeListener {
 	
+	private boolean rescheduled  = false;
 	private final static boolean DEBUG = Policy.DEBUG_REFRESH_JOB;
 	private static long refreshInterval = 20000; //5 /* minutes */ * (60 * 1000); 
 	
 	private Map subscribers = Collections.synchronizedMap(new  HashMap());
-	private List importantSubscribers = Collections.synchronizedList(new  ArrayList());
 	
-	private RefreshSubscribersJob instance;
+	private class BatchSimilarSchedulingRule implements ISchedulingRule {
+		public String id;
+		public BatchSimilarSchedulingRule(String id) {
+			this.id = id;
+		}		
+		public boolean isConflicting(ISchedulingRule rule) {
+			if(rule instanceof BatchSimilarSchedulingRule) {
+				return ((BatchSimilarSchedulingRule)rule).id.equals(id);
+			}
+			return false;
+		}
+	}
 	
 	public RefreshSubscribersJob() {
 		TeamProvider.addListener(this);
 		addJobChangeListener(new JobChangeAdapter() {
 			public void done(Job job, IStatus result) {
-				startup();
+				if(rescheduled) {
+					startup();
+				}
 			}
 		});
 		setPriority(Job.DECORATE);
-		if(! subscribers.isEmpty()) {
-			if(DEBUG) System.out.println("refreshJob: starting job in constructor");
-			startup();
-		}
-		
-		
-		
-		instance = this;
-	}
-	
-	public RefreshSubscribersJob getInstance() {
-		if(instance == null) {
-			new RefreshSubscribersJob();
-		}
-		return instance;
+		setRule(new BatchSimilarSchedulingRule("org.eclipse.team.core.refreshsubscribers"));
 	}
 	
 	/**
@@ -79,14 +81,6 @@
 	 */
 	synchronized public void setRefreshInterval(long seconds) {
 		refreshInterval = seconds * 1000;
-		
-		// if the job hasn't been run yet then update the interval time,
-		// otherwise wait until the job is finished and the interval time
-		// will be used when it is rescheduled.
-		if(getState() == Job.WAITING) {
-			cancel();
-			startup();
-		}
 	}
 	
 	/**
@@ -98,25 +92,13 @@
 	}
 	
 	/**
-	 * Called to schedule a subscriber to be refreshed immediately. If the job is currently running it
-	 * will be cancelled and the job will be restarted to refresh the given subscriber only.   
-	 */
-	synchronized public void refreshNow(IResource[] resources, TeamSubscriber subscriber) {
-	}
-	
-	/**
 	 * This is run by the job scheduler. A list of subscribers will be refreshed, errors will not stop the job 
 	 * and it will continue to refresh the other subscribers.
 	 */
 	public IStatus run(IProgressMonitor monitor) {		
 		monitor.beginTask("", subscribers.size() * 100);
 		try {		
-			Iterator it;
-			if(importantSubscribers != null && ! importantSubscribers.isEmpty()) {
-				it = importantSubscribers.iterator();
-			} else {
-				it = subscribers.values().iterator();
-			}
+			Iterator it = subscribers.values().iterator();
 			while (it.hasNext()) {
 				if(monitor.isCanceled()) {
 					return Status.CANCEL_STATUS;
@@ -136,13 +118,12 @@
 			return Status.CANCEL_STATUS;
 		} finally {
 			monitor.done();
-			importantSubscribers.clear();
 		}
 		return Status.OK_STATUS;
 	}
 
 	/**
-	 * This job will update it's list of subscribers to refresh based on the create/delete 
+	 * This job will update its list of subscribers to refresh based on the create/delete 
 	 * subscriber events. 
 	 * 
 	 * If a new subscriber is created it will be added to the list of subscribers
@@ -150,7 +131,7 @@
 	 * 
 	 * If a subscriber is deleted, the job is cancelled to ensure that the subscriber being 
 	 * deleted can be properly shutdown. After removing the subscriber from the list the
-	 * job is restarted is there are any subscribers left.  
+	 * job is restarted if there are any subscribers left.  
 	 */
 	public void teamResourceChanged(TeamDelta[] deltas) {
 		for (int i = 0; i < deltas.length; i++) {
@@ -160,7 +141,6 @@
 				subscribers.put(s.getId(), s);
 				if(DEBUG) System.out.println("refreshJob: adding subscriber " + s.getName());
 				if(this.getState() == Job.NONE) {
-					if(DEBUG) System.out.println("refreshJob: starting job after adding " + s.getName());
 					startup();
 				}				
 			} else if(delta.getFlags() == TeamDelta.SUBSCRIBER_DELETED) {
@@ -177,7 +157,15 @@
 		}
 	}
 
-	private void startup() {
+	protected void startup() {
+		if(DEBUG) System.out.println("refreshJob: scheduling job");
 		schedule(refreshInterval);
 	}
+
+	/**
+	 * @param b
+	 */
+	public void setRescheduled(boolean rescheduled) {
+		this.rescheduled = rescheduled;		
+	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AddToVersionControlDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AddToVersionControlDialog.java
index da7b15b..f6a310d 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AddToVersionControlDialog.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AddToVersionControlDialog.java
@@ -27,7 +27,7 @@
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.internal.ui.DetailsDialog;
+import org.eclipse.team.internal.ui.dialogs.DetailsDialog;
 import org.eclipse.ui.help.WorkbenchHelp;
 import org.eclipse.ui.model.WorkbenchContentProvider;
 import org.eclipse.ui.model.WorkbenchLabelProvider;
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/BranchPromptDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/BranchPromptDialog.java
index fd0c0b4..5ab2f97 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/BranchPromptDialog.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/BranchPromptDialog.java
@@ -31,6 +31,7 @@
 import org.eclipse.team.internal.ccvs.ui.repo.*;
 import org.eclipse.team.internal.ccvs.ui.wizards.CVSWizardPage;
 import org.eclipse.team.internal.ui.*;
+import org.eclipse.team.internal.ui.dialogs.*;
 import org.eclipse.team.internal.ccvs.ui.merge.ProjectElement;
 import org.eclipse.ui.help.WorkbenchHelp;
 import org.eclipse.ui.model.WorkbenchContentProvider;
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSUIPlugin.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSUIPlugin.java
index 9e63a03..0a60d33 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSUIPlugin.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSUIPlugin.java
@@ -47,6 +47,7 @@
 import org.eclipse.team.internal.ccvs.ui.repo.RepositoryManager;
 import org.eclipse.team.internal.ccvs.ui.repo.RepositoryRoot;
 import org.eclipse.team.internal.ui.TeamUIPlugin;
+import org.eclipse.team.internal.ui.Utils;
 import org.eclipse.team.ui.TeamUI;
 import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.IWorkbenchWindow;
@@ -221,7 +222,7 @@
 	 */
 	public static void runWithProgress(Shell parent, boolean cancelable,
 		final IRunnableWithProgress runnable) throws InvocationTargetException, InterruptedException {
-		TeamUIPlugin.runWithProgress(parent, cancelable, runnable);
+		Utils.runWithProgress(parent, cancelable, runnable);
 	}
 	
 	/**
@@ -246,7 +247,7 @@
 			Runnable outerRunnable = new Runnable() {
 				public void run() {
 					try {
-						TeamUIPlugin.runWithProgress(parent, cancelable, runnable);
+						Utils.runWithProgress(parent, cancelable, runnable);
 					} catch (InvocationTargetException e) {
 						exception[1] = e;
 					} catch (InterruptedException e) {
@@ -280,7 +281,7 @@
 				}
 			}
 		} else {
-			TeamUIPlugin.runWithProgress(parent, cancelable, runnable);
+			Utils.runWithProgress(parent, cancelable, runnable);
 		}
 	}
 	
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CommitCommentArea.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CommitCommentArea.java
index 18ec5f8..e08df7c 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CommitCommentArea.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CommitCommentArea.java
@@ -32,6 +32,7 @@
 import org.eclipse.team.internal.ccvs.core.CVSProviderPlugin;
 import org.eclipse.team.internal.ccvs.core.CVSTeamProvider;
 import org.eclipse.team.internal.ui.*;
+import org.eclipse.team.internal.ui.dialogs.*;
 import org.eclipse.team.ui.*;
 
 /**
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ListSelectionArea.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ListSelectionArea.java
index 5eece8e..61c5f01 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ListSelectionArea.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ListSelectionArea.java
@@ -30,6 +30,7 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.team.internal.ui.*;
+import org.eclipse.team.internal.ui.dialogs.*;
 import org.eclipse.team.ui.*;
 
 /**
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TagAsVersionDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TagAsVersionDialog.java
index b0f58e6..4eeda50 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TagAsVersionDialog.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TagAsVersionDialog.java
@@ -36,6 +36,7 @@
 import org.eclipse.team.internal.ccvs.ui.merge.TagElement;
 import org.eclipse.team.internal.ccvs.ui.merge.TagRootElement;
 import org.eclipse.team.internal.ui.*;
+import org.eclipse.team.internal.ui.dialogs.*;
 import org.eclipse.ui.help.WorkbenchHelp;
 import org.eclipse.ui.model.WorkbenchContentProvider;
 import org.eclipse.ui.model.WorkbenchLabelProvider;
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/WorkingSetSelectionArea.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/WorkingSetSelectionArea.java
index 9047e91..1999bb2 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/WorkingSetSelectionArea.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/WorkingSetSelectionArea.java
@@ -25,6 +25,7 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.team.internal.ui.*;
+import org.eclipse.team.internal.ui.dialogs.*;
 import org.eclipse.team.ui.*;
 import org.eclipse.ui.IWorkingSet;
 import org.eclipse.ui.IWorkingSetManager;
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/AddToWorkspaceAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/AddToWorkspaceAction.java
index 39ca590..8d13812 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/AddToWorkspaceAction.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/AddToWorkspaceAction.java
@@ -32,8 +32,8 @@
 import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot;
 import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo;
 import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ui.IPromptCondition;
-import org.eclipse.team.internal.ui.PromptingDialog;
+import org.eclipse.team.internal.ui.dialogs.IPromptCondition;
+import org.eclipse.team.internal.ui.dialogs.PromptingDialog;
 import org.eclipse.ui.actions.WorkspaceModifyOperation;
 
 /**
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CVSAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CVSAction.java
index 7e28981..e245bd3 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CVSAction.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CVSAction.java
@@ -46,8 +46,8 @@
 import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
 import org.eclipse.team.internal.ccvs.ui.Policy;
 import org.eclipse.team.internal.ccvs.ui.repo.RepositoryManager;
-import org.eclipse.team.internal.ui.IPromptCondition;
 import org.eclipse.team.internal.ui.actions.TeamAction;
+import org.eclipse.team.internal.ui.dialogs.IPromptCondition;
 import org.eclipse.ui.PlatformUI;
 
 /**
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithRemoteAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithRemoteAction.java
index a5ca500..4cb7701 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithRemoteAction.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithRemoteAction.java
@@ -27,7 +27,7 @@
 import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
 import org.eclipse.team.internal.ccvs.ui.Policy;
 import org.eclipse.team.internal.core.InfiniteSubProgressMonitor;
-import org.eclipse.team.internal.ui.IPromptCondition;
+import org.eclipse.team.internal.ui.dialogs.IPromptCondition;
 import org.eclipse.ui.actions.WorkspaceModifyOperation;
 
 public class ReplaceWithRemoteAction extends WorkspaceAction {
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/TagAction.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/TagAction.java
index 1e532ca..51ea6ee 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/TagAction.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/TagAction.java
@@ -34,8 +34,8 @@
 import org.eclipse.team.internal.ccvs.ui.Policy;
 import org.eclipse.team.internal.ccvs.ui.TagAsVersionDialog;
 import org.eclipse.team.internal.ccvs.ui.repo.RepositoryManager;
-import org.eclipse.team.internal.ui.IPromptCondition;
-import org.eclipse.team.internal.ui.PromptingDialog;
+import org.eclipse.team.internal.ui.dialogs.IPromptCondition;
+import org.eclipse.team.internal.ui.dialogs.PromptingDialog;
 
 /**
  * TagAction tags the selected resources with a version tag specified by the user.
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 af00c92..1e9fa09 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
@@ -47,8 +47,8 @@
 import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo;
 import org.eclipse.team.internal.ccvs.core.util.Util;
 import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ui.IPromptCondition;
-import org.eclipse.team.internal.ui.PromptingDialog;
+import org.eclipse.team.internal.ui.dialogs.IPromptCondition;
+import org.eclipse.team.internal.ui.dialogs.PromptingDialog;
 
 /**
  * This class represents an action performed on a local CVS workspace
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/CVSRepositoryPropertiesPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/CVSRepositoryPropertiesPage.java
index b792631..0c82432 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/CVSRepositoryPropertiesPage.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/CVSRepositoryPropertiesPage.java
@@ -44,7 +44,7 @@
 import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
 import org.eclipse.team.internal.ccvs.ui.IHelpContextIds;
 import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ui.DetailsDialogWithProjects;
+import org.eclipse.team.internal.ui.dialogs.DetailsDialogWithProjects;
 import org.eclipse.ui.actions.WorkspaceModifyOperation;
 import org.eclipse.ui.dialogs.PropertyPage;
 import org.eclipse.ui.help.WorkbenchHelp;
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 0b0fe17..954501a 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
@@ -24,7 +24,7 @@
 import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation;
 import org.eclipse.team.internal.ccvs.ui.Policy;
 import org.eclipse.team.internal.ccvs.ui.actions.CVSAction;
-import org.eclipse.team.internal.ui.DetailsDialogWithProjects;
+import org.eclipse.team.internal.ui.dialogs.DetailsDialogWithProjects;
 import org.eclipse.ui.actions.SelectionListenerAction;
 import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
 
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/SyncResourceSetDetailsDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/SyncResourceSetDetailsDialog.java
index 57784a5..6bedd41 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/SyncResourceSetDetailsDialog.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/subscriber/SyncResourceSetDetailsDialog.java
@@ -26,7 +26,7 @@
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.team.internal.ccvs.ui.AdaptableResourceList;
 import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ui.DetailsDialog;
+import org.eclipse.team.internal.ui.dialogs.DetailsDialog;
 import org.eclipse.team.ui.sync.SyncResourceSet;
 import org.eclipse.ui.model.WorkbenchContentProvider;
 import org.eclipse.ui.model.WorkbenchLabelProvider;
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutIntoWizard.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutIntoWizard.java
index 88e13a7..d585385 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutIntoWizard.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutIntoWizard.java
@@ -29,8 +29,8 @@
 import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin;
 import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants;
 import org.eclipse.team.internal.ccvs.ui.Policy;
-import org.eclipse.team.internal.ui.IPromptCondition;
-import org.eclipse.team.internal.ui.PromptingDialog;
+import org.eclipse.team.internal.ui.dialogs.IPromptCondition;
+import org.eclipse.team.internal.ui.dialogs.PromptingDialog;
 import org.eclipse.ui.actions.WorkspaceModifyOperation;
 
 /**
diff --git a/bundles/org.eclipse.team.ui/plugin.xml b/bundles/org.eclipse.team.ui/plugin.xml
index 46d5e65..e307591 100644
--- a/bundles/org.eclipse.team.ui/plugin.xml
+++ b/bundles/org.eclipse.team.ui/plugin.xml
@@ -30,16 +30,16 @@
    <extension
       point = "org.eclipse.ui.preferencePages">
       	<page id="org.eclipse.team.ui.TeamPreferences"
-      		class="org.eclipse.team.internal.ui.TeamPreferencePage"
+      		class="org.eclipse.team.internal.ui.preferences.TeamPreferencePage"
       		name="%TeamPreferencePage.name">
       	</page>
        <page id="org.eclipse.team.ui.TextPreferences"
-       	  class="org.eclipse.team.internal.ui.TextPreferencePage"
+       	  class="org.eclipse.team.internal.ui.preferences.TextPreferencePage"
        	    name="%TextPreferencePage.name"
        	    category="org.eclipse.team.ui.TeamPreferences">
        </page>
        <page id="org.eclipse.team.ui.IgnorePreferences"
-       	  class="org.eclipse.team.internal.ui.IgnorePreferencePage"
+       	  class="org.eclipse.team.internal.ui.preferences.IgnorePreferencePage"
        	    name="%IgnorePreferencePage.name"
        	    category="org.eclipse.team.ui.TeamPreferences">
        </page>
@@ -198,7 +198,7 @@
       <wizard
          id="org.eclipse.team.ui.ProjectSetImportWizard"
          name="%ProjectSetImportWizard.name"
-         class="org.eclipse.team.internal.ui.ProjectSetImportWizard"
+         class="org.eclipse.team.internal.ui.wizard.ProjectSetImportWizard"
          icon="icons/full/obj/import_projectset.gif">
          <description>
             %ProjectSetImportWizard.description
@@ -222,7 +222,7 @@
       <wizard
          id="org.eclipse.team.ui.ProjectSetExportWizard"
          name="%ProjectSetExportWizard.name"
-         class="org.eclipse.team.internal.ui.ProjectSetExportWizard"
+         class="org.eclipse.team.internal.ui.wizards.ProjectSetExportWizard"
          icon="icons/full/obj/export_projectset.gif">
          <description>
             %ProjectSetExportWizard.description
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIPlugin.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIPlugin.java
index e4a3b4b..108d88b 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIPlugin.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIPlugin.java
@@ -11,7 +11,6 @@
 package org.eclipse.team.internal.ui;
 
 
-import java.lang.reflect.InvocationTargetException;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.ArrayList;
@@ -24,21 +23,14 @@
 import org.eclipse.core.runtime.IExtension;
 import org.eclipse.core.runtime.IPluginDescriptor;
 import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.dialogs.ErrorDialog;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.util.IPropertyChangeListener;
 import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.swt.custom.BusyIndicator;
 import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.core.TeamException;
+import org.eclipse.team.core.subscribers.RefreshSubscribersJob;
 import org.eclipse.team.ui.ISharedImages;
 import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.IWorkbenchWindow;
@@ -67,6 +59,15 @@
 	
 	private static Hashtable imageDescriptors = new Hashtable(20);
 	private static List disposeOnShutdownImages= new ArrayList();
+	
+	private RefreshSubscribersJob refreshJob;
+
+	/**
+	 * Returns the job that refreshes the active subscribers in the background.
+	 */
+	public RefreshSubscribersJob getRefreshJob() {
+		return refreshJob;
+	}
 
 	/**
 	 * Creates a new TeamUIPlugin.
@@ -172,165 +173,22 @@
 	}
 	
 	/**
-	 * Shows the given errors to the user.
-	 * 
-	 * @param Exception  the exception containing the error
-	 * @param title  the title of the error dialog
-	 * @param message  the message for the error dialog
-	 * @param shell  the shell to open the error dialog in
-	 */
-	public static void handleError(Shell shell, Exception exception, String title, String message) {
-		IStatus status = null;
-		boolean log = false;
-		boolean dialog = false;
-		Throwable t = exception;
-		if (exception instanceof TeamException) {
-			status = ((TeamException)exception).getStatus();
-			log = false;
-			dialog = true;
-		} else if (exception instanceof InvocationTargetException) {
-			t = ((InvocationTargetException)exception).getTargetException();
-			if (t instanceof TeamException) {
-				status = ((TeamException)t).getStatus();
-				log = false;
-				dialog = true;
-			} else if (t instanceof CoreException) {
-				status = ((CoreException)t).getStatus();
-				log = true;
-				dialog = true;
-			} else if (t instanceof InterruptedException) {
-				return;
-			} else {
-				status = new Status(IStatus.ERROR, TeamUIPlugin.ID, 1, Policy.bind("TeamAction.internal"), t); //$NON-NLS-1$
-				log = true;
-				dialog = true;
-			}
-		}
-		if (status == null) return;
-		if (!status.isOK()) {
-			IStatus toShow = status;
-			if (status.isMultiStatus()) {
-				IStatus[] children = status.getChildren();
-				if (children.length == 1) {
-					toShow = children[0];
-				}
-			}
-			if (title == null) {
-				title = status.getMessage();
-			}
-			if (message == null) {
-				message = status.getMessage();
-			}
-			if (dialog && shell != null) {
-				ErrorDialog.openError(shell, title, message, toShow);
-			}
-			if (log || shell == null) {
-				TeamUIPlugin.log(toShow.getSeverity(), message, t);
-			}
-		}
-	}
-	
-	public static void runWithProgress(Shell parent, boolean cancelable,
-		final IRunnableWithProgress runnable) throws InvocationTargetException, InterruptedException {
-		boolean createdShell = false;
-		try {
-			if (parent == null || parent.isDisposed()) {
-				Display display = Display.getCurrent();
-				if (display == null) {
-					// cannot provide progress (not in UI thread)
-					runnable.run(new NullProgressMonitor());
-					return;
-				}
-				// get the active shell or a suitable top-level shell
-				parent = display.getActiveShell();
-				if (parent == null) {
-					parent = new Shell(display);
-					createdShell = true;
-				}
-			}
-			// pop up progress dialog after a short delay
-			final Exception[] holder = new Exception[1];
-			BusyIndicator.showWhile(parent.getDisplay(), new Runnable() {
-				public void run() {
-					try {
-						runnable.run(new NullProgressMonitor());
-					} catch (InvocationTargetException e) {
-						holder[0] = e;
-					} catch (InterruptedException e) {
-						holder[0] = e;
-					}
-				}
-			});
-			if (holder[0] != null) {
-				if (holder[0] instanceof InvocationTargetException) {
-					throw (InvocationTargetException) holder[0];
-				} else {
-					throw (InterruptedException) holder[0];
-				}
-			}
-			//new TimeoutProgressMonitorDialog(parent, TIMEOUT).run(true /*fork*/, cancelable, runnable);
-		} finally {
-			if (createdShell) parent.dispose();
-		}
-	}
-	
-	/**
-	 * Creates a progress monitor and runs the specified runnable.
-	 * 
-	 * @param parent the parent Shell for the dialog
-	 * @param cancelable if true, the dialog will support cancelation
-	 * @param runnable the runnable
-	 * 
-	 * @exception InvocationTargetException when an exception is thrown from the runnable
-	 * @exception InterruptedException when the progress monitor is cancelled
-	 */
-	public static void runWithProgressDialog(Shell parent, boolean cancelable,
-		final IRunnableWithProgress runnable) throws InvocationTargetException, InterruptedException {
-			
-		new ProgressMonitorDialog(parent).run(cancelable, cancelable, runnable);
-	}
-	
-	/**
 	 * @see Plugin#startup()
 	 */
 	public void startup() throws CoreException {
 		Policy.localize("org.eclipse.team.internal.ui.messages"); //$NON-NLS-1$
 		initializePreferences();
-	}
-	
-	/*
-	 * This method is only for use by the Target Management feature (see bug
-	 * 16509).
-	 * 
-	 * @param t
-	 */
-	public static void handle(Throwable t) {
-		IStatus error = null;
-		if (t instanceof InvocationTargetException) {
-			t = ((InvocationTargetException)t).getTargetException();
-		}
-		if (t instanceof CoreException) {
-			error = ((CoreException)t).getStatus();
-		} else if (t instanceof TeamException) {
-			error = ((TeamException)t).getStatus();
-		} else {
-			error = new Status(IStatus.ERROR, TeamUIPlugin.ID, 1, Policy.bind("simpleInternal"), t); //$NON-NLS-1$
-		}
-	
-		Shell shell = new Shell(Display.getDefault());
-	
-		if (error.getSeverity() == IStatus.INFO) {
-			MessageDialog.openInformation(shell, Policy.bind("information"), error.getMessage()); //$NON-NLS-1$
-		} else {
-			ErrorDialog.openError(shell, Policy.bind("exception"), null, error); //$NON-NLS-1$
-		}
-		shell.dispose();
-		// Let's log non-team exceptions
-		if (!(t instanceof TeamException)) {
-			TeamUIPlugin.log(error.getSeverity(), error.getMessage(), t);
+		
+		// startup auto-refresh job if necessary
+		refreshJob = new RefreshSubscribersJob();
+		if(getPreferenceStore().getBoolean(IPreferenceIds.SYNCVIEW_SCHEDULED_SYNC)) {
+			refreshJob.setRefreshInterval(getPreferenceStore().getInt(IPreferenceIds.SYNCVIEW_DELAY));
+			refreshJob.setRescheduled(true);
+			// start once the platform has started and stabilized
+			refreshJob.schedule(20000 /* 20 seconds */);
 		}
 	}
-
+	
 	/* (non-Javadoc)
 	 * @see org.eclipse.core.runtime.Plugin#shutdown()
 	 */
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Utils.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Utils.java
new file mode 100644
index 0000000..8803c3c
--- /dev/null
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Utils.java
@@ -0,0 +1,180 @@
+/*
+ * Created on Jun 26, 2003
+ *
+ * To change the template for this generated file go to
+ * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
+ */
+package org.eclipse.team.internal.ui;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.swt.custom.BusyIndicator;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.team.core.TeamException;
+
+/**
+ * @author Jean-Michel Lemieux
+ *
+ * To change the template for this generated type comment go to
+ * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
+ */
+public class Utils {
+
+	/**
+	 * Shows the given errors to the user.
+	 * 
+	 * @param Exception  the exception containing the error
+	 * @param title  the title of the error dialog
+	 * @param message  the message for the error dialog
+	 * @param shell  the shell to open the error dialog in
+	 */
+	public static void handleError(Shell shell, Exception exception, String title, String message) {
+		IStatus status = null;
+		boolean log = false;
+		boolean dialog = false;
+		Throwable t = exception;
+		if (exception instanceof TeamException) {
+			status = ((TeamException)exception).getStatus();
+			log = false;
+			dialog = true;
+		} else if (exception instanceof InvocationTargetException) {
+			t = ((InvocationTargetException)exception).getTargetException();
+			if (t instanceof TeamException) {
+				status = ((TeamException)t).getStatus();
+				log = false;
+				dialog = true;
+			} else if (t instanceof CoreException) {
+				status = ((CoreException)t).getStatus();
+				log = true;
+				dialog = true;
+			} else if (t instanceof InterruptedException) {
+				return;
+			} else {
+				status = new Status(IStatus.ERROR, TeamUIPlugin.ID, 1, Policy.bind("TeamAction.internal"), t); //$NON-NLS-1$
+				log = true;
+				dialog = true;
+			}
+		}
+		if (status == null) return;
+		if (!status.isOK()) {
+			IStatus toShow = status;
+			if (status.isMultiStatus()) {
+				IStatus[] children = status.getChildren();
+				if (children.length == 1) {
+					toShow = children[0];
+				}
+			}
+			if (title == null) {
+				title = status.getMessage();
+			}
+			if (message == null) {
+				message = status.getMessage();
+			}
+			if (dialog && shell != null) {
+				ErrorDialog.openError(shell, title, message, toShow);
+			}
+			if (log || shell == null) {
+				TeamUIPlugin.log(toShow.getSeverity(), message, t);
+			}
+		}
+	}
+	public static void runWithProgress(Shell parent, boolean cancelable,
+		final IRunnableWithProgress runnable) throws InvocationTargetException, InterruptedException {
+		boolean createdShell = false;
+		try {
+			if (parent == null || parent.isDisposed()) {
+				Display display = Display.getCurrent();
+				if (display == null) {
+					// cannot provide progress (not in UI thread)
+					runnable.run(new NullProgressMonitor());
+					return;
+				}
+				// get the active shell or a suitable top-level shell
+				parent = display.getActiveShell();
+				if (parent == null) {
+					parent = new Shell(display);
+					createdShell = true;
+				}
+			}
+			// pop up progress dialog after a short delay
+			final Exception[] holder = new Exception[1];
+			BusyIndicator.showWhile(parent.getDisplay(), new Runnable() {
+				public void run() {
+					try {
+						runnable.run(new NullProgressMonitor());
+					} catch (InvocationTargetException e) {
+						holder[0] = e;
+					} catch (InterruptedException e) {
+						holder[0] = e;
+					}
+				}
+			});
+			if (holder[0] != null) {
+				if (holder[0] instanceof InvocationTargetException) {
+					throw (InvocationTargetException) holder[0];
+				} else {
+					throw (InterruptedException) holder[0];
+				}
+			}
+			//new TimeoutProgressMonitorDialog(parent, TIMEOUT).run(true /*fork*/, cancelable, runnable);
+		} finally {
+			if (createdShell) parent.dispose();
+		}
+	}
+	/**
+	 * Creates a progress monitor and runs the specified runnable.
+	 * 
+	 * @param parent the parent Shell for the dialog
+	 * @param cancelable if true, the dialog will support cancelation
+	 * @param runnable the runnable
+	 * 
+	 * @exception InvocationTargetException when an exception is thrown from the runnable
+	 * @exception InterruptedException when the progress monitor is cancelled
+	 */
+	public static void runWithProgressDialog(Shell parent, boolean cancelable,
+		final IRunnableWithProgress runnable) throws InvocationTargetException, InterruptedException {
+			
+		new ProgressMonitorDialog(parent).run(cancelable, cancelable, runnable);
+	}
+	/*
+	 * This method is only for use by the Target Management feature (see bug
+	 * 16509).
+	 * 
+	 * @param t
+	 */
+	public static void handle(Throwable t) {
+		IStatus error = null;
+		if (t instanceof InvocationTargetException) {
+			t = ((InvocationTargetException)t).getTargetException();
+		}
+		if (t instanceof CoreException) {
+			error = ((CoreException)t).getStatus();
+		} else if (t instanceof TeamException) {
+			error = ((TeamException)t).getStatus();
+		} else {
+			error = new Status(IStatus.ERROR, TeamUIPlugin.ID, 1, Policy.bind("simpleInternal"), t); //$NON-NLS-1$
+		}
+	
+		Shell shell = new Shell(Display.getDefault());
+	
+		if (error.getSeverity() == IStatus.INFO) {
+			MessageDialog.openInformation(shell, Policy.bind("information"), error.getMessage()); //$NON-NLS-1$
+		} else {
+			ErrorDialog.openError(shell, Policy.bind("exception"), null, error); //$NON-NLS-1$
+		}
+		shell.dispose();
+		// Let's log non-team exceptions
+		if (!(t instanceof TeamException)) {
+			TeamUIPlugin.log(error.getSeverity(), error.getMessage(), t);
+		}
+	}
+}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/ConfigureProjectAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/ConfigureProjectAction.java
index d9d93ca..a1a1fcd 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/ConfigureProjectAction.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/ConfigureProjectAction.java
@@ -19,8 +19,8 @@
 import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.team.core.RepositoryProvider;
-import org.eclipse.team.internal.ui.ConfigureProjectWizard;
 import org.eclipse.team.internal.ui.Policy;
+import org.eclipse.team.internal.ui.wizards.ConfigureProjectWizard;
 
 /**
  * Action for configuring a project. Configuring involves associating
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/TeamAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/TeamAction.java
index d067605..fa2ae35 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/TeamAction.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/TeamAction.java
@@ -37,6 +37,7 @@
 import org.eclipse.team.internal.core.target.TargetManager;
 import org.eclipse.team.internal.core.target.TargetProvider;
 import org.eclipse.team.internal.ui.TeamUIPlugin;
+import org.eclipse.team.internal.ui.Utils;
 import org.eclipse.ui.IObjectActionDelegate;
 import org.eclipse.ui.IViewPart;
 import org.eclipse.ui.IWorkbench;
@@ -265,7 +266,7 @@
 	 * @param shell  the shell to open the error dialog in
 	 */
 	protected void handle(Exception exception, String title, String message) {
-		TeamUIPlugin.handleError(getShell(), exception, title, message);
+		Utils.handleError(getShell(), exception, title, message);
 	}
 	
 	/**
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/DetailsDialog.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/dialogs/DetailsDialog.java
similarity index 99%
rename from bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/DetailsDialog.java
rename to bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/dialogs/DetailsDialog.java
index 0d7e2cd..d5fe9f9 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/DetailsDialog.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/dialogs/DetailsDialog.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.team.internal.ui;
+package org.eclipse.team.internal.ui.dialogs;
 
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.dialogs.IDialogConstants;
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/DetailsDialogWithProjects.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/dialogs/DetailsDialogWithProjects.java
similarity index 98%
rename from bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/DetailsDialogWithProjects.java
rename to bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/dialogs/DetailsDialogWithProjects.java
index 34119fa..b1db66d 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/DetailsDialogWithProjects.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/dialogs/DetailsDialogWithProjects.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.team.internal.ui;
+package org.eclipse.team.internal.ui.dialogs;
 
 import org.eclipse.core.resources.IProject;
 import org.eclipse.jface.dialogs.IDialogConstants;
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/DialogArea.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/dialogs/DialogArea.java
similarity index 99%
rename from bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/DialogArea.java
rename to bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/dialogs/DialogArea.java
index 28a556c..d6639ab 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/DialogArea.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/dialogs/DialogArea.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.team.internal.ui;
+package org.eclipse.team.internal.ui.dialogs;
 
 import java.util.ArrayList;
 import java.util.Iterator;
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/IPromptCondition.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/dialogs/IPromptCondition.java
similarity index 95%
rename from bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/IPromptCondition.java
rename to bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/dialogs/IPromptCondition.java
index 60234a5..79f9b6c 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/IPromptCondition.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/dialogs/IPromptCondition.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.team.internal.ui;
+package org.eclipse.team.internal.ui.dialogs;
 
 import org.eclipse.core.resources.IResource;
 
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/dialogs/PreferencePageContainerDialog.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/dialogs/PreferencePageContainerDialog.java
similarity index 99%
rename from bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/dialogs/PreferencePageContainerDialog.java
rename to bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/dialogs/PreferencePageContainerDialog.java
index a6bba6d..097aab8 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/dialogs/PreferencePageContainerDialog.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/dialogs/PreferencePageContainerDialog.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.team.internal.ui.sync.dialogs;
+package org.eclipse.team.internal.ui.dialogs;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/PromptingDialog.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/dialogs/PromptingDialog.java
similarity index 98%
rename from bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/PromptingDialog.java
rename to bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/dialogs/PromptingDialog.java
index 4cd17b7..1f40ecd 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/PromptingDialog.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/dialogs/PromptingDialog.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.team.internal.ui;
+package org.eclipse.team.internal.ui.dialogs;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/IgnorePreferencePage.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/preferences/IgnorePreferencePage.java
similarity index 96%
rename from bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/IgnorePreferencePage.java
rename to bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/preferences/IgnorePreferencePage.java
index f7304d5..924527d 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/IgnorePreferencePage.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/preferences/IgnorePreferencePage.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.team.internal.ui;
+package org.eclipse.team.internal.ui.preferences;
 
  
 import org.eclipse.jface.dialogs.Dialog;
@@ -30,6 +30,9 @@
 import org.eclipse.swt.widgets.TableItem;
 import org.eclipse.team.core.IIgnoreInfo;
 import org.eclipse.team.core.Team;
+import org.eclipse.team.internal.ui.IHelpContextIds;
+import org.eclipse.team.internal.ui.Policy;
+import org.eclipse.team.internal.ui.TeamUIPlugin;
 import org.eclipse.team.ui.TeamUI;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchPreferencePage;
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/dialogs/SyncViewerPreferencePage.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/preferences/SyncViewerPreferencePage.java
similarity index 98%
rename from bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/dialogs/SyncViewerPreferencePage.java
rename to bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/preferences/SyncViewerPreferencePage.java
index d3b1619..9b730a3 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/dialogs/SyncViewerPreferencePage.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/preferences/SyncViewerPreferencePage.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.team.internal.ui.sync.dialogs;
+package org.eclipse.team.internal.ui.preferences;
 
 import org.eclipse.jface.preference.BooleanFieldEditor;
 import org.eclipse.jface.preference.FieldEditorPreferencePage;
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamPreferencePage.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/preferences/TeamPreferencePage.java
similarity index 95%
rename from bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamPreferencePage.java
rename to bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/preferences/TeamPreferencePage.java
index f83d5ea..40db07a 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamPreferencePage.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/preferences/TeamPreferencePage.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.team.internal.ui;
+package org.eclipse.team.internal.ui.preferences;
 
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.preference.IPreferenceStore;
@@ -19,6 +19,9 @@
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
+import org.eclipse.team.internal.ui.IHelpContextIds;
+import org.eclipse.team.internal.ui.Policy;
+import org.eclipse.team.internal.ui.TeamUIPlugin;
 import org.eclipse.team.ui.ISharedImages;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchPreferencePage;
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TextPreferencePage.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/preferences/TextPreferencePage.java
similarity index 98%
rename from bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TextPreferencePage.java
rename to bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/preferences/TextPreferencePage.java
index 4058a33..57da7bc 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TextPreferencePage.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/preferences/TextPreferencePage.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.team.internal.ui;
+package org.eclipse.team.internal.ui.preferences;
 
  
 import java.util.ArrayList;
@@ -50,6 +50,8 @@
 import org.eclipse.swt.widgets.TableColumn;
 import org.eclipse.team.core.IFileTypeInfo;
 import org.eclipse.team.core.Team;
+import org.eclipse.team.internal.ui.IHelpContextIds;
+import org.eclipse.team.internal.ui.Policy;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchPreferencePage;
 import org.eclipse.ui.help.WorkbenchHelp;
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/actions/RefreshAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/actions/RefreshAction.java
index 8daff94..dd4a370 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/actions/RefreshAction.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/actions/RefreshAction.java
@@ -21,6 +21,7 @@
 import org.eclipse.team.core.subscribers.TeamSubscriber;
 import org.eclipse.team.internal.core.Policy;
 import org.eclipse.team.internal.ui.TeamUIPlugin;
+import org.eclipse.team.internal.ui.Utils;
 import org.eclipse.team.internal.ui.actions.TeamAction;
 import org.eclipse.team.internal.ui.sync.views.SubscriberInput;
 import org.eclipse.team.internal.ui.sync.views.SyncViewer;
@@ -55,7 +56,7 @@
 				}						
 			}
 		} catch(TeamException e) {
-			TeamUIPlugin.handle(e);
+			Utils.handle(e);
 		}
 	}
 	
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/actions/SyncViewerShowPreferencesAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/actions/SyncViewerShowPreferencesAction.java
index 2150a0f..98c53d8 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/actions/SyncViewerShowPreferencesAction.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/actions/SyncViewerShowPreferencesAction.java
@@ -13,8 +13,8 @@
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.preference.PreferencePage;
-import org.eclipse.team.internal.ui.sync.dialogs.PreferencePageContainerDialog;
-import org.eclipse.team.internal.ui.sync.dialogs.SyncViewerPreferencePage;
+import org.eclipse.team.internal.ui.dialogs.PreferencePageContainerDialog;
+import org.eclipse.team.internal.ui.preferences.SyncViewerPreferencePage;
 
 public class SyncViewerShowPreferencesAction extends Action {
 	private final SyncViewerActions actions;
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/views/SyncViewer.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/views/SyncViewer.java
index 3971013..7e3d578 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/views/SyncViewer.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/views/SyncViewer.java
@@ -68,6 +68,7 @@
 import org.eclipse.team.internal.core.Assert;
 import org.eclipse.team.internal.ui.Policy;
 import org.eclipse.team.internal.ui.TeamUIPlugin;
+import org.eclipse.team.internal.ui.Utils;
 import org.eclipse.team.internal.ui.actions.TeamAction;
 import org.eclipse.team.internal.ui.sync.actions.SyncViewerActions;
 import org.eclipse.team.ui.ISharedImages;
@@ -477,7 +478,7 @@
 	}
 	
 	private static void handle(Shell shell, Exception exception, String title, String message) {
-		TeamUIPlugin.handleError(shell, exception, title, message);
+		Utils.handleError(shell, exception, title, message);
 	}
 	
 	/* (non-Javadoc)
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/ConfigureTargetWizard.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/ConfigureTargetWizard.java
index ad59b28..909f351 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/ConfigureTargetWizard.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/ConfigureTargetWizard.java
@@ -33,10 +33,10 @@
 import org.eclipse.team.internal.core.target.Site;
 import org.eclipse.team.internal.core.target.TargetManager;
 import org.eclipse.team.internal.core.target.TargetProvider;
-import org.eclipse.team.internal.ui.ConfigurationWizardElement;
-import org.eclipse.team.internal.ui.ConfigureProjectWizardMainPage;
 import org.eclipse.team.internal.ui.Policy;
 import org.eclipse.team.internal.ui.TeamUIPlugin;
+import org.eclipse.team.internal.ui.wizards.ConfigurationWizardElement;
+import org.eclipse.team.internal.ui.wizards.ConfigureProjectWizardMainPage;
 import org.eclipse.team.ui.IConfigurationWizard;
 import org.eclipse.team.ui.ISharedImages;
 import org.eclipse.ui.IWorkbench;
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/CreateNewFolderAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/CreateNewFolderAction.java
index 92a9334..aef48f5 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/CreateNewFolderAction.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/CreateNewFolderAction.java
@@ -23,6 +23,7 @@
 import org.eclipse.team.internal.core.target.IRemoteTargetResource;
 import org.eclipse.team.internal.ui.Policy;
 import org.eclipse.team.internal.ui.TeamUIPlugin;
+import org.eclipse.team.internal.ui.Utils;
 
 /**
  * Action to create a new remote folder.
@@ -41,7 +42,7 @@
 	 */
 	public void run(IAction action) {
 		try {
-			TeamUIPlugin.runWithProgressDialog(getShell(), true /* cancelable */, new IRunnableWithProgress() {
+			Utils.runWithProgressDialog(getShell(), true /* cancelable */, new IRunnableWithProgress() {
 				public void run(IProgressMonitor monitor)
 					throws InvocationTargetException, InterruptedException {
 						try {
@@ -64,7 +65,7 @@
 	public static IRemoteTargetResource createDir(final Shell shell, final IRemoteTargetResource parent, final String defaultName) throws TeamException {
 		final IRemoteTargetResource[] newFolder = new IRemoteTargetResource[] {null};
 		try {				
-			TeamUIPlugin.runWithProgressDialog(shell, true, new IRunnableWithProgress() {
+			Utils.runWithProgressDialog(shell, true, new IRunnableWithProgress() {
 				public void run(final IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
 					try {
 						monitor.beginTask(Policy.bind("CreateNewFolderAction.creatingFolder"), IProgressMonitor.UNKNOWN); //$NON-NLS-1$
@@ -98,7 +99,7 @@
 			if (e.getTargetException() instanceof TeamException) {
 				throw (TeamException)e.getTargetException();
 			}
-			TeamUIPlugin.handle(e);
+			Utils.handle(e);
 		} catch(InterruptedException e) {
 		}
 		return newFolder[0];
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/DiscardSiteAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/DiscardSiteAction.java
index d5db55b..573f4bc 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/DiscardSiteAction.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/DiscardSiteAction.java
@@ -32,8 +32,8 @@
 import org.eclipse.team.internal.core.target.Site;
 import org.eclipse.team.internal.core.target.TargetManager;
 import org.eclipse.team.internal.core.target.TargetProvider;
-import org.eclipse.team.internal.ui.DetailsDialog;
 import org.eclipse.team.internal.ui.Policy;
+import org.eclipse.team.internal.ui.dialogs.DetailsDialog;
 
 /**
  * Discards a remembered Site from Target Management. Before a Site can be
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/ExportTargetSiteMainPage.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/ExportTargetSiteMainPage.java
index dc456aa..a1f63aa 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/ExportTargetSiteMainPage.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/ExportTargetSiteMainPage.java
@@ -32,7 +32,7 @@
 import org.eclipse.team.internal.core.target.Site;
 import org.eclipse.team.internal.core.target.TargetManager;
 import org.eclipse.team.internal.ui.Policy;
-import org.eclipse.team.internal.ui.TeamWizardPage;
+import org.eclipse.team.internal.ui.wizards.TeamWizardPage;
 
 /**
  * This page allows the user to save the settings used by Target sites to a file.
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/GetAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/GetAction.java
index fcc4f50..4ff9df6 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/GetAction.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/GetAction.java
@@ -33,9 +33,10 @@
 import org.eclipse.team.core.TeamException;
 import org.eclipse.team.internal.core.target.TargetManager;
 import org.eclipse.team.internal.core.target.TargetProvider;
-import org.eclipse.team.internal.ui.DetailsDialog;
 import org.eclipse.team.internal.ui.Policy;
 import org.eclipse.team.internal.ui.TeamUIPlugin;
+import org.eclipse.team.internal.ui.Utils;
+import org.eclipse.team.internal.ui.dialogs.DetailsDialog;
 import org.eclipse.ui.actions.WorkspaceModifyOperation;
 
 /**
@@ -153,7 +154,7 @@
 			}
 			return true;
 		} catch(CoreException e) {
-			TeamUIPlugin.handle(e);
+			Utils.handle(e);
 		}	
 		return false;
 	}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/GetAsAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/GetAsAction.java
index 79e5db9..fc90d0c 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/GetAsAction.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/GetAsAction.java
@@ -32,7 +32,7 @@
 import org.eclipse.team.core.sync.IRemoteResource;
 import org.eclipse.team.internal.core.target.IRemoteTargetResource;
 import org.eclipse.team.internal.ui.Policy;
-import org.eclipse.team.internal.ui.PromptingDialog;
+import org.eclipse.team.internal.ui.dialogs.PromptingDialog;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.actions.NewProjectAction;
 import org.eclipse.ui.actions.WorkspaceModifyOperation;
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/GetAsProjectAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/GetAsProjectAction.java
index db13491..d36e66e 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/GetAsProjectAction.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/GetAsProjectAction.java
@@ -31,8 +31,9 @@
 import org.eclipse.team.internal.core.target.TargetProvider;
 import org.eclipse.team.internal.core.target.UrlUtil;
 import org.eclipse.team.internal.ui.Policy;
-import org.eclipse.team.internal.ui.PromptingDialog;
 import org.eclipse.team.internal.ui.TeamUIPlugin;
+import org.eclipse.team.internal.ui.Utils;
+import org.eclipse.team.internal.ui.dialogs.*;
 
 /**
  * Action to transfer a remote folder and it's contents into the workspace. The
@@ -66,7 +67,7 @@
 		}
 		
 		try {
-			TeamUIPlugin.runWithProgressDialog(getShell(), true, new IRunnableWithProgress() {
+			Utils.runWithProgressDialog(getShell(), true, new IRunnableWithProgress() {
 				public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
 					try {
 						monitor.beginTask(getTaskName(remoteFolders), remoteFolders.length * 100);
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/ImportTargetSiteMainPage.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/ImportTargetSiteMainPage.java
index b667a27..559896e 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/ImportTargetSiteMainPage.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/ImportTargetSiteMainPage.java
@@ -24,7 +24,7 @@
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Text;
 import org.eclipse.team.internal.ui.Policy;
-import org.eclipse.team.internal.ui.TeamWizardPage;
+import org.eclipse.team.internal.ui.wizards.TeamWizardPage;
 
 public class ImportTargetSiteMainPage extends TeamWizardPage {
 	private Text fileText;
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/MappingSelectionPage.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/MappingSelectionPage.java
index 511836e..5217e4f 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/MappingSelectionPage.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/MappingSelectionPage.java
@@ -40,6 +40,7 @@
 import org.eclipse.team.internal.ui.IHelpContextIds;
 import org.eclipse.team.internal.ui.Policy;
 import org.eclipse.team.internal.ui.TeamUIPlugin;
+import org.eclipse.team.internal.ui.Utils;
 import org.eclipse.ui.help.WorkbenchHelp;
 import org.eclipse.ui.model.WorkbenchLabelProvider;
 
@@ -115,7 +116,7 @@
 					viewer.setExpandedState(currentSelection, true);
 					viewer.setSelection(new StructuredSelection(newFolderUIElement));
 				} catch (TeamException e) {
-					TeamUIPlugin.handle(e);
+					Utils.handle(e);
 					return;
 				}
 			}			
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/RemoteResourceElement.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/RemoteResourceElement.java
index 890c431..5edf5fc 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/RemoteResourceElement.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/RemoteResourceElement.java
@@ -24,6 +24,7 @@
 import org.eclipse.team.internal.core.target.IRemoteTargetResource;
 import org.eclipse.team.internal.ui.Policy;
 import org.eclipse.team.internal.ui.TeamUIPlugin;
+import org.eclipse.team.internal.ui.Utils;
 import org.eclipse.ui.ISharedImages;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.model.IWorkbenchAdapter;
@@ -101,14 +102,14 @@
 			};
 			
 			if(runContext == null) {
-				TeamUIPlugin.runWithProgress(null, true /*cancelable*/, runnable);
+				Utils.runWithProgress(null, true /*cancelable*/, runnable);
 			} else {
 				runContext.run(true, true, runnable);
 			}
 		} catch (InterruptedException e) {
 			return new Object[0];
 		} catch (InvocationTargetException e) {
-			TeamUIPlugin.handle(e.getTargetException());
+			Utils.handle(e.getTargetException());
 			return new Object[0];
 		}
 		return result[0];
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteElement.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteElement.java
index ee69464..16fa29d 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteElement.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteElement.java
@@ -16,6 +16,7 @@
 import org.eclipse.team.internal.core.target.IRemoteTargetResource;
 import org.eclipse.team.internal.core.target.Site;
 import org.eclipse.team.internal.ui.TeamUIPlugin;
+import org.eclipse.team.internal.ui.Utils;
 import org.eclipse.team.ui.ISharedImages;
 
 /**
@@ -72,7 +73,7 @@
 		try {
 			setRemoteResource(site.getRemoteResource());
 		} catch (TeamException e) {
-			TeamUIPlugin.handle(e);
+			Utils.handle(e);
 			return new Object[0];
 		}
 		return super.getChildren(this);
@@ -84,7 +85,7 @@
 		try {
 			return site.getRemoteResource();
 		} catch (TeamException e) {
-			TeamUIPlugin.handle(e);
+			Utils.handle(e);
 			return null;
 		}
 	}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteExplorerView.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteExplorerView.java
index 2f04c1c..5120582 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteExplorerView.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteExplorerView.java
@@ -58,6 +58,7 @@
 import org.eclipse.team.internal.ui.IHelpContextIds;
 import org.eclipse.team.internal.ui.Policy;
 import org.eclipse.team.internal.ui.TeamUIPlugin;
+import org.eclipse.team.internal.ui.Utils;
 import org.eclipse.team.ui.ISharedImages;
 import org.eclipse.ui.IActionBars;
 import org.eclipse.ui.IWorkbenchActionConstants;
@@ -427,7 +428,7 @@
 					expandInTreeCurrentSelection(new StructuredSelection(currentSelection), false);
 					folderTree.setSelection(new StructuredSelection(newFolderUIElement));
 				} catch (TeamException e) {
-					TeamUIPlugin.handle(e);
+					Utils.handle(e);
 					return;
 				}
 			}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/TargetAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/TargetAction.java
index b51073f..ea2d34e 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/TargetAction.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/TargetAction.java
@@ -24,6 +24,7 @@
 import org.eclipse.team.internal.core.target.TargetManager;
 import org.eclipse.team.internal.core.target.TargetProvider;
 import org.eclipse.team.internal.ui.TeamUIPlugin;
+import org.eclipse.team.internal.ui.Utils;
 import org.eclipse.team.internal.ui.actions.TeamAction;
 
 public abstract class TargetAction extends TeamAction {
@@ -44,7 +45,7 @@
 					try {
 						remote = ((SiteElement)next).getSite().getRemoteResource();
 					} catch (TeamException e) {
-						TeamUIPlugin.handle(e);
+						Utils.handle(e);
 						return new IRemoteTargetResource[0];
 					}
 				}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/TargetSiteExportWizard.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/TargetSiteExportWizard.java
index 1725859..bfcbb0a 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/TargetSiteExportWizard.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/TargetSiteExportWizard.java
@@ -29,8 +29,8 @@
 import org.eclipse.team.core.TeamException;
 import org.eclipse.team.internal.core.target.Site;
 import org.eclipse.team.internal.ui.Policy;
-import org.eclipse.team.internal.ui.ProjectSetImportWizard;
 import org.eclipse.team.internal.ui.TeamUIPlugin;
+import org.eclipse.team.internal.ui.wizards.ProjectSetImportWizard;
 import org.eclipse.team.ui.ISharedImages;
 import org.eclipse.ui.IExportWizard;
 import org.eclipse.ui.IWorkbench;
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/UploadAction.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/UploadAction.java
index 1ae49b63..6daadc5 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/UploadAction.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/UploadAction.java
@@ -25,9 +25,9 @@
 import org.eclipse.team.internal.core.InfiniteSubProgressMonitor;
 import org.eclipse.team.internal.core.target.TargetManager;
 import org.eclipse.team.internal.core.target.TargetProvider;
-import org.eclipse.team.internal.ui.IPromptCondition;
 import org.eclipse.team.internal.ui.Policy;
-import org.eclipse.team.internal.ui.PromptingDialog;
+import org.eclipse.team.internal.ui.dialogs.IPromptCondition;
+import org.eclipse.team.internal.ui.dialogs.PromptingDialog;
 import org.eclipse.ui.actions.WorkspaceModifyOperation;
 
 public class UploadAction extends TargetAction {
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigurationWizardElement.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ConfigurationWizardElement.java
similarity index 97%
rename from bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigurationWizardElement.java
rename to bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ConfigurationWizardElement.java
index d52b40c..83a7eed 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigurationWizardElement.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ConfigurationWizardElement.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.team.internal.ui;
+package org.eclipse.team.internal.ui.wizards;
 
 
 import org.eclipse.core.runtime.CoreException;
@@ -16,6 +16,7 @@
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.team.internal.ui.TeamUIPlugin;
 import org.eclipse.ui.internal.model.WorkbenchAdapter;
 import org.eclipse.ui.model.IWorkbenchAdapter;
 
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigurationWizardNode.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ConfigurationWizardNode.java
similarity index 95%
rename from bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigurationWizardNode.java
rename to bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ConfigurationWizardNode.java
index aad7433..05a8a6e 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigurationWizardNode.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ConfigurationWizardNode.java
@@ -8,13 +8,14 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.team.internal.ui;
+package org.eclipse.team.internal.ui.wizards;
 
 
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.jface.wizard.IWizard;
 import org.eclipse.jface.wizard.IWizardNode;
 import org.eclipse.swt.graphics.Point;
+import org.eclipse.team.internal.ui.Policy;
 
 /**
  * ConfigurationWizardNode represents the objects in the
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigureProjectWizard.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ConfigureProjectWizard.java
similarity index 98%
rename from bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigureProjectWizard.java
rename to bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ConfigureProjectWizard.java
index 9bc0783..b284fcd 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigureProjectWizard.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ConfigureProjectWizard.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.team.internal.ui;
+package org.eclipse.team.internal.ui.wizards;
 
 
 import org.eclipse.core.resources.IProject;
@@ -20,6 +20,8 @@
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.jface.wizard.IWizardPage;
 import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.team.internal.ui.Policy;
+import org.eclipse.team.internal.ui.TeamUIPlugin;
 import org.eclipse.team.ui.IConfigurationWizard;
 import org.eclipse.team.ui.ISharedImages;
 import org.eclipse.ui.IWorkbench;
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigureProjectWizardMainPage.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ConfigureProjectWizardMainPage.java
similarity index 97%
rename from bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigureProjectWizardMainPage.java
rename to bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ConfigureProjectWizardMainPage.java
index e6f21d1..8f34c03 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigureProjectWizardMainPage.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ConfigureProjectWizardMainPage.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.team.internal.ui;
+package org.eclipse.team.internal.ui.wizards;
 
 
 import org.eclipse.core.resources.IProject;
@@ -29,6 +29,8 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Table;
+import org.eclipse.team.internal.ui.IHelpContextIds;
+import org.eclipse.team.internal.ui.Policy;
 import org.eclipse.team.ui.IConfigurationWizard;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.help.WorkbenchHelp;
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ExportProjectSetMainPage.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ExportProjectSetMainPage.java
similarity index 97%
rename from bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ExportProjectSetMainPage.java
rename to bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ExportProjectSetMainPage.java
index 217ed6d..6382e6d 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ExportProjectSetMainPage.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ExportProjectSetMainPage.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.team.internal.ui;
+package org.eclipse.team.internal.ui.wizards;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -34,6 +34,8 @@
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.Text;
 import org.eclipse.team.core.RepositoryProvider;
+import org.eclipse.team.internal.ui.IHelpContextIds;
+import org.eclipse.team.internal.ui.Policy;
 import org.eclipse.ui.help.WorkbenchHelp;
 import org.eclipse.ui.model.WorkbenchContentProvider;
 import org.eclipse.ui.model.WorkbenchLabelProvider;
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ImportProjectSetMainPage.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ImportProjectSetMainPage.java
similarity index 97%
rename from bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ImportProjectSetMainPage.java
rename to bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ImportProjectSetMainPage.java
index c10b072..8de9fcc 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ImportProjectSetMainPage.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ImportProjectSetMainPage.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.team.internal.ui;
+package org.eclipse.team.internal.ui.wizards;
 
 import java.io.File;
 
@@ -28,6 +28,9 @@
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Text;
+import org.eclipse.team.internal.ui.IHelpContextIds;
+import org.eclipse.team.internal.ui.Policy;
+import org.eclipse.team.internal.ui.TeamUIPlugin;
 import org.eclipse.ui.IWorkingSet;
 import org.eclipse.ui.help.WorkbenchHelp;
 
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ProjectSetExportWizard.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ProjectSetExportWizard.java
similarity index 97%
rename from bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ProjectSetExportWizard.java
rename to bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ProjectSetExportWizard.java
index 220c7e8..a450c91 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ProjectSetExportWizard.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ProjectSetExportWizard.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.team.internal.ui;
+package org.eclipse.team.internal.ui.wizards;
 
 import java.io.BufferedWriter;
 import java.io.File;
@@ -38,6 +38,8 @@
 import org.eclipse.team.core.RepositoryProviderType;
 import org.eclipse.team.core.Team;
 import org.eclipse.team.core.TeamException;
+import org.eclipse.team.internal.ui.Policy;
+import org.eclipse.team.internal.ui.TeamUIPlugin;
 import org.eclipse.team.ui.ISharedImages;
 import org.eclipse.ui.IExportWizard;
 import org.eclipse.ui.IWorkbench;
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ProjectSetImportWizard.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ProjectSetImportWizard.java
similarity index 95%
rename from bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ProjectSetImportWizard.java
rename to bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ProjectSetImportWizard.java
index 6470915..86807bb 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ProjectSetImportWizard.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ProjectSetImportWizard.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.team.internal.ui;
+package org.eclipse.team.internal.ui.wizards;
 
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -30,6 +30,9 @@
 import org.eclipse.team.core.IProjectSetSerializer;
 import org.eclipse.team.core.Team;
 import org.eclipse.team.core.TeamException;
+import org.eclipse.team.internal.ui.Policy;
+import org.eclipse.team.internal.ui.ProjectSetContentHandler;
+import org.eclipse.team.internal.ui.TeamUIPlugin;
 import org.eclipse.team.ui.ISharedImages;
 import org.eclipse.ui.IImportWizard;
 import org.eclipse.ui.IWorkbench;
@@ -82,7 +85,7 @@
 						
 						Map map = handler.getReferences();
 						List newProjects = new ArrayList();
-						if (map.size() == 0 && handler.isVersionOne) {
+						if (map.size() == 0 && handler.isVersionOne()) {
 							IProjectSetSerializer serializer = Team.getProjectSetSerializer("versionOneSerializer"); //$NON-NLS-1$
 							if (serializer != null) {
 								IProject[] projects = serializer.addToWorkspace(new String[0], filename, getShell(), monitor);
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamWizardPage.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/TeamWizardPage.java
similarity index 98%
rename from bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamWizardPage.java
rename to bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/TeamWizardPage.java
index a49356e..a38c5c2 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamWizardPage.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/TeamWizardPage.java
@@ -8,7 +8,7 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-package org.eclipse.team.internal.ui;
+package org.eclipse.team.internal.ui.wizards;
 
 import org.eclipse.jface.dialogs.IDialogConstants;
 import org.eclipse.jface.resource.ImageDescriptor;
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/CVSUITestCase.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/CVSUITestCase.java
index 4fe20f4..838afc7 100644
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/CVSUITestCase.java
+++ b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/CVSUITestCase.java
@@ -55,7 +55,7 @@
 import org.eclipse.team.internal.ccvs.ui.sync.ForceUpdateSyncAction;
 import org.eclipse.team.internal.ccvs.ui.sync.UpdateSyncAction;
 import org.eclipse.team.internal.ccvs.ui.wizards.SharingWizard;
-import org.eclipse.team.internal.ui.IPromptCondition;
+import org.eclipse.team.internal.ui.dialogs.IPromptCondition;
 import org.eclipse.team.internal.ui.sync.ITeamNode;
 import org.eclipse.team.internal.ui.sync.SyncSet;
 import org.eclipse.team.internal.ui.sync.SyncView;
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/DummyPromptCondition.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/DummyPromptCondition.java
index daa3d45..c20d8d4 100644
--- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/DummyPromptCondition.java
+++ b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/DummyPromptCondition.java
@@ -11,7 +11,7 @@
 package org.eclipse.team.tests.ccvs.ui;
 
 import org.eclipse.core.resources.IResource;
-import org.eclipse.team.internal.ui.IPromptCondition;
+import org.eclipse.team.internal.ui.dialogs.IPromptCondition;
 
 public class DummyPromptCondition implements IPromptCondition {
 	public boolean needsPrompt(IResource resource) {