Index: /applications/editors/josm/plugins/ElevationProfile/josm-ElevationProfile.launch
===================================================================
--- /applications/editors/josm/plugins/ElevationProfile/josm-ElevationProfile.launch	(revision 26034)
+++ /applications/editors/josm/plugins/ElevationProfile/josm-ElevationProfile.launch	(revision 26034)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/JOSM/src/org/openstreetmap/josm/gui/MainApplication.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.openstreetmap.josm.gui.MainApplication"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="ElevationProfile"/>
+</launchConfiguration>
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 26033)
+++ /applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/ElevationProfilePlugin.java	(revision 26034)
@@ -70,7 +70,4 @@
 		if(Main.map != null){
 			Main.map.toolGroup.add(eleModeButton);
-
-			Main.map.mapView.addPropertyChangeListener(eleProfileDlg);
-			MapView.addLayerChangeListener(eleProfileDlg);
 			eleProfileDlg.setProfileLayer(getCurrentLayer());
 		}
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 26033)
+++ /applications/editors/josm/plugins/ElevationProfile/src/org/openstreetmap/josm/plugins/elevation/gui/ElevationProfileDialog.java	(revision 26034)
@@ -24,6 +24,4 @@
 import java.awt.event.ComponentEvent;
 import java.awt.event.ComponentListener;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -36,13 +34,12 @@
 import javax.swing.JTextField;
 
+import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.gpx.GpxData;
+import org.openstreetmap.josm.gui.MapView.LayerChangeListener;
 import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.NavigatableComponent;
-import org.openstreetmap.josm.gui.MapView.EditLayerChangeListener;
-import org.openstreetmap.josm.gui.MapView.LayerChangeListener;
 import org.openstreetmap.josm.gui.dialogs.ToggleDialog;
 import org.openstreetmap.josm.gui.layer.GpxLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
-import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.plugins.elevation.ElevationModel;
 import org.openstreetmap.josm.plugins.elevation.GeoidCorrectionKind;
@@ -56,7 +53,5 @@
  * connection between layer and elevation profile. 
  */
-public class ElevationProfileDialog extends ToggleDialog implements
-		PropertyChangeListener, LayerChangeListener, EditLayerChangeListener,
-		ComponentListener {
+public class ElevationProfileDialog extends ToggleDialog implements LayerChangeListener, ComponentListener {
 
 	private static final String EMPTY_DATA_STRING = "-";
@@ -235,4 +230,20 @@
 		dock();
 	}
+	
+	@Override
+	public void showNotify() {
+		MapView.addLayerChangeListener(this);
+		if (Main.isDisplayingMapView()) {
+			Layer layer = Main.map.mapView.getActiveLayer();
+			if (layer instanceof GpxLayer) {
+				setActiveLayer((GpxLayer) layer);
+			}
+		}
+	}
+	
+	@Override
+	public void hideNotify() {
+		MapView.removeLayerChangeListener(this);
+	}
 
 	/**
@@ -361,30 +372,4 @@
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @seejava.beans.PropertyChangeListener#propertyChange(java.beans.
-	 * PropertyChangeEvent)
-	 */
-
-	/*
-	 * WORKAROUND: The layer list dialog does not notify any listener when the
-	 * selection of the list changes. So the user has to toggle the visibility
-	 * of the layer to update the elevation profile.
-	 */
-	public void propertyChange(PropertyChangeEvent event) {
-		Object src = event.getSource();
-		if (src instanceof MapView) {
-			MapView mapView = (MapView) src;
-			Layer l = mapView.getActiveLayer();
-			if (l instanceof GpxLayer) {
-				setActiveLayer((GpxLayer) l);
-			}
-		} else if (src instanceof GpxLayer) {
-			GpxLayer gpxLayer = (GpxLayer) src;
-			setActiveLayer(gpxLayer);
-		}
-	}
-
 	/* (non-Javadoc)
 	 * @see org.openstreetmap.josm.gui.MapView.LayerChangeListener#activeLayerChange(org.openstreetmap.josm.gui.layer.Layer, org.openstreetmap.josm.gui.layer.Layer)
@@ -396,24 +381,7 @@
 	}
 
-	/**
-	 * Internal helper to create elevation data for a new layer.
-	 * @param newLayer The layer added by the user.
-	 */
-	private void createLayer(Layer newLayer) {
-		if (newLayer != null) {
-			if (newLayer instanceof GpxLayer) {
-				newLayer.addPropertyChangeListener(this);
-				GpxLayer gpxLayer = (GpxLayer) newLayer;
-				setActiveLayer(gpxLayer);
-			}
-		}
-	}
-
-	/**
-	 * Internal helper to update internal cache and synchronize elevation model.
-	 * @param newLayer The layer added by the user.
-	 */
 	private void setActiveLayer(GpxLayer newLayer) {
 		if (activeLayer != newLayer) {
+			activeLayer = newLayer;
 			int slices = 250;
 			if (profPanel != null && profPanel.getPlotArea().width > 0) {
@@ -438,5 +406,8 @@
 	 */
 	public void layerAdded(Layer newLayer) {
-		createLayer(newLayer);
+		if (newLayer instanceof GpxLayer) {
+			GpxLayer gpxLayer = (GpxLayer) newLayer;
+			setActiveLayer(gpxLayer);
+		}
 	}
 
@@ -452,11 +423,4 @@
 			profileLayer.setProfile(null);
 		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.openstreetmap.josm.gui.MapView.EditLayerChangeListener#editLayerChanged(org.openstreetmap.josm.gui.layer.OsmDataLayer, org.openstreetmap.josm.gui.layer.OsmDataLayer)
-	 */
-	public void editLayerChanged(OsmDataLayer oldLayer, OsmDataLayer newLayer) {
-		// Nothing to do...
 	}
 
