Index: trunk/src/org/openstreetmap/josm/gui/JosmUserIdentityManager.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/JosmUserIdentityManager.java	(revision 4262)
+++ trunk/src/org/openstreetmap/josm/gui/JosmUserIdentityManager.java	(revision 4263)
@@ -10,4 +10,5 @@
 import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
 import org.openstreetmap.josm.data.osm.UserInfo;
+import org.openstreetmap.josm.io.auth.CredentialsManager;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 
@@ -168,5 +169,5 @@
      */
     public void initFromPreferences() {
-        String userName = Main.pref.get("osm-server.username");
+        String userName = CredentialsManager.getInstance().getUsername();
         if (isAnonymous()) {
             if (userName != null && ! userName.trim().equals("")) {
Index: trunk/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java	(revision 4262)
+++ trunk/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java	(revision 4263)
@@ -22,4 +22,5 @@
 import org.openstreetmap.josm.gui.JMultilineLabel;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.io.auth.CredentialsManager;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.UrlLabel;
@@ -147,5 +148,5 @@
             lblUser.setDescription(username);
         } else {
-            String user = Main.pref.get("osm-server.username");
+            String user = CredentialsManager.getInstance().getUsername();
             if (user == null) {
                 lblUser.setDescription(tr("anonymous"));
Index: trunk/src/org/openstreetmap/josm/gui/preferences/server/BasicAuthenticationPreferencesPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/server/BasicAuthenticationPreferencesPanel.java	(revision 4262)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/server/BasicAuthenticationPreferencesPanel.java	(revision 4263)
@@ -119,9 +119,4 @@
             );
             cm.store(RequestorType.SERVER, pa);
-            // always save the username to the preferences if it isn't already saved there
-            // by the credential manager
-            if (! (cm instanceof JosmPreferencesCredentialAgent)) {
-                Main.pref.put("osm-server.username", tfOsmUserName.getText().trim());
-            }
         } catch(CredentialsAgentException e) {
             e.printStackTrace();
Index: trunk/src/org/openstreetmap/josm/io/GpxExporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/GpxExporter.java	(revision 4262)
+++ trunk/src/org/openstreetmap/josm/io/GpxExporter.java	(revision 4263)
@@ -34,4 +34,5 @@
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.io.auth.CredentialsManager;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.GBC;
@@ -84,5 +85,6 @@
         JLabel emailLabel = new JLabel(tr("E-Mail"));
         p.add(emailLabel, GBC.std().insets(10, 0, 5, 0));
-        JTextField email = new JTextField(Main.pref.get("osm-server.username"));
+        String user = CredentialsManager.getInstance().getUsername();
+        JTextField email = new JTextField(user == null ? "" : user);
         p.add(email, GBC.eol().fill(GBC.HORIZONTAL));
         JLabel copyrightLabel = new JLabel(tr("Copyright (URL)"));
@@ -232,5 +234,6 @@
                 emailLabel.setEnabled(b);
                 authorName.setText(b ? Main.pref.get("lastAuthorName") : "");
-                email.setText(b ? Main.pref.get("osm-server.username") : "");
+                String user = CredentialsManager.getInstance().getUsername();
+                email.setText(b ? (user == null ? "" : user) : "");
 
                 boolean authorSet = authorName.getText().length() != 0;
Index: trunk/src/org/openstreetmap/josm/io/auth/CredentialsManager.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/auth/CredentialsManager.java	(revision 4262)
+++ trunk/src/org/openstreetmap/josm/io/auth/CredentialsManager.java	(revision 4263)
@@ -7,4 +7,6 @@
 
 import org.openstreetmap.josm.data.oauth.OAuthToken;
+import org.openstreetmap.josm.gui.JosmUserIdentityManager;
+import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -63,4 +65,19 @@
     }
 
+    public String getUsername() {
+        String username = null;
+        try {
+            PasswordAuthentication auth = lookup(RequestorType.SERVER);
+            if (auth != null) {
+                username = auth.getUserName();
+            }
+        } catch (CredentialsAgentException ex) {
+            return null;
+        }
+        if (username == null) return null;
+        username = username.trim();
+        return Utils.equal(username, "") ? null : username;
+    }
+
     @Override
     public PasswordAuthentication lookup(RequestorType requestorType) throws CredentialsAgentException {
@@ -70,4 +87,7 @@
     @Override
     public void store(RequestorType requestorType, PasswordAuthentication credentials) throws CredentialsAgentException {
+        if (requestorType == RequestorType.SERVER && credentials.getUserName() != null) {
+            JosmUserIdentityManager.getInstance().setPartiallyIdentified(credentials.getUserName());
+        }
         delegate.store(requestorType, credentials);
     }
Index: trunk/src/org/openstreetmap/josm/tools/ExceptionUtil.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/ExceptionUtil.java	(revision 4262)
+++ trunk/src/org/openstreetmap/josm/tools/ExceptionUtil.java	(revision 4263)
@@ -27,4 +27,5 @@
 import org.openstreetmap.josm.io.OsmApiInitializationException;
 import org.openstreetmap.josm.io.OsmTransferException;
+import org.openstreetmap.josm.io.auth.CredentialsManager;
 
 public class ExceptionUtil {
@@ -115,5 +116,5 @@
                 + "Please check the username and the password in the JOSM preferences."
                 + "</html>",
-                Main.pref.get("osm-server.username")
+                CredentialsManager.getInstance().getUsername()
         );
     }
