Index: /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryData.java
===================================================================
--- /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryData.java	(revision 31247)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryData.java	(revision 31248)
@@ -191,4 +191,15 @@
 		Main.map.mapView.repaint();
 	}
+	
+	public void addMultiSelectedImage(List<MapillaryImage> images) {
+		for (MapillaryImage image : images)
+			if (!this.multiSelectedImages.contains(image)) {
+				if (this.getSelectedImage() != null)
+					this.multiSelectedImages.add(image);
+				else
+					this.setSelectedImage(image);
+		}
+		Main.map.mapView.repaint();
+	}
 
 	/**
Index: /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryLayer.java
===================================================================
--- /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryLayer.java	(revision 31247)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/MapillaryLayer.java	(revision 31248)
@@ -14,4 +14,5 @@
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.MapView.EditLayerChangeListener;
+import org.openstreetmap.josm.gui.MapView.LayerChangeListener;
 import org.openstreetmap.josm.gui.layer.AbstractModifiableLayer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -51,5 +52,5 @@
 
 public class MapillaryLayer extends AbstractModifiableLayer implements
-		DataSetListener, EditLayerChangeListener {
+		DataSetListener, EditLayerChangeListener, LayerChangeListener {
 
 	public final static int SEQUENCE_MAX_JUMP_DISTANCE = 100;
@@ -92,4 +93,5 @@
 			Main.map.mapView.addLayer(this);
 			MapView.addEditLayerChangeListener(this, false);
+			MapView.addLayerChangeListener(this);
 			Main.map.mapView.getEditLayer().data.addDataSetListener(this);
 			if (tgd == null) {
@@ -112,4 +114,5 @@
 			private int lastButton;
 			private MapillaryImage closest;
+			private MapillaryImage lastClicked;
 
 			@Override
@@ -130,4 +133,5 @@
 				}
 				this.start = e.getPoint();
+				this.lastClicked = this.closest;
 				this.closest = closest;
 				if (mapillaryData.getMultiSelectedImages().contains(closest))
@@ -136,5 +140,23 @@
 						&& closest != null)
 					mapillaryData.addMultiSelectedImage(closest);
-				else
+				else if (e.getModifiers() == (MouseEvent.BUTTON1_MASK | MouseEvent.SHIFT_MASK)) {
+					if (this.closest != null
+							&& this.lastClicked != null
+							&& this.closest.getSequence() == this.lastClicked
+									.getSequence()) {
+						int i = this.closest.getSequence().getImages()
+								.indexOf(this.closest);
+						int j = this.lastClicked.getSequence().getImages()
+								.indexOf(this.lastClicked);
+						if (i < j)
+							mapillaryData.addMultiSelectedImage(this.closest
+									.getSequence().getImages()
+									.subList(i, j + 1));
+						else
+							mapillaryData.addMultiSelectedImage(this.closest
+									.getSequence().getImages()
+									.subList(j, i + 1));
+					}
+				} else
 					mapillaryData.setSelectedImage(closest);
 			}
@@ -490,3 +512,18 @@
 	public void visitBoundingBox(BoundingXYVisitor v) {
 	}
+
+	@Override
+	public void activeLayerChange(Layer oldLayer, Layer newLayer) {
+		if (newLayer == this)
+			Main.map.statusLine.setHelpText("Total images: "
+					+ MapillaryData.getInstance().getImages().size());
+	}
+
+	@Override
+	public void layerAdded(Layer newLayer) {
+	}
+
+	@Override
+	public void layerRemoved(Layer oldLayer) {
+	}
 }
Index: /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillarySquareDownloadManagerThread.java
===================================================================
--- /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillarySquareDownloadManagerThread.java	(revision 31247)
+++ /applications/editors/josm/plugins/mapillary/src/org/openstreetmap/josm/plugins/mapillary/downloads/MapillarySquareDownloadManagerThread.java	(revision 31248)
@@ -7,5 +7,4 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
-import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.plugins.mapillary.MapillaryData;
 
@@ -19,5 +18,5 @@
  * @see MapillaryDownloader
  */
-public class MapillarySquareDownloadManagerThread extends PleaseWaitRunnable {
+public class MapillarySquareDownloadManagerThread implements Runnable {
 
 	@SuppressWarnings("unused")
@@ -27,5 +26,4 @@
 
 	public MapillarySquareDownloadManagerThread(String urlImages, String urlSequences, Bounds bounds) {
-		super("Mapillary plugin");
 		this.urlImages = urlImages;
 		this.urlSequences = urlSequences;
@@ -33,7 +31,8 @@
 	}
 
-	public void realRun() {
-		this.getProgressMonitor().indeterminateSubTask("Downloading images");
+	public void run() {
+		Main.map.statusLine.setHelpText("Downloading images from Mapillary");
 		downloadSequences();
+		Main.map.statusLine.setHelpText("Total images: " + MapillaryData.getInstance().getImages().size());
 	}
 
@@ -61,15 +60,3 @@
 		MapillaryData.getInstance().dataUpdated();
 	}
-
-	@Override
-	protected void cancel() {
-		// TODO Auto-generated method stub
-		
-	}
-
-	@Override
-	protected void finish() {
-		// TODO Auto-generated method stub
-		
-	}
 }
