*** empty log message ***
diff --git a/bundles/org.eclipse.team.cvs.ssh2/passwords.txt b/bundles/org.eclipse.team.cvs.ssh2/passwords.txt
deleted file mode 100644
index 5685e85..0000000
--- a/bundles/org.eclipse.team.cvs.ssh2/passwords.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-- ask user to persist passwords and warn that this is not secure
-- what happens when a password changes on the remote server, how is the persisted password cleared?
-- manage passwords that are saved, and allow clearing
-- how does this affect project set import
-- retry count added to prompt dialog
-- where are repos persisted, and how does this affect the caching of the passwords
\ No newline at end of file
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/PasswordManagementPreferencePage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/PasswordManagementPreferencePage.java
index 0b016c0..bfc21dd 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/PasswordManagementPreferencePage.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/PasswordManagementPreferencePage.java
@@ -10,7 +10,7 @@
  *******************************************************************************/
 package org.eclipse.team.internal.ccvs.ui;
  
-import java.util.ArrayList;
+import java.util.*;
 import java.util.List;
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.dialogs.IDialogConstants;
@@ -49,9 +49,8 @@
 		}
 	};
 		
-	
 	public void init(IWorkbench workbench) {
-		setDescription("Password Management"); //$NON-NLS-1$
+		setDescription(Policy.bind("PasswordManagementPreferencePage.2")); //$NON-NLS-1$
 	}
 	
 	/**
@@ -71,12 +70,6 @@
 		data.verticalAlignment = GridData.FILL;
 		data.horizontalAlignment = GridData.FILL;
 		parent.setLayoutData(data);
-	
-		Label l1 = new Label(parent, SWT.NULL);
-		l1.setText("The following CVS repository locations have saved passwords:");
-		data = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
-		data.horizontalSpan = 2;
-		l1.setLayoutData(data);
 		
 		viewer = new TableViewer(parent, SWT.MULTI | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
 		Table table = viewer.getTable();
@@ -95,15 +88,15 @@
 		table.setLayoutData(gd);
 		table.addListener(SWT.Selection, new Listener() {
 			public void handleEvent(Event e) {
-				//handleSelection();
+				handleSelection();
 			}
 		});
 		// Create the table columns
 		new TableColumn(table, SWT.NULL);
 		new TableColumn(table, SWT.NULL);
 		TableColumn[] columns = table.getColumns();
-		columns[0].setText("Location"); //$NON-NLS-1$
-		columns[1].setText("Username"); //$NON-NLS-1$
+		columns[0].setText(Policy.bind("PasswordManagementPreferencePage.3"));  //$NON-NLS-1$
+		columns[1].setText(Policy.bind("PasswordManagementPreferencePage.4"));  //$NON-NLS-1$
 		
 		viewer.setColumnProperties(new String[] {"location", "username"}); //$NON-NLS-1$ //$NON-NLS-2$
 		viewer.setLabelProvider(new TableLabelProvider());
@@ -137,7 +130,7 @@
 		buttons.setLayout(layout);
 		
 		removeButton = new Button(buttons, SWT.PUSH);
-		removeButton.setText("Remove"); 
+		removeButton.setText(Policy.bind("PasswordManagementPreferencePage.5"));  //$NON-NLS-1$
 		data = new GridData();
 		data.horizontalAlignment = GridData.FILL;
 		data.heightHint = convertVerticalDLUsToPixels(IDialogConstants.BUTTON_HEIGHT);
@@ -147,11 +140,11 @@
 		removeButton.setEnabled(false);
 		removeButton.addListener(SWT.Selection, new Listener() {
 			public void handleEvent(Event e) {
-				removeIgnore();
+				remove();
 			}
 		});
 		removeAllButton = new Button(buttons, SWT.PUSH);
-		removeAllButton.setText("Remove All"); 
+		removeAllButton.setText(Policy.bind("PasswordManagementPreferencePage.6"));  //$NON-NLS-1$
 		data = new GridData();
 		data.horizontalAlignment = GridData.FILL;
 		data.heightHint = convertVerticalDLUsToPixels(IDialogConstants.BUTTON_HEIGHT);
@@ -161,18 +154,15 @@
 		removeAllButton.setEnabled(true);
 		removeAllButton.addListener(SWT.Selection, new Listener() {
 			public void handleEvent(Event e) {
-				removeAllIgnore();
+				removeAll();
 			}
 		});
 		Dialog.applyDialogFont(ancestor);
 		viewer.setInput(KnownRepositories.getInstance());
+		handleSelection();
 		return parent;
 	}
-	/**
-	 * Do anything necessary because the OK button has been pressed.
-	 *
-	 * @return whether it is okay to close the preference page
-	 */
+	
 	public boolean performOk() {
 		return true;
 	}
@@ -181,9 +171,17 @@
 		super.performDefaults();
 	}
 	
-	private void removeIgnore() {
+	private void remove() {
+		IStructuredSelection s = (IStructuredSelection)viewer.getSelection();
+		for (Iterator it = s.iterator(); it.hasNext();) {
+			ICVSRepositoryLocation location = (ICVSRepositoryLocation) it.next();
+			location.flushUserInfo();
+		}
+		viewer.refresh();
+		handleSelection();
 	}
-	private void removeAllIgnore() {
+	
+	private void removeAll() {
 		ICVSRepositoryLocation[] locations = KnownRepositories.getInstance().getRepositories();
 		List repos = new ArrayList();
 		for (int i = 0; i < locations.length; i++) {
@@ -191,13 +189,16 @@
 			if(l.getUserInfoCached()) 
 				l.flushUserInfo();
 		}
-		viewer.setInput(KnownRepositories.getInstance());
+		viewer.refresh();
+		handleSelection();
 	}
+	
 	private void handleSelection() {
 		if (viewer.getTable().getSelectionCount() > 0) {
 			removeButton.setEnabled(true);
 		} else {
 			removeButton.setEnabled(false);
 		}
+		removeAllButton.setEnabled(viewer.getTable().getItemCount() > 0);
 	}
 }
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/UserValidationDialog.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/UserValidationDialog.java
index cd87196..b877f4b 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/UserValidationDialog.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/UserValidationDialog.java
@@ -13,17 +13,13 @@
 
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.window.Window;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.*;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.help.WorkbenchHelp;
 
 /**
@@ -86,45 +82,67 @@
 			passwordField.setFocus();
 		}
 	}
+	
 	/**
 	 * @see Dialog#createDialogArea
 	 */
 	protected Control createDialogArea(Composite parent) {
-		Composite main = new Composite(parent, SWT.NONE);
+		Composite top = new Composite(parent, SWT.NONE);
 		GridLayout layout = new GridLayout();
+		layout.numColumns = 2;
+		
+		top.setLayout(layout);
+		top.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+	
+		Composite imageComposite = new Composite(top, SWT.NONE);
+		layout = new GridLayout();
+		imageComposite.setLayout(layout);
+		imageComposite.setLayoutData(new GridData(GridData.FILL_VERTICAL));
+
+		Composite main = new Composite(top, SWT.NONE);
+		layout = new GridLayout();
 		layout.numColumns = 3;
+		layout.marginHeight = 0;
+		layout.marginHeight = 0;
 		main.setLayout(layout);
 		main.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-	
+		
+		Label imageLabel = new Label(imageComposite, SWT.NONE);
+		imageLabel.setImage(getImage(DLG_IMG_INFO));
+		GridData data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
+		imageLabel.setLayoutData(data);
+		
 		if (message != null) {
 			Label messageLabel = new Label(main, SWT.WRAP);
 			messageLabel.setText(message);
-			messageLabel.setForeground(messageLabel.getDisplay().getSystemColor(SWT.COLOR_RED));
-			GridData data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
+			data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
 			data.horizontalSpan = 3;
-			data.widthHint = 400;
+			data.widthHint = 300;
 			messageLabel.setLayoutData(data);
 		}
-
 		if (domain != null) {
+			Label d = new Label(main, SWT.WRAP);
+			d.setText(Policy.bind("UserValidationDialog.5")); //$NON-NLS-1$
+			data = new GridData();
+			d.setLayoutData(data);
 			Label label = new Label(main, SWT.WRAP);
 			if (isUsernameMutable) {
 				label.setText(Policy.bind("UserValidationDialog.labelUser", domain)); //$NON-NLS-1$
 			} else {
 				label.setText(Policy.bind("UserValidationDialog.labelPassword", new Object[]{defaultUsername, domain})); //$NON-NLS-1$
 			}
-			GridData data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
-			data.horizontalSpan = 3;
-			data.widthHint = 400;
+			data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
+			data.horizontalSpan = 2;
+			data.widthHint = 300;
 			label.setLayoutData(data);
 		}
 		createUsernameFields(main);
 		createPasswordFields(main);
-	
+		
 		if(showAllowCachingButton) {
 			allowCachingButton = new Button(main, SWT.CHECK);
-			allowCachingButton.setText("Remember this logon information and enter it automatically the next time it is needed.");
-			GridData data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
+			allowCachingButton.setText(Policy.bind("UserValidationDialog.6")); //$NON-NLS-1$
+			data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
 			data.horizontalSpan = 3;
 			allowCachingButton.setLayoutData(data);
 			allowCachingButton.addSelectionListener(new SelectionAdapter() {
@@ -132,6 +150,23 @@
 					allowCaching = allowCachingButton.getSelection();
 				}
 			});
+			Composite warningComposite = new Composite(main, SWT.NONE);
+			layout = new GridLayout();
+			layout.numColumns = 2;
+			layout.marginHeight = 0;
+			layout.marginHeight = 0;
+			warningComposite.setLayout(layout);
+			data = new GridData(GridData.FILL_HORIZONTAL);
+			data.horizontalSpan = 3;
+			warningComposite.setLayoutData(data);
+			Label warningLabel = new Label(warningComposite, SWT.NONE);
+			warningLabel.setImage(getImage(DLG_IMG_MESSAGE_WARNING));
+			warningLabel.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
+			Label warningText = new Label(warningComposite, SWT.WRAP);
+			warningText.setText(Policy.bind("UserValidationDialog.7")); //$NON-NLS-1$
+			data = new GridData(GridData.FILL_HORIZONTAL);
+			data.widthHint = 300;
+			warningText.setLayoutData(data);
 		}
 		
         Dialog.applyDialogFont(parent);
@@ -139,6 +174,17 @@
 		return main;
 	}
 	/**
+	 * Create a spacer.
+	 */
+	protected void createSpacer(Composite top, int columnSpan, int vertSpan) {
+		Label l = new Label(top, SWT.NONE);
+		GridData data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
+		data.horizontalSpan = columnSpan;
+		data.verticalSpan = vertSpan;
+		l.setLayoutData(data);
+	}
+	
+	/**
 	 * Creates the three widgets that represent the password entry area.
 	 * 
 	 * @param parent  the parent of the widgets
@@ -166,6 +212,7 @@
 		data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.ENTRY_FIELD_WIDTH);
 		usernameField.setLayoutData(data);
 	}
+	
 	/**
 	 * Returns the password entered by the user, or null
 	 * if the user canceled.
@@ -175,6 +222,7 @@
 	public String getPassword() {
 		return password;
 	}
+	
 	/**
 	 * Returns the username entered by the user, or null
 	 * if the user canceled.
@@ -185,6 +233,11 @@
 		return username;
 	}
 	
+	/**
+	 * Returns <code>true</code> if the save password checkbox was selected.
+	 * @return <code>true</code> if the save password checkbox was selected and <code>false</code>
+	 * otherwise.
+	 */
 	public boolean getAllowCaching() {
 		return allowCaching;
 	}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/messages.properties b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/messages.properties
index ad0b152..e656ef7 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/messages.properties
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/messages.properties
@@ -8,6 +8,14 @@
 # Contributors:
 #     IBM Corporation - initial API and implementation
 ###############################################################################
+PasswordManagementPreferencePage.2=The following CVS repository locations have saved passwords:
+PasswordManagementPreferencePage.3=Location
+PasswordManagementPreferencePage.4=Username
+PasswordManagementPreferencePage.5=&Remove
+PasswordManagementPreferencePage.6=Remove &All
+UserValidationDialog.5=CVS Repository:
+UserValidationDialog.6=Sa&ve Password
+UserValidationDialog.7=Rememered passwords are unsafe. They are not encrypted when saved to disk.
 details=Press the details button for more information.
 simpleInternal=Internal error
 internal=An internal error has occurred, consult the error log for details.
@@ -625,10 +633,10 @@
 UpdateWizardPage.overwrite=&Overwrite local changes
 
 UserValidationDialog.required=Password Required
-UserValidationDialog.labelUser=Enter a user name and password for the following repository: {0}
-UserValidationDialog.labelPassword=Enter a password for {0} in the following repository: {1}
-UserValidationDialog.password=Password:
-UserValidationDialog.user=User name:
+UserValidationDialog.labelUser={0}
+UserValidationDialog.labelPassword={1}
+UserValidationDialog.password=&Password:
+UserValidationDialog.user=&User name:
 
 KeyboradInteractiveDialog.message=Keyboard Interactive authentication for {0}
 KeyboardInteractiveDialog.labelRepository=Enter values for the following repository: {0}
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ConfigurationWizardMainPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ConfigurationWizardMainPage.java
index 22692e0..ed8ea59 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ConfigurationWizardMainPage.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ConfigurationWizardMainPage.java
@@ -13,7 +13,6 @@
 
 import java.util.*;
 import java.util.List;
-
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.jface.dialogs.*;
@@ -198,18 +197,6 @@
 		portText = createTextField(portGroup);
 		portText.addListener(SWT.Modify, listener);
 		
-		allowCachingButton = new Button(composite, SWT.CHECK);
-		allowCachingButton.setText("Remember this logon information and enter it automatically the next time it is needed.");
-		data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
-		data.horizontalSpan = 3;
-		allowCachingButton.setLayoutData(data);
-		allowCachingButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				allowCaching = allowCachingButton.getSelection();
-			}
-		});
-		
-		
 		// create a composite to ensure the validate button is in its own tab group
 		if (showValidate) {
 			Composite validateButtonTabGroup = new Composite(composite, SWT.NONE);
@@ -227,6 +214,35 @@
 			});
 		}
 		
+		allowCachingButton = new Button(composite, SWT.CHECK);
+		allowCachingButton.setText(Policy.bind("UserValidationDialog.6")); //$NON-NLS-1$
+		data = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
+		data.horizontalSpan = 3;
+		allowCachingButton.setLayoutData(data);
+		allowCachingButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				allowCaching = allowCachingButton.getSelection();
+			}
+		});
+	
+		Composite warningComposite = new Composite(composite, SWT.NONE);
+		layout = new GridLayout();
+		layout.numColumns = 2;
+		layout.marginHeight = 0;
+		layout.marginHeight = 0;
+		warningComposite.setLayout(layout);
+		data = new GridData(GridData.FILL_HORIZONTAL);
+		data.horizontalSpan = 3;
+		warningComposite.setLayoutData(data);
+		Label warningLabel = new Label(warningComposite, SWT.NONE);
+		warningLabel.setImage(Dialog.getImage(Dialog.DLG_IMG_MESSAGE_WARNING));
+		warningLabel.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING | GridData.HORIZONTAL_ALIGN_BEGINNING));
+		Label warningText = new Label(warningComposite, SWT.WRAP);
+		warningText.setText(Policy.bind("UserValidationDialog.7")); //$NON-NLS-1$
+		data = new GridData(GridData.FILL_HORIZONTAL);
+		data.widthHint = 300;
+		warningText.setLayoutData(data);
+		
 		initializeValues();
 		updateWidgetEnablements();
 		hostCombo.setFocus();