Index: /applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/TurnLanesDialog.java
===================================================================
--- /applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/TurnLanesDialog.java	(revision 28619)
+++ /applications/editors/josm/plugins/turnlanes/src/org/openstreetmap/josm/plugins/turnlanes/gui/TurnLanesDialog.java	(revision 28620)
@@ -18,5 +18,4 @@
 import javax.swing.JToggleButton;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
 import org.openstreetmap.josm.data.SelectionChangedListener;
@@ -40,5 +39,5 @@
 import org.openstreetmap.josm.plugins.turnlanes.model.ModelContainer;
 
-public class TurnLanesDialog extends ToggleDialog {
+public class TurnLanesDialog extends ToggleDialog implements EditLayerChangeListener, SelectionChangedListener {
     private class EditAction extends JosmAction {
         private static final long serialVersionUID = 4114119073563457706L;
@@ -152,29 +151,6 @@
         super(tr("Turn Lanes"), "turnlanes.png", tr("Edit turn lanes"), null, 200);
         
-        MapView.addEditLayerChangeListener(new EditLayerChangeListener() {
-            @Override
-            public void editLayerChanged(OsmDataLayer oldLayer, OsmDataLayer newLayer) {
-                if (oldLayer != null) {
-                    oldLayer.data.removeDataSetListener(dataSetListener);
-                }
-                
-                if (newLayer != null) {
-                    newLayer.data.addDataSetListener(dataSetListener);
-                }
-            }
-        });
-        
-        DataSet.addSelectionListener(new SelectionChangedListener() {
-            @Override
-            public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
-                if (selected.equals(new HashSet<OsmPrimitive>(newSelection))) {
-                    return;
-                }
-                selected.clear();
-                selected.addAll(newSelection);
-                
-                refresh();
-            }
-        });
+        MapView.addEditLayerChangeListener(this);
+        DataSet.addSelectionListener(this);
         
         final JPanel buttonPanel = new JPanel(new GridLayout(1, 2, 4, 4));
@@ -216,3 +192,32 @@
         }
     }
+
+	@Override
+	public void editLayerChanged(OsmDataLayer oldLayer, OsmDataLayer newLayer) {
+        if (oldLayer != null) {
+            oldLayer.data.removeDataSetListener(dataSetListener);
+        }
+        
+        if (newLayer != null) {
+            newLayer.data.addDataSetListener(dataSetListener);
+        }
+	}
+
+	@Override
+	public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
+        if (selected.equals(new HashSet<OsmPrimitive>(newSelection))) {
+            return;
+        }
+        selected.clear();
+        selected.addAll(newSelection);
+        
+        refresh();
+	}
+
+	@Override
+	public void destroy() {
+		super.destroy();
+        MapView.removeEditLayerChangeListener(this);
+        DataSet.removeSelectionListener(this);
+	}
 }
