Index: applications/editors/josm/plugins/smed2/src/s57/S57val.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/s57/S57val.java	(revision 29134)
+++ applications/editors/josm/plugins/smed2/src/s57/S57val.java	(revision 29150)
@@ -16,5 +16,5 @@
 	}
 	
-	private enum Conv { S, A, L, E, F, I }
+	public enum Conv { S, A, L, E, F, I }
 	
 	static class S57key {
@@ -587,8 +587,9 @@
 		Litvis.put(LitVIS.LIT_OBSC, new S57enum(7, "obscured")); Litvis.put(LitVIS.LIT_POBS, new S57enum(8, "part_obscured"));
 	}
-	public enum MarSYS { SYS_UNKN, SYS_IALA, SYS_IALB, SYS_NONE, SYS_OTHR, SYS_CEVN, SYS_RIWR }
+	public enum MarSYS { SYS_UNKN, SYS_IALA, SYS_IALB, SYS_NONE, SYS_OTHR, SYS_CEVN, SYS_RIWR, SYS_BWR2, SYS_BNWR, SYS_PPWB }
 	private static final EnumMap<MarSYS, S57enum> Marsys = new EnumMap<MarSYS, S57enum>(MarSYS.class); static { Marsys.put(MarSYS.SYS_UNKN, new S57enum(0, ""));
 		Marsys.put(MarSYS.SYS_IALA, new S57enum(1, "iala-a")); Marsys.put(MarSYS.SYS_IALB, new S57enum(2, "iala-b")); Marsys.put(MarSYS.SYS_NONE, new S57enum(9, "none"));
 		Marsys.put(MarSYS.SYS_OTHR, new S57enum(10, "other")); Marsys.put(MarSYS.SYS_CEVN, new S57enum(11, "cevni")); Marsys.put(MarSYS.SYS_RIWR, new S57enum(12, "riwr"));
+		Marsys.put(MarSYS.SYS_BWR2, new S57enum(13, "bniwr2")); Marsys.put(MarSYS.SYS_BNWR, new S57enum(14, "bniwr")); Marsys.put(MarSYS.SYS_PPWB, new S57enum(15, "ppwbc"));
 	}
 	public enum NatCON { CON_UNKN, CON_MSNY, CON_CONC, CON_BDRS, CON_HSRF, CON_USRF, CON_WOOD, CON_METL, CON_GRP, CON_PNTD }
@@ -794,5 +795,5 @@
 	  Catnmk.put(CatNMK.NMK_WLSA, new S57enum(79, "main_waterway_left_secondary_ahead")); Catnmk.put(CatNMK.NMK_WRSL, new S57enum(80, "main_waterway_right_secondary_left"));
 	  Catnmk.put(CatNMK.NMK_WLSR, new S57enum(81, "main_waterway_left_secondary_right")); Catnmk.put(CatNMK.NMK_WRAL, new S57enum(82, "main_waterway_right_secondary_ahead_left"));
-	  Catnmk.put(CatNMK.NMK_WLAR, new S57enum(83, "main_waterway_left_secondary waterway_ahead_right")); Catnmk.put(CatNMK.NMK_MWWC, new S57enum(84, "main_waterway_crossing"));
+	  Catnmk.put(CatNMK.NMK_WLAR, new S57enum(83, "main_waterway_left_secondary_ahead_right")); Catnmk.put(CatNMK.NMK_MWWC, new S57enum(84, "main_waterway_crossing"));
 	  Catnmk.put(CatNMK.NMK_MWWJ, new S57enum(85, "main_waterway_junction")); Catnmk.put(CatNMK.NMK_MWAR, new S57enum(86, "main_waterway_ahead_right"));
 	  Catnmk.put(CatNMK.NMK_MWAL, new S57enum(87, "main_waterway_ahead_left")); Catnmk.put(CatNMK.NMK_WARL, new S57enum(88, "main_waterway_ahead_right_secondary_left"));
Index: applications/editors/josm/plugins/smed2/src/smed2/Smed2Action.java
===================================================================
--- applications/editors/josm/plugins/smed2/src/smed2/Smed2Action.java	(revision 29134)
+++ applications/editors/josm/plugins/smed2/src/smed2/Smed2Action.java	(revision 29150)
@@ -3,4 +3,5 @@
 import java.awt.Dimension;
 import java.awt.event.ActionEvent;
+import java.util.Collection;
 
 import javax.swing.JFrame;
@@ -10,6 +11,24 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 import org.openstreetmap.josm.actions.JosmAction;
+import org.openstreetmap.josm.gui.MapView;
+import org.openstreetmap.josm.gui.MapView.EditLayerChangeListener;
 import org.openstreetmap.josm.gui.layer.ImageryLayer;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.data.SelectionChangedListener;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.event.AbstractDatasetChangedEvent;
+import org.openstreetmap.josm.data.osm.event.DataChangedEvent;
+import org.openstreetmap.josm.data.osm.event.DataSetListener;
+import org.openstreetmap.josm.data.osm.event.DataSetListenerAdapter;
+import org.openstreetmap.josm.data.osm.event.DatasetEventManager.FireMode;
+import org.openstreetmap.josm.data.osm.event.NodeMovedEvent;
+import org.openstreetmap.josm.data.osm.event.PrimitivesAddedEvent;
+import org.openstreetmap.josm.data.osm.event.PrimitivesRemovedEvent;
+import org.openstreetmap.josm.data.osm.event.RelationMembersChangedEvent;
+import org.openstreetmap.josm.data.osm.event.TagsChangedEvent;
+import org.openstreetmap.josm.data.osm.event.WayNodesChangedEvent;
 import org.openstreetmap.josm.Main;
 
@@ -18,5 +37,5 @@
 import panels.PanelMain;
 
-public class Smed2Action extends JosmAction {
+public class Smed2Action extends JosmAction implements EditLayerChangeListener, SelectionChangedListener {
 
 	private static final long serialVersionUID = 1L;
@@ -28,6 +47,51 @@
 	public ImageryLayer rendering;
 
+	private final DataSetListener dataSetListener = new DataSetListener() {
+
+		@Override
+		public void dataChanged(DataChangedEvent e) {
+			System.out.println(e);
+		}
+
+		@Override
+		public void nodeMoved(NodeMovedEvent e) {
+			System.out.println(e);
+		}
+
+		@Override
+		public void otherDatasetChange(AbstractDatasetChangedEvent e) {
+			System.out.println(e);
+		}
+
+		@Override
+		public void primitivesAdded(PrimitivesAddedEvent e) {
+			System.out.println(e);
+		}
+
+		@Override
+		public void primitivesRemoved(PrimitivesRemovedEvent e) {
+			System.out.println(e);
+		}
+
+		@Override
+		public void relationMembersChanged(RelationMembersChangedEvent e) {
+			System.out.println(e);
+		}
+
+		@Override
+		public void tagsChanged(TagsChangedEvent e) {
+			System.out.println(e);
+		}
+
+		@Override
+		public void wayNodesChanged(WayNodesChangedEvent e) {
+			System.out.println(e);
+		}
+	};
+
 	public Smed2Action() {
 		super(editor, "Smed2", editor, null, true);
+		MapView.addEditLayerChangeListener(this); // DataSet.addDataSetListener(DataListener);
+		DataSet.addSelectionListener(this);
 	}
 
@@ -36,7 +100,9 @@
 		SwingUtilities.invokeLater(new Runnable() {
 			public void run() {
-				if (!isOpen) createFrame();
-				else frame.toFront();
-		        isOpen = true;
+				if (!isOpen)
+					createFrame();
+				else
+					frame.toFront();
+				isOpen = true;
 			}
 		});
@@ -63,7 +129,7 @@
 		panelS57.setVisible(false);
 		frame.add(panelS57);
-System.out.println("hello");
+		System.out.println("hello");
 		rendering = ImageryLayer.create(new ImageryInfo("OpenSeaMap"));
-		Main.main.addLayer(rendering);		
+		Main.main.addLayer(rendering);
 	}
 
@@ -77,3 +143,20 @@
 	}
 
+	@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> arg0) {
+		// TODO Auto-generated method stub
+
+	}
+
 }
