Index: utils/josm/plugins/landsat/src/landsat/DownloadLandsatTask.java
===================================================================
--- utils/josm/plugins/landsat/src/landsat/DownloadLandsatTask.java	(revision 1551)
+++ utils/josm/plugins/landsat/src/landsat/DownloadLandsatTask.java	(revision 1553)
@@ -18,10 +18,7 @@
 	private JCheckBox checkBox = new JCheckBox(tr("Landsat background images"));
 
-	public DownloadLandsatTask() {
+	public DownloadLandsatTask(LandsatLayer landsatLayer) {
 		super(tr("Downloading data"));
-		landsatLayer = new LandsatLayer
-		("http://onearth.jpl.nasa.gov/wms.cgi?request=GetMap&"+
-				"layers=global_mosaic&styles=&srs=EPSG:4326&"+
-		"format=image/jpeg");
+		this.landsatLayer = landsatLayer;
 	}
 
Index: utils/josm/plugins/landsat/src/landsat/LandsatAdjustAction.java
===================================================================
--- utils/josm/plugins/landsat/src/landsat/LandsatAdjustAction.java	(revision 1553)
+++ utils/josm/plugins/landsat/src/landsat/LandsatAdjustAction.java	(revision 1553)
@@ -0,0 +1,92 @@
+package landsat; 
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.Cursor;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MapFrame;
+import org.openstreetmap.josm.actions.mapmode.MapMode;
+import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.IconToggleButton;
+
+public class LandsatAdjustAction extends MapMode implements
+		MouseListener, MouseMotionListener{
+
+	LandsatImage selectedImage; 
+	boolean mouseDown;
+	EastNorth prevEastNorth;
+
+	public LandsatAdjustAction(MapFrame mapFrame) {
+		super("landsatAdjust", "movelandsat", 
+						"Adjust the position of the Landsat.", mapFrame, 
+						ImageProvider.getCursor("normal", "move"));
+	}
+
+	@Override public void enterMode() {
+		super.enterMode();
+		Main.map.mapView.addMouseListener(this);
+		Main.map.mapView.addMouseMotionListener(this);
+	}
+
+	@Override public void exitMode() {
+		super.exitMode();
+		Main.map.mapView.removeMouseListener(this);
+		Main.map.mapView.removeMouseMotionListener(this);
+	}
+
+	@Override public void mousePressed(MouseEvent e) {
+		if (e.getButton() != MouseEvent.BUTTON1)
+			return;
+
+		 for(Layer layer:Main.map.mapView.getAllLayers()) {
+			if (layer instanceof LandsatLayer) {
+				prevEastNorth=Main.map.mapView.getEastNorth(e.getX(),e.getY());
+				selectedImage = ((LandsatLayer)layer).findImage(prevEastNorth);
+				if(selectedImage!=null){
+					Main.map.mapView.setCursor
+						(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));
+				}
+			}
+		}
+	}
+
+	@Override public void mouseDragged(MouseEvent e) {
+			/*
+		if (e.getButton() != MouseEvent.BUTTON1)
+			return;
+			*/
+
+		if(selectedImage!=null) {
+			EastNorth eastNorth=
+					Main.map.mapView.getEastNorth(e.getX(),e.getY());
+			if(selectedImage.contains(eastNorth)) {
+				selectedImage.displace(eastNorth.east()-prevEastNorth.east(), 
+									eastNorth.north()-prevEastNorth.north());
+				prevEastNorth = eastNorth;
+			}
+			Main.map.mapView.repaint();
+		}
+	}
+
+	@Override public void mouseReleased(MouseEvent e) {
+		Main.map.mapView.repaint();
+		Main.map.mapView.setCursor(Cursor.getDefaultCursor());
+		selectedImage = null;	
+	}
+
+	public void mouseEntered(MouseEvent e) {
+	}
+	public void mouseExited(MouseEvent e) {
+	}
+	public void mouseMoved(MouseEvent e) {
+	}
+
+	@Override public void mouseClicked(MouseEvent e) {
+	}
+}
Index: utils/josm/plugins/landsat/src/landsat/LandsatImage.java
===================================================================
--- utils/josm/plugins/landsat/src/landsat/LandsatImage.java	(revision 1551)
+++ utils/josm/plugins/landsat/src/landsat/LandsatImage.java	(revision 1553)
@@ -21,5 +21,7 @@
 	Image theImage;
 	double grabbedScale;
-	EastNorth topLeft;
+	EastNorth topLeft, bottomRight;
+	double dEast, dNorth;	
+	double minLat,minLon,maxLat,maxLon;
 
 	public LandsatImage(String constURL)
@@ -56,5 +58,5 @@
 
 		topLeft = Main.proj.latlon2eastNorth(new LatLon(maxlat,minlon));
-		EastNorth bottomRight = Main.proj.latlon2eastNorth
+		bottomRight = Main.proj.latlon2eastNorth
 		(new LatLon(minlat,maxlon));
 
@@ -67,4 +69,8 @@
 			URL url =  doGetURL(p,p2,widthPx,heightPx);
 			doGrab(url);
+			this.minLat=minlat;
+			this.minLon=minlon;
+			this.maxLat=maxlat;
+			this.maxLon=maxlon;
 		}
 		catch(MalformedURLException e)
@@ -72,5 +78,5 @@
 			System.out.println("Illegal url. Error="+e);
 		}
-			}
+	}
 
 	private URL getURL(NavigatableComponent nc) throws MalformedURLException
@@ -103,14 +109,26 @@
 	}
 
-	public void paint(Graphics g,NavigatableComponent nc) /*,EastNorth bottomLeft,
-		   int x1, int y1, int x2, int y2) */
+	public void displace (double dEast, double dNorth)
+	{
+	 	this.dEast += dEast;	
+	 	this.dNorth += dNorth;	
+	}
+
+	public boolean contains(EastNorth eastNorth)
+	{
+		double e1 = topLeft.east()+dEast, 
+			   e2 = bottomRight.east()+dEast,
+			   n1 = bottomRight.north()+dNorth,
+			   n2 = topLeft.north()+dNorth;
+
+		boolean b =  eastNorth.east()>=e1 && eastNorth.east()<=e2 &&
+				eastNorth.north()>=n1 && eastNorth.north()<=n2;
+		return b;
+	}
+
+	public void paint(Graphics g,NavigatableComponent nc) 
 	{
 		if(theImage!=null)
 		{
-			/*
-			System.out.println("x1="+x1+" y1="+y1+" x2="+x2+" y2="+y2+
-								" img w="+theImage.getWidth(null) +
-								" img h="+theImage.getHeight(null)) ;
-			 */
 			double zoomInFactor = grabbedScale / nc.getScale();
 
@@ -119,25 +137,14 @@
 			// grabbed scale in EastNorth/pixel.
 
-			/*
-			double ix = (bottomLeft.east()-this.bottomLeft.east())/grabbedScale,
-			   	   iy = theImage.getHeight(null) -
-				 ((bottomLeft.north() - this.bottomLeft.north())/grabbedScale);
-
-			g.drawImage(theImage,x1,y1,x2,y2,(int)ix,(int)iy,
-					(int)(ix+((x2-x1)/zoomInFactor)),
-					(int)(iy+((y2-y1)/zoomInFactor)), null);
-			 */
 			int w = theImage.getWidth(null), h=theImage.getHeight(null);
-			Point p = nc.getPoint(topLeft);
-			/*
-			System.out.println("topleft: e=" + topLeft.east() + " n="+
-							topLeft.north());
-			System.out.println("Drawing at "+p.x+","+p.y);
-			 */
-			g.drawImage(theImage,p.x,p.y,
-					(int)(p.x+w*zoomInFactor),
-					(int)(p.y+h*zoomInFactor),
+			EastNorth topLeftDisplaced  = 
+				new EastNorth(topLeft.east()+dEast, topLeft.north()+dNorth);
+			Point displacement = Main.map.mapView.getPoint(topLeftDisplaced);
+			g.drawImage(theImage,displacement.x,displacement.y,
+					(int)(displacement.x+w*zoomInFactor),
+					(int)(displacement.y+h*zoomInFactor),
 					0,0,w,h,null);
 		}
 	}
+
 }
Index: utils/josm/plugins/landsat/src/landsat/LandsatLayer.java
===================================================================
--- utils/josm/plugins/landsat/src/landsat/LandsatLayer.java	(revision 1551)
+++ utils/josm/plugins/landsat/src/landsat/LandsatLayer.java	(revision 1553)
@@ -7,4 +7,5 @@
 import java.awt.Toolkit;
 import java.io.IOException;
+import java.util.ArrayList;
 
 import javax.swing.Icon;
@@ -20,4 +21,5 @@
 import org.openstreetmap.josm.gui.dialogs.LayerListPopup;
 import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.data.coor.EastNorth;
 
 /**
@@ -29,5 +31,5 @@
 	private static Icon icon = new ImageIcon(Toolkit.getDefaultToolkit().createImage(LandsatPlugin.class.getResource("/images/wms.png")));
 
-	private final LandsatImage landsatImage;
+	private final ArrayList<LandsatImage> landsatImages;
 
 	private final String url;
@@ -47,5 +49,6 @@
 
 		this.url = url;
-		landsatImage = new LandsatImage(url);
+		//landsatImage = new LandsatImage(url);
+		landsatImages = new ArrayList<LandsatImage>();
 	}
 
@@ -53,5 +56,7 @@
 	{
 		MapView mv = Main.map.mapView;
+		LandsatImage landsatImage = new LandsatImage(url);
 		landsatImage.grab(mv);
+		landsatImages.add(landsatImage);
 	}
 
@@ -60,5 +65,7 @@
 	{
 		MapView mv = Main.map.mapView;
+		LandsatImage landsatImage = new LandsatImage(url);
 		landsatImage.grab(mv,minlat,minlon,maxlat,maxlon);
+		landsatImages.add(landsatImage);
 	}
 
@@ -79,5 +86,7 @@
 
 	@Override public void paint(Graphics g, final MapView mv) {
-		landsatImage.paint(g,mv);
+		for(LandsatImage landsatImage : landsatImages) {
+			landsatImage.paint(g,mv);
+		}
 	}
 
@@ -97,3 +106,13 @@
 				new JMenuItem(new LayerListPopup.InfoAction(this))};
 	}
+
+	public LandsatImage findImage(EastNorth eastNorth)
+	{
+		for(LandsatImage landsatImage : landsatImages) {
+			if (landsatImage.contains(eastNorth))  {
+				return landsatImage;
+			}
+		}
+		return null;
+	}
 }
Index: utils/josm/plugins/landsat/src/landsat/LandsatPlugin.java
===================================================================
--- utils/josm/plugins/landsat/src/landsat/LandsatPlugin.java	(revision 1551)
+++ utils/josm/plugins/landsat/src/landsat/LandsatPlugin.java	(revision 1553)
@@ -4,4 +4,5 @@
 import org.openstreetmap.josm.plugins.Plugin;
 import org.openstreetmap.josm.gui.MapFrame;
+import org.openstreetmap.josm.gui.IconToggleButton;
 
 // NW 151006 only add the landsat task when the map frame is initialised with
@@ -11,12 +12,25 @@
 
 	DownloadLandsatTask task;
+	LandsatLayer landsatLayer;
+	boolean addedAction;
 
 	public LandsatPlugin() {
-		task = new DownloadLandsatTask();
+		landsatLayer = new LandsatLayer
+		("http://onearth.jpl.nasa.gov/wms.cgi?request=GetMap&"+
+				"layers=global_mosaic&styles=&srs=EPSG:4326&"+
+		"format=image/jpeg");
+		task = new DownloadLandsatTask(landsatLayer);
 		task.setEnabled(false);
 		Main.main.menu.download.downloadTasks.add(task);
+
 	}
 
 	public void mapFrameInitialized(MapFrame oldFrame, MapFrame newFrame) {
+		if(!addedAction) {
+			Main.map.toolBarActions.addSeparator();
+			Main.map.toolBarActions.add(new IconToggleButton
+						(new LandsatAdjustAction(Main.map)));
+			addedAction=true;
+		}
 		if(oldFrame==null && newFrame!=null) { 
 			task.setEnabled(true);
