Index: trunk/src/org/openstreetmap/josm/data/osm/User.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/User.java	(revision 4030)
+++ trunk/src/org/openstreetmap/josm/data/osm/User.java	(revision 4031)
@@ -33,4 +33,5 @@
     private static HashMap<Long,User> userMap = new HashMap<Long,User>();
     private static HashSet<Long> relicensingUsers = null;
+    private static HashSet<Long> nonRelicensingUsers = null;
 
     private static long getNextLocalUid() {
@@ -111,5 +112,5 @@
 
     public static void initRelicensingInformation() {
-        if(relicensingUsers == null) {
+        if (relicensingUsers == null) {
             loadRelicensingInformation(false);
         }
@@ -118,7 +119,10 @@
     public static void loadRelicensingInformation(boolean clean) {
         relicensingUsers = new HashSet<Long>();
+        nonRelicensingUsers = new HashSet<Long>();
         try {
-            MirroredInputStream stream = new MirroredInputStream(Main.pref.get("url.licensechange",
-            "http://planet.openstreetmap.org/users_agreed/users_agreed.txt"), clean ? 1 : 7200);
+            MirroredInputStream stream = new MirroredInputStream(
+                 Main.pref.get("url.licensechange",
+                    "http://planet.openstreetmap.org/users_agreed/users_agreed.txt"),
+                 clean ? 1 : 7200);
             try {
                 InputStreamReader r;
@@ -129,5 +133,31 @@
                     if (line.startsWith("#")) continue;
                     try {
-                        relicensingUsers.add(new Long(Long.parseLong(line.trim())));
+                        Long id = new Long(Long.parseLong(line.trim()));
+                        relicensingUsers.add(id);
+                    } catch (java.lang.NumberFormatException ex) {
+                    }
+                }
+            }
+            finally {
+                stream.close();
+            }
+        } catch (IOException ex) {
+        }
+
+        try {
+            MirroredInputStream stream = new MirroredInputStream(
+                Main.pref.get("url.licensechange_reject",
+                    "http://planet.openstreetmap.org/users_agreed/users_disagreed.txt"),
+                clean ? 1 : 7200);
+            try {
+                InputStreamReader r;
+                r = new InputStreamReader(stream);
+                BufferedReader reader = new BufferedReader(r);
+                String line;
+                while ((line = reader.readLine()) != null) {
+                    if (line.startsWith("#")) continue;
+                    try {
+                        Long id = new Long(Long.parseLong(line.trim()));
+                        nonRelicensingUsers.add(id);
                     } catch (java.lang.NumberFormatException ex) {
                     }
@@ -156,5 +186,8 @@
         if (uid >= 286582) return STATUS_AUTO_AGREED;
         if (relicensingUsers == null) return STATUS_UNKNOWN;
-        return (relicensingUsers.contains(new Long(uid)) ? STATUS_AGREED : STATUS_NOT_AGREED);
+        Long id = new Long(uid);
+        if (relicensingUsers.contains(id)) return STATUS_AGREED;
+        if (nonRelicensingUsers.contains(id)) return STATUS_NOT_AGREED;
+        return STATUS_UNKNOWN;
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java	(revision 4030)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java	(revision 4031)
@@ -339,4 +339,6 @@
         private ArrayList<UserInfo> data;
         private ImageIcon greenCheckmark;
+        private ImageIcon greyCheckmark;
+        private ImageIcon redX;
 
         public UserTableModel() {
@@ -344,4 +346,6 @@
             data = new ArrayList<UserInfo>();
             greenCheckmark = ImageProvider.get("misc", "green_check.png");
+            greyCheckmark = ImageProvider.get("misc", "grey_check.png");
+            redX = ImageProvider.get("misc", "red_x.png");
         }
 
@@ -385,7 +389,10 @@
             case 2: /* percent */ return NumberFormat.getPercentInstance().format(info.percent);
             case 3: /* relicensing status */
-                if (info.getRelicensingStatus() == User.STATUS_AGREED) return greenCheckmark;
-                if (info.getRelicensingStatus() == User.STATUS_AUTO_AGREED) return greenCheckmark;
-                return null;
+                switch(info.getRelicensingStatus()) {
+                case User.STATUS_AGREED: return greenCheckmark;
+                case User.STATUS_AUTO_AGREED: return greyCheckmark;
+                case User.STATUS_NOT_AGREED: return redX;
+                default: return null;
+                }
             }
             return null;
