Index: /applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/ColoredElevationLayer.java
===================================================================
--- /applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/ColoredElevationLayer.java	(revision 29960)
+++ /applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/ColoredElevationLayer.java	(revision 29961)
@@ -54,5 +54,5 @@
     @Override
     public Icon getIcon() {	
-	return ImageProvider.get("layer", "elevation_small");
+	return ImageProvider.get("layer", "elevation");
     }
 
Index: /applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/ElevationProfilePlugin.java
===================================================================
--- /applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/ElevationProfilePlugin.java	(revision 29960)
+++ /applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/ElevationProfilePlugin.java	(revision 29961)
@@ -57,5 +57,5 @@
 	    
 	    // TODO: Disable this view as long as it is not stable
-	    //MainMenu.add(Main.main.menu.viewMenu, action, false, 0);
+	    MainMenu.add(Main.main.menu.viewMenu, action, false, 0);
 	} catch (Exception e1) {
 	    System.err.println("Init of ElevationProfilePlugin failed: " + e1);
Index: /applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/IElevationProfile.java
===================================================================
--- /applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/IElevationProfile.java	(revision 29960)
+++ /applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/IElevationProfile.java	(revision 29961)
@@ -18,4 +18,5 @@
 import java.util.List;
 
+import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.gpx.WayPoint;
 
@@ -135,4 +136,11 @@
 	
 	/**
+	 * Gets the coordinate bounds of the elevation profile.
+	 *
+	 * @return the bounds
+	 */
+	public Bounds getBounds();
+	
+	/**
 	 * Gets the children of the segment (maybe null).
 	 */
Index: /applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/gpx/ElevationProfileBase.java
===================================================================
--- /applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/gpx/ElevationProfileBase.java	(revision 29960)
+++ /applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/gpx/ElevationProfileBase.java	(revision 29961)
@@ -19,4 +19,5 @@
 import java.util.List;
 
+import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.gpx.WayPoint;
 import org.openstreetmap.josm.plugins.elevation.ElevationHelper;
@@ -64,4 +65,6 @@
 	private int gain;
 	private int lastEle;
+	private Bounds bounds;
+	
 	private static boolean ignoreZeroHeight = true;
 
@@ -92,11 +95,22 @@
 		this.name = name;
 		this.parent = parent;
+		
 		setWayPoints(wayPoints);
 	}
 
+	/**
+	 * Checks if zero elevation should be ignored or not.
+	 *
+	 * @return true, if is ignore zero height
+	 */
 	public static boolean isIgnoreZeroHeight() {
 		return ignoreZeroHeight;
 	}
 
+	/**
+	 * Sets the ignore zero height.
+	 *
+	 * @param ignoreZeroHeight the new ignore zero height
+	 */
 	public static void setIgnoreZeroHeight(boolean ignoreZeroHeight) {
 		ElevationProfileBase.ignoreZeroHeight = ignoreZeroHeight;
@@ -448,4 +462,13 @@
 		return numWayPoints;// wayPoints != null ? wayPoints.size() : 0;
 	}
+	
+	/**
+	 * Gets the coordinate bounds of this profile. See {@link Bounds} for details.
+	 *
+	 * @return the bounds of this elevation profile
+	 */
+	public Bounds getBounds() {
+	    return bounds;
+	}
 
 	/**
@@ -473,4 +496,11 @@
 		}
 
+		// update boundaries
+		if (bounds == null) {
+		    bounds = new Bounds(wp.getCoor());
+		} else {
+		    bounds.extend(wp.getCoor());
+		}
+		
 		int ele = (int) ElevationHelper.getElevation(wp);
 
Index: /applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/gui/ElevationProfileDialog.java
===================================================================
--- /applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/gui/ElevationProfileDialog.java	(revision 29960)
+++ /applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/gui/ElevationProfileDialog.java	(revision 29961)
@@ -18,7 +18,10 @@
 
 import java.awt.BorderLayout;
+import java.awt.Dimension;
 import java.awt.FlowLayout;
 import java.awt.Font;
 import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
 import java.awt.event.ComponentEvent;
 import java.awt.event.ComponentListener;
@@ -29,4 +32,5 @@
 
 import javax.swing.ComboBoxModel;
+import javax.swing.JButton;
 import javax.swing.JComboBox;
 import javax.swing.JLabel;
@@ -75,4 +79,5 @@
 	private JLabel distLabel;
 	private JComboBox<IElevationProfile> trackCombo;
+	private JButton zoomButton;
 	
 	/* Listener to the elevation model */
@@ -83,5 +88,4 @@
 	 */
 	private ElevationProfileLayer profileLayer;
-	
 
 	/**
@@ -166,6 +170,25 @@
 		trackPanel.add(lbTrack);
 		
-		trackCombo = new JComboBox<IElevationProfile>(new TrackModel());
+		zoomButton = new JButton(tr("Zoom"));
+		zoomButton.addActionListener(new ActionListener() {		    
+		    @Override
+		    public void actionPerformed(ActionEvent arg0) {
+			if (model != null) {
+				IElevationProfile profile = model.getCurrentProfile();
+				if (profile != null) {
+				    Main.map.mapView.zoomTo(profile.getBounds());
+				}
+		    	}
+
+		    }
+		});
+		zoomButton.setEnabled(false);
+		
+		trackCombo = new JComboBox<IElevationProfile>(new TrackModel());		
+		trackCombo.setPreferredSize(new Dimension(200, 24)); // HACK!
+		trackCombo.setEnabled(false); // we have no model on startup
+		
 		trackPanel.add(trackCombo);
+		trackPanel.add(zoomButton);
 
 		// assemble root panel
@@ -246,8 +269,10 @@
 	 */
 	private void updateView() {
-	    	if (model == null) return;
+	    	if (model == null) {
+	    	    disableView();
+	    	    return;
+	    	}
 
 		IElevationProfile profile = model.getCurrentProfile();
-
 		if (profile != null) {
 		    // Show name of profile in title 
@@ -276,19 +301,26 @@
 		    totalTimeLabel.setText(String.format("%d:%d h", hours, minutes));
 		    distLabel.setText(NavigatableComponent.getSystemOfMeasurement().getDistText(dist));
-		    trackCombo.setEnabled(model.profileCount() > 1);		    
+		    trackCombo.setEnabled(model.profileCount() > 1);
+		    trackCombo.setModel(new TrackModel());
+		    zoomButton.setEnabled(true);
 		} else { // no elevation data, -> switch back to empty view
-		    setTitle(String.format("%s: (No data)", tr("Elevation Profile")));
-
-		    minHeightLabel.setText(EMPTY_DATA_STRING);
-		    maxHeightLabel.setText(EMPTY_DATA_STRING);
-		    avrgHeightLabel.setText(EMPTY_DATA_STRING);
-		    elevationGainLabel.setText(EMPTY_DATA_STRING);
-		    totalTimeLabel.setText(EMPTY_DATA_STRING);
-		    distLabel.setText(EMPTY_DATA_STRING);
-		    trackCombo.setEnabled(false);
+		    disableView();
 		}
 		
 		fireModelChanged();
 		repaint();	    
+	}
+
+	private void disableView() {
+	    setTitle(String.format("%s: (No data)", tr("Elevation Profile")));
+
+	    minHeightLabel.setText(EMPTY_DATA_STRING);
+	    maxHeightLabel.setText(EMPTY_DATA_STRING);
+	    avrgHeightLabel.setText(EMPTY_DATA_STRING);
+	    elevationGainLabel.setText(EMPTY_DATA_STRING);
+	    totalTimeLabel.setText(EMPTY_DATA_STRING);
+	    distLabel.setText(EMPTY_DATA_STRING);
+	    trackCombo.setEnabled(false);
+	    zoomButton.setEnabled(false);
 	}
 
