Index: /applications/editors/josm/plugins/slippy_map_chooser/src/OsmMapControl.java
===================================================================
--- /applications/editors/josm/plugins/slippy_map_chooser/src/OsmMapControl.java	(revision 9622)
+++ /applications/editors/josm/plugins/slippy_map_chooser/src/OsmMapControl.java	(revision 9623)
@@ -31,9 +31,10 @@
 
 	private SizeButton iSizeButton = null;
+	private SourceButton iSourceButton = null;
 
 	/**
 	 * Create a new OsmMapControl
 	 */
-	public OsmMapControl(SlippyMapChooser navComp, JPanel contentPane, SizeButton sizeButton) {
+	public OsmMapControl(SlippyMapChooser navComp, JPanel contentPane, SizeButton sizeButton, SourceButton sourceButton) {
 		this.iSlippyMapChooser = navComp;
 		iSlippyMapChooser.addMouseListener(this);
@@ -53,4 +54,5 @@
 		}
 		iSizeButton = sizeButton;
+		iSourceButton = sourceButton;
 	}
 
@@ -86,8 +88,19 @@
 	public void mouseReleased(MouseEvent e) {
 		if (e.getButton() == MouseEvent.BUTTON1) {
+			
+			int sourceButton = iSourceButton.hit(e.getPoint());
+			
 			if (iSizeButton.hit(e.getPoint())) {
 				iSizeButton.toggle();
 				iSlippyMapChooser.resizeSlippyMap();
-			} else {
+			}
+			else if(sourceButton == SourceButton.HIDE_OR_SHOW) {
+				iSourceButton.toggle();
+				iSlippyMapChooser.repaint();
+				
+			}else if(sourceButton == SourceButton.MAPNIK || sourceButton == SourceButton.OSMARENDER) {
+				iSlippyMapChooser.toggleMapSource(sourceButton);
+			}
+			else {
 				if (e.getClickCount() == 1) {
 					iSlippyMapChooser.setSelection(iStartSelectionPoint, e.getPoint());
@@ -98,4 +111,5 @@
 				}
 			}
+			
 		}
 	}
Index: /applications/editors/josm/plugins/slippy_map_chooser/src/SlippyMapChooser.java
===================================================================
--- /applications/editors/josm/plugins/slippy_map_chooser/src/SlippyMapChooser.java	(revision 9622)
+++ /applications/editors/josm/plugins/slippy_map_chooser/src/SlippyMapChooser.java	(revision 9623)
@@ -19,5 +19,7 @@
 import org.openstreetmap.gui.jmapviewer.JMapViewer;
 import org.openstreetmap.gui.jmapviewer.MapMarkerDot;
+import org.openstreetmap.gui.jmapviewer.MemoryTileCache;
 import org.openstreetmap.gui.jmapviewer.OsmMercator;
+import org.openstreetmap.gui.jmapviewer.OsmTileLoader;
 import org.openstreetmap.gui.jmapviewer.interfaces.MapMarker;
 import org.openstreetmap.josm.gui.download.DownloadDialog;
@@ -40,4 +42,5 @@
 
 	private SizeButton iSizeButton = new SizeButton();
+	private SourceButton iSourceButton = new SourceButton();
 
 	// standard dimension
@@ -66,5 +69,5 @@
 		iGui.tabpane.add(temp, tr("Slippy map"));
 
-		new OsmMapControl(this, temp, iSizeButton);
+		new OsmMapControl(this, temp, iSizeButton, iSourceButton);
 		boundingBoxChanged(gui);
 	}
@@ -103,4 +106,5 @@
 
 			iSizeButton.paint(g);
+			iSourceButton.paint(g);
 		} catch (Exception e) {
 			e.printStackTrace();
@@ -199,4 +203,5 @@
 			int h = iScreenSize.height * 90 / 100;
 			co.setBounds((iScreenSize.width - w) / 2, (iScreenSize.height - h) / 2, w, h);
+			
 		}
 		// shrink
@@ -207,7 +212,19 @@
 			int h = iDownloadDialogDimension.height;
 			co.setBounds((iScreenSize.width - w) / 2, (iScreenSize.height - h) / 2, w, h);
-		}
+			
+		}
+		
 		repaint();
 	}
+	
+	public void toggleMapSource(int mapSource){
+		this.tileCache = new MemoryTileCache();
+		if(mapSource == SourceButton.MAPNIK){
+			this.tileLoader = new OsmTileLoader(this,OsmTileLoader.MAP_MAPNIK);
+		}else{
+			this.tileLoader = new OsmTileLoader(this,OsmTileLoader.MAP_OSMA);
+		}
+		repaint();
+	}
 
 }
Index: /applications/editors/josm/plugins/slippy_map_chooser/src/SourceButton.java
===================================================================
--- /applications/editors/josm/plugins/slippy_map_chooser/src/SourceButton.java	(revision 9623)
+++ /applications/editors/josm/plugins/slippy_map_chooser/src/SourceButton.java	(revision 9623)
@@ -0,0 +1,98 @@
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Point;
+
+import javax.swing.ImageIcon;
+import javax.vecmath.Color3f;
+
+import org.openstreetmap.josm.tools.ImageProvider;
+
+
+
+
+public class SourceButton {
+	
+	private int x =0;
+	private int y = 30;	
+	
+	private int enlagedWidth = 200;
+	private int enlargedHeight = 50;
+	
+	private ImageIcon enlargeImage;
+	private ImageIcon shrinkImage;
+	private ImageIcon imageMapnik;
+	private ImageIcon imageOsmarender;
+	
+	private boolean isEnlarged = false;
+	
+	private boolean isMapnik = true;
+	
+	private static final String SOURCE_1 = "Osmarender";
+	private static final String SOURCE_2 = "Mapnik";
+	
+	public static final int HIDE_OR_SHOW = 1;
+	public static final int MAPNIK = 2;
+	public static final int OSMARENDER = 3;
+	
+	
+	public SourceButton(){
+		enlargeImage = ImageProvider.get("", "layer-switcher-maximize.png");
+		shrinkImage = ImageProvider.get("", "layer-switcher-minimize.png");	
+		imageMapnik = ImageProvider.get("", "blue_Mapnik.png");
+		imageOsmarender = ImageProvider.get("", "blue_Osmarender.png");
+
+	}
+	
+	public void paint(Graphics g){
+		
+		if(isEnlarged){
+			if(isMapnik){
+				g.drawImage(imageMapnik.getImage(), g.getClipBounds().width - imageMapnik.getIconWidth(), y, null);
+			}else{
+				g.drawImage(imageOsmarender.getImage(), g.getClipBounds().width - imageMapnik.getIconWidth(), y, null);
+			}
+
+			if(shrinkImage != null){
+				this.x = g.getClipBounds().width-shrinkImage.getIconWidth();				
+				g.drawImage(shrinkImage.getImage(),x,y, null);			
+			}
+		
+		}else{
+			if(enlargeImage != null){
+				this.x = g.getClipBounds().width-enlargeImage.getIconWidth();
+				g.drawImage(enlargeImage.getImage(),x,y, null);
+			}
+		}		
+	}
+	
+	public void toggle(){
+		this.isEnlarged = !this.isEnlarged;
+				
+	}
+	
+	public int hit(Point point){		
+		if(isEnlarged){
+			if(x < point.x && point.x < x + shrinkImage.getIconWidth()){
+				if(y < point.y && point.y < y + shrinkImage.getIconHeight() ){				
+					return HIDE_OR_SHOW;
+				}
+			}else if(x-imageMapnik.getIconWidth() < point.x && point.x < x ){
+				 if(y < point.y && point.y < y +imageMapnik.getIconHeight()/2 ){
+					isMapnik = false;
+					return OSMARENDER;
+				}else if(y+imageMapnik.getIconHeight()/2 < point.y && point.y < y +imageMapnik.getIconHeight() ){
+					isMapnik = true;
+					return MAPNIK;
+				}
+			}
+		}else{
+			if(x < point.x && point.x < x + enlargeImage.getIconWidth()){
+				if(y < point.y && point.y < y + enlargeImage.getIconHeight() ){				
+					return HIDE_OR_SHOW;
+				}
+			}
+		}
+		
+		return 0;
+	}
+}
