Index: /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 2277)
+++ /trunk/src/org/openstreetmap/josm/plugins/PluginHandler.java	(revision 2278)
@@ -13,6 +13,8 @@
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Map;
 import java.util.SortedMap;
 import java.util.TreeMap;
@@ -40,4 +42,5 @@
 
 public class PluginHandler {
+
     /**
      * All installed and loaded plugins (resp. their main classes)
@@ -63,4 +66,7 @@
                 "namefinder", "waypoints", "slippy_map_chooser", "tcx-support"};
         String [] unmaintained = new String[] {"gpsbabelgui", "Intersect_way"};
+        Map<String, Integer> requiredUpdate = new HashMap<String, Integer>();
+        requiredUpdate.put("validator", 18092);
+
         for (String p : oldplugins) {
             if (plugins.contains(p)) {
@@ -79,9 +85,11 @@
             for (String p : unmaintained) {
                 if (plugins.contains(p) && disablePlugin(tr("<html>Loading of {0} plugin was requested."
-                +"<br>This plugin is no longer developed and very likely will produce errors."
-                +"<br>It should be disabled.<br>Delete from preferences?</html>", p), p))
+                        +"<br>This plugin is no longer developed and very likely will produce errors."
+                        +"<br>It should be disabled.<br>Delete from preferences?</html>", p), p)) {
                     plugins.remove(p);
-            }
-        }
+                }
+            }
+        }
+
 
         if (plugins.isEmpty())
@@ -105,4 +113,24 @@
                     continue;
                 }
+                if (requiredUpdate.containsKey(info.name)) {
+                    int minimumVersion = requiredUpdate.get(info.name);
+                    boolean badVersion;
+                    try {
+                        badVersion = Integer.parseInt(info.version) < minimumVersion;
+                    } catch (NumberFormatException e) {
+                        badVersion = true;
+                    }
+                    if (badVersion) {
+                        JOptionPane.showMessageDialog(
+                                Main.parent,
+                                tr("Plugin {0} version {1} found but for this version of JOSM is at least version {2} required. "
+                                        + "Please update the plugin.", info.name, info.version, String.valueOf(minimumVersion)),
+                                        tr("Warning"),
+                                        JOptionPane.WARNING_MESSAGE
+                        );
+                        continue;
+                    }
+                }
+
                 if(info.requires != null)
                 {
@@ -252,5 +280,4 @@
         if (plugin == null)
         {
-            String name = null;
             /**
              * Analyze the stack of the argument and find a name of a plugin, if
@@ -271,6 +298,7 @@
                     }
                 }
-                if(plugin != null)
+                if(plugin != null) {
                     break;
+                }
             }
         }
