Index: /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/Test.java
===================================================================
--- /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/Test.java	(revision 17721)
+++ /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/Test.java	(revision 17722)
@@ -14,5 +14,8 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.visitor.AbstractVisitor;
+import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
+import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.tools.GBC;
+import static org.openstreetmap.josm.tools.I18n.tr;
 
 /**
@@ -53,4 +56,7 @@
     /** Whether the test is run on a partial selection data */
     protected boolean partialSelection;
+    
+    /** the progress monitor to use */
+    protected ProgressMonitor progressMonitor;
 
     /**
@@ -82,10 +88,16 @@
 
     /**
-     * Notification of the start of the test. The tester can initialize the
-     * structures it may need for this test
-     */
-    public void startTest()
-    {
-        errors = new ArrayList<TestError>(30);
+     * Start the test using a given progress monitor 
+     * 
+     * @param progressMonitor  the progress monitor 
+     */
+    public void startTest(ProgressMonitor progressMonitor) {
+    	if (progressMonitor == null) {
+    		this.progressMonitor = NullProgressMonitor.INSTANCE;
+    	} else {
+    		this.progressMonitor = progressMonitor;
+    	}
+    	this.progressMonitor.beginTask(tr("Running test {0}", name));
+    	errors = new ArrayList<TestError>(30);
     }
 
@@ -112,5 +124,8 @@
      * actions and destroy the used structures
      */
-    public void endTest() {}
+    public void endTest() {
+    	progressMonitor.finishTask();
+    	progressMonitor = null;
+    }
 
     /**
@@ -122,8 +137,9 @@
     public void visit(Collection<OsmPrimitive> selection)
     {
-        for (OsmPrimitive p : selection)
-        {
+    	progressMonitor.setTicksCount(selection.size());
+        for (OsmPrimitive p : selection) {
             if( p.isUsable() )
                 p.visit(this);
+            progressMonitor.worked(1);
         }
     }
Index: /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/ValidateAction.java
===================================================================
--- /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/ValidateAction.java	(revision 17721)
+++ /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/ValidateAction.java	(revision 17722)
@@ -5,7 +5,10 @@
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+
+import javax.swing.SwingUtilities;
 
 import org.openstreetmap.josm.Main;
@@ -13,6 +16,9 @@
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.PleaseWaitRunnable;
+import org.openstreetmap.josm.io.OsmTransferException;
 import org.openstreetmap.josm.plugins.validator.util.AgregatePrimitivesVisitor;
 import org.openstreetmap.josm.tools.Shortcut;
+import org.xml.sax.SAXException;
 
 /**
@@ -84,30 +90,6 @@
         }
 
-        List<TestError> errors = new ArrayList<TestError>(200);
-        for (Test test : tests) {
-            test.setPartialSelection(lastSelection != null);
-            test.startTest();
-            test.visit(selection);
-            test.endTest();
-            errors.addAll(test.getErrors());
-        }
-        tests = null;
-        if (Main.pref.getBoolean(PreferenceEditor.PREF_USE_IGNORE, true)) {
-            for (TestError error : errors) {
-                List<String> s = new ArrayList<String>();
-                s.add(error.getIgnoreState());
-                s.add(error.getIgnoreGroup());
-                s.add(error.getIgnoreSubGroup());
-                for (String state : s) {
-                    if (state != null && plugin.ignoredErrors.contains(state)) {
-                        error.setIgnored(true);
-                    }
-                }
-            }
-        }
-
-        plugin.validationDialog.tree.setErrors(errors);
-        plugin.validationDialog.setVisible(true);
-        DataSet.fireSelectionChanged(Main.main.getCurrentDataSet().getSelected());
+        ValidationTask task = new ValidationTask(tests, selection, lastSelection);
+        Main.worker.submit(task);        
     }
 
@@ -116,3 +98,90 @@
         setEnabled(getEditLayer() != null);
     }
+    
+    /**
+     * Asynchronous task for running a collection of tests against a collection
+     * of primitives 
+     *
+     */
+    
+    class ValidationTask extends PleaseWaitRunnable {
+    	private Collection<Test> tests;
+    	private Collection<OsmPrimitive> validatedPrimitmives;
+    	private Collection<OsmPrimitive> formerValidatedPrimitives;
+    	private boolean canceled;
+        private List<TestError> errors;
+        
+        /**
+         * 
+         * @param tests  the tests to run 
+         * @param validatedPrimitives the collection of primitives to validate. 
+         * @param formerValidatedPrimitives the last collection of primitives being validates. May be null.
+         */
+    	public ValidationTask(Collection<Test> tests, Collection<OsmPrimitive> validatedPrimitives, Collection<OsmPrimitive> formerValidatedPrimitives) {
+    		super(tr("Validating"), false /*don't ignore exceptions */);
+    		this.validatedPrimitmives  = validatedPrimitives;
+    		this.formerValidatedPrimitives = formerValidatedPrimitives;
+    		this.tests = tests;
+    	}
+    	
+		@Override
+		protected void cancel() {
+			this.canceled = true; 			
+		}
+
+		@Override
+		protected void finish() {
+			if (canceled) return;
+			
+			// update GUI on Swing EDT
+			//
+			Runnable r = new Runnable()  {
+				public void run() {
+			        plugin.validationDialog.tree.setErrors(errors);
+			        plugin.validationDialog.setVisible(true);
+			        DataSet.fireSelectionChanged(Main.main.getCurrentDataSet().getSelected());
+				}				
+			};
+			if (SwingUtilities.isEventDispatchThread()) {
+				r.run();				
+			} else {
+				SwingUtilities.invokeLater(r);
+			}
+		}
+
+		@Override
+		protected void realRun() throws SAXException, IOException,
+				OsmTransferException {
+			if (tests == null || tests.isEmpty()) return;		
+	        errors = new ArrayList<TestError>(200);
+	        getProgressMonitor().setTicksCount(tests.size() * validatedPrimitmives.size());
+	        int testCounter = 0;
+			for (Test test : tests) {				
+				if (canceled) return;
+				testCounter++;
+				getProgressMonitor().setCustomText(tr("Test {0}/{1}: Starting {2}", testCounter, tests.size(),test.name));
+	            test.setPartialSelection(formerValidatedPrimitives != null);
+	            test.startTest(getProgressMonitor().createSubTaskMonitor(validatedPrimitmives.size(), false));
+	            test.visit(validatedPrimitmives);
+	            test.endTest();
+	            errors.addAll(test.getErrors());
+	        }
+			tests = null;
+	        if (Main.pref.getBoolean(PreferenceEditor.PREF_USE_IGNORE, true)) {
+				getProgressMonitor().subTask(tr("Updating ignored errors ..."));
+	            for (TestError error : errors) {
+	            	if (canceled) return;
+	                List<String> s = new ArrayList<String>();
+	                s.add(error.getIgnoreState());
+	                s.add(error.getIgnoreGroup());
+	                s.add(error.getIgnoreSubGroup());
+	                for (String state : s) {
+	                    if (state != null && plugin.ignoredErrors.contains(state)) {
+	                        error.setIgnored(true);
+	                    }
+	                }
+	            }
+	        }
+		}
+    }
 }
Index: /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/ValidateUploadHook.java
===================================================================
--- /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/ValidateUploadHook.java	(revision 17721)
+++ /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/ValidateUploadHook.java	(revision 17722)
@@ -58,5 +58,5 @@
             test.setBeforeUpload(true);
             test.setPartialSelection(true);
-            test.startTest();
+            test.startTest(null);
             test.visit(selection);
             test.endTest();
Index: /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/Coastlines.java
===================================================================
--- /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/Coastlines.java	(revision 17721)
+++ /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/Coastlines.java	(revision 17722)
@@ -8,4 +8,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.plugins.validator.Severity;
 import org.openstreetmap.josm.plugins.validator.Test;
@@ -38,6 +39,7 @@
 
     @Override
-    public void startTest()
+    public void startTest(ProgressMonitor monitor)
     {
+    	super.startTest(monitor);
         _cellWays = new HashMap<Point2D,List<Way>>(1000);
         _errorWays = new Bag<Way, Way>();
@@ -47,4 +49,5 @@
     public void endTest()
     {
+    	super.endTest();
         _cellWays = null;
         _errorWays = null;
Index: /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/CrossingWays.java
===================================================================
--- /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/CrossingWays.java	(revision 17721)
+++ /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/CrossingWays.java	(revision 17722)
@@ -15,4 +15,5 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.WaySegment;
+import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.plugins.validator.OSMValidatorPlugin;
 import org.openstreetmap.josm.plugins.validator.Severity;
@@ -49,6 +50,7 @@
 
     @Override
-    public void startTest()
-    {
+    public void startTest(ProgressMonitor monitor)
+    {
+    	super.startTest(monitor);
         cellSegments = new HashMap<Point2D,List<ExtendedSegment>>(1000);
         errorSegments = new HashSet<WaySegment>();
@@ -59,4 +61,5 @@
     public void endTest()
     {
+    	super.endTest();
         cellSegments = null;
         errorSegments = null;
Index: /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/DuplicateNode.java
===================================================================
--- /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/DuplicateNode.java	(revision 17721)
+++ /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/DuplicateNode.java	(revision 17722)
@@ -20,4 +20,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
+import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.plugins.validator.Severity;
 import org.openstreetmap.josm.plugins.validator.Test;
@@ -59,37 +60,38 @@
     }
 
-
     @Override
-    public void startTest()
-    {
+    public void startTest(ProgressMonitor monitor) {
+    	super.startTest(monitor);
         nodes = new Bag<LatLon, OsmPrimitive>(1000);
     }
 
-    @Override
-    public void endTest()
-    {
-        for(List<OsmPrimitive> duplicated : nodes.values() )
-        {
-            if( duplicated.size() > 1)
-            {
-		boolean sameTags=true;
-		Map<String, String> keys0=duplicated.get(0).getKeys();
-		keys0.remove("created_by");
-		for(int i=0;i<duplicated.size();i++) {
-		    Map<String, String> keysI=duplicated.get(i).getKeys();
-		    keysI.remove("created_by");
-		    if (!keys0.equals(keysI)) sameTags=false;
+	@Override
+	public void endTest() {
+		for (List<OsmPrimitive> duplicated : nodes.values()) {
+			if (duplicated.size() > 1) {
+				boolean sameTags = true;
+				Map<String, String> keys0 = duplicated.get(0).getKeys();
+				keys0.remove("created_by");
+				for (int i = 0; i < duplicated.size(); i++) {
+					Map<String, String> keysI = duplicated.get(i).getKeys();
+					keysI.remove("created_by");
+					if (!keys0.equals(keysI))
+						sameTags = false;
+				}
+				if (!sameTags) {
+					TestError testError = new TestError(this, Severity.WARNING,
+							tr("Nodes at same position"), DUPLICATE_NODE,
+							duplicated);
+					errors.add(testError);
+				} else {
+					TestError testError = new TestError(this, Severity.ERROR,
+							tr("Duplicated nodes"), DUPLICATE_NODE, duplicated);
+					errors.add(testError);
+				}
+			}
 		}
-		if (!sameTags) {
-	            TestError testError = new TestError(this, Severity.WARNING, tr("Nodes at same position"), DUPLICATE_NODE, duplicated);
-        	    errors.add( testError );		    
-		} else {
-	            TestError testError = new TestError(this, Severity.ERROR, tr("Duplicated nodes"), DUPLICATE_NODE, duplicated);
-        	    errors.add( testError );
-		}
-            }
-        }
-        nodes = null;
-    }
+		super.endTest();
+		nodes = null;
+	}
 
     @Override
Index: /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/DuplicateWay.java
===================================================================
--- /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/DuplicateWay.java	(revision 17721)
+++ /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/DuplicateWay.java	(revision 17722)
@@ -17,4 +17,5 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.plugins.validator.Severity;
 import org.openstreetmap.josm.plugins.validator.Test;
@@ -62,6 +63,7 @@
 
     @Override
-    public void startTest()
+    public void startTest(ProgressMonitor monitor)
     {
+    	super.startTest(monitor);
         ways = new Bag<WayPair, OsmPrimitive>(1000);
     }
@@ -70,4 +72,5 @@
     public void endTest()
     {
+    	super.endTest();
         for(List<OsmPrimitive> duplicated : ways.values() )
         {
Index: /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/NodesWithSameName.java
===================================================================
--- /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/NodesWithSameName.java	(revision 17721)
+++ /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/NodesWithSameName.java	(revision 17722)
@@ -8,5 +8,7 @@
 import java.util.ArrayList;
 
+
 import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.plugins.validator.Severity;
 import org.openstreetmap.josm.plugins.validator.Test;
@@ -23,5 +25,6 @@
     }
 
-    @Override public void startTest() {
+    @Override public void startTest(ProgressMonitor monitor) {
+    	super.startTest(monitor);
         namesToNodes = new HashMap<String, List<Node>>();
     }
@@ -48,5 +51,5 @@
             }
         }
-
+        super.endTest();
         namesToNodes = null;
     }
Index: /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/OverlappingWays.java
===================================================================
--- /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/OverlappingWays.java	(revision 17721)
+++ /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/OverlappingWays.java	(revision 17722)
@@ -13,4 +13,5 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.WaySegment;
+import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.plugins.validator.Severity;
 import org.openstreetmap.josm.plugins.validator.Test;
@@ -48,6 +49,7 @@
 
     @Override
-    public void startTest()
+    public void startTest(ProgressMonitor monitor)
     {
+    	super.startTest(monitor);
         nodePairs = new Bag<Pair<Node,Node>, WaySegment>(1000);
     }
@@ -149,4 +151,5 @@
             }
         }
+        super.endTest();
         nodePairs = null;
     }
Index: /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/SimilarNamedWays.java
===================================================================
--- /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/SimilarNamedWays.java	(revision 17721)
+++ /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/SimilarNamedWays.java	(revision 17722)
@@ -6,6 +6,8 @@
 import java.util.*;
 
+
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.plugins.validator.Severity;
 import org.openstreetmap.josm.plugins.validator.Test;
@@ -39,6 +41,7 @@
 
     @Override
-    public void startTest()
+    public void startTest(ProgressMonitor monitor)
     {
+    	super.startTest(monitor);
         cellWays = new HashMap<Point2D,List<Way>>(1000);
         errorWays = new Bag<Way, Way>();
@@ -50,4 +53,5 @@
         cellWays = null;
         errorWays = null;
+        super.endTest();
     }
 
Index: /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/TagChecker.java
===================================================================
--- /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/TagChecker.java	(revision 17721)
+++ /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/TagChecker.java	(revision 17722)
@@ -45,4 +45,5 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.preferences.TaggingPresetPreference;
+import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.gui.tagging.TaggingPreset;
 import org.openstreetmap.josm.io.MirroredInputStream;
@@ -553,6 +554,7 @@
 
     @Override
-    public void startTest()
-    {
+    public void startTest(ProgressMonitor monitor)
+    {
+    	super.startTest(monitor);
         checkKeys = Main.pref.getBoolean(PREF_CHECK_KEYS, true);
         if( isBeforeUpload )
Index: /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UnclosedWays.java
===================================================================
--- /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UnclosedWays.java	(revision 17721)
+++ /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UnclosedWays.java	(revision 17722)
@@ -12,4 +12,5 @@
 import org.openstreetmap.josm.data.osm.OsmUtils;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.plugins.validator.Severity;
 import org.openstreetmap.josm.plugins.validator.Test;
@@ -34,5 +35,6 @@
 
     @Override
-    public void startTest() {
+    public void startTest(ProgressMonitor monitor) {
+    	super.startTest(monitor);
         _errorWays = new Bag<Way, Way>();
     }
@@ -41,4 +43,5 @@
     public void endTest() {
         _errorWays = null;
+        super.endTest();
     }
 
Index: /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UnconnectedWays.java
===================================================================
--- /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UnconnectedWays.java	(revision 17721)
+++ /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UnconnectedWays.java	(revision 17722)
@@ -15,4 +15,5 @@
 import org.openstreetmap.josm.data.osm.OsmUtils;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.plugins.validator.PreferenceEditor;
 import org.openstreetmap.josm.plugins.validator.Severity;
@@ -48,6 +49,7 @@
 
     @Override
-    public void startTest()
-    {
+    public void startTest(ProgressMonitor monitor)
+    {
+    	super.startTest(monitor);
         ways = new HashSet<MyWaySegment>();
         endnodes = new HashSet<Node>();
@@ -153,4 +155,5 @@
         ways = null;
         endnodes = null;
+        super.endTest();
     }
 
Index: /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UntaggedNode.java
===================================================================
--- /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UntaggedNode.java	(revision 17721)
+++ /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UntaggedNode.java	(revision 17722)
@@ -13,4 +13,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.plugins.validator.Severity;
 import org.openstreetmap.josm.plugins.validator.Test;
@@ -39,6 +40,7 @@
 
     @Override
-    public void startTest()
+    public void startTest(ProgressMonitor monitor)
     {
+    	super.startTest(monitor);
         emptyNodes = new HashSet<Node>(100);
     }
@@ -91,4 +93,5 @@
         }
         emptyNodes = null;
+        super.endTest();
     }
 
Index: /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UntaggedWay.java
===================================================================
--- /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UntaggedWay.java	(revision 17721)
+++ /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/UntaggedWay.java	(revision 17722)
@@ -14,4 +14,5 @@
 import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.plugins.validator.Severity;
 import org.openstreetmap.josm.plugins.validator.Test;
@@ -112,6 +113,7 @@
 
     @Override
-    public void startTest()
+    public void startTest(ProgressMonitor monitor)
     {
+    	super.startTest(monitor);
         multipolygonways = new LinkedList<Way>();
         for (final Relation r : Main.main.getCurrentDataSet().relations)
@@ -133,4 +135,5 @@
     {
         multipolygonways = null;
+        super.endTest();
     }
 
Index: /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/WronglyOrderedWays.java
===================================================================
--- /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/WronglyOrderedWays.java	(revision 17721)
+++ /applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/tests/WronglyOrderedWays.java	(revision 17722)
@@ -8,4 +8,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.plugins.validator.Severity;
 import org.openstreetmap.josm.plugins.validator.Test;
@@ -36,6 +37,7 @@
 
     @Override
-    public void startTest()
+    public void startTest(ProgressMonitor monitor)
     {
+    	super.startTest(monitor);
         _errorWays = new Bag<Way, Way>();
     }
@@ -45,4 +47,5 @@
     {
         _errorWays = null;
+        super.endTest();
     }
 
