Index: applications/editors/josm/plugins/toms/src/ImagesHowTo.txt
===================================================================
--- applications/editors/josm/plugins/toms/src/ImagesHowTo.txt	(revision 22647)
+++ applications/editors/josm/plugins/toms/src/ImagesHowTo.txt	(revision 22647)
@@ -0,0 +1,8 @@
+The images for the JOSM toms plugin are generated by invoking: ./make_images in a bash shell terminal window from this directory.
+On a Windows PC, this will require the installation of Cygwin. All platforms (Windows-Cygwin, Mac-OS, Linux) require that
+Inkscape has been installed, and its command-line invokation is on the user's PATH.
+
+make_images assumes that both josm/ and openseamap/ are in the same directory.
+
+Running make_images will overwrite existing images of the same name, but will leave all others untouched. If an image file becomes
+obsolete, it must be deleted manually. This allows for images unique to the plugin to co-exist in the directory.
Index: applications/editors/josm/plugins/toms/src/make_images
===================================================================
--- applications/editors/josm/plugins/toms/src/make_images	(revision 22647)
+++ applications/editors/josm/plugins/toms/src/make_images	(revision 22647)
@@ -0,0 +1,2 @@
+for i in ../../../../openseamap/renderer/osmarender/styleshheets/SeaMapSymbols/*.svg; do \
+inkscape $i -d 45 -e `echo $i | sed -e 'sX^../../../../openseamap/renderer/osmarender/styleshheets/SeaMapSymbolsXimagesX' -e 's/.svg$/.png/'`; done
Index: applications/editors/josm/plugins/toms/src/toms/dialogs/SmpDialogAction.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/dialogs/SmpDialogAction.java	(revision 22631)
+++ applications/editors/josm/plugins/toms/src/toms/dialogs/SmpDialogAction.java	(revision 22647)
@@ -168,5 +168,5 @@
 
 	public SmpDialogAction() {
-		super(tr("Edit SeaMap Symbols"), "Smp", tr("Seamark Editor"), Shortcut
+		super(tr("Edit OpenSeaMap"), "Smp", tr("Seamark Editor"), Shortcut
 				.registerShortcut("tools:Semarks",
 						tr("Tool: {0}", tr("Seamark Editor")), KeyEvent.VK_S,
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/SeaMark.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/SeaMark.java	(revision 22631)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/SeaMark.java	(revision 22647)
@@ -79,5 +79,6 @@
 	public final static int SAFE_SPAR = 2;
 	public final static int SAFE_SPHERE = 3;
-	public final static int SAFE_FLOAT = 4;
+	public final static int SAFE_BEACON = 4;
+	public final static int SAFE_FLOAT = 5;
 	public final static int ISOL_PILLAR = 1;
 	public final static int ISOL_SPAR = 2;
@@ -89,4 +90,5 @@
 	public final static int SPEC_SPHERE = 3;
 	public final static int SPEC_BARREL = 4;
+	public final static int SPEC_BEACON = 5;
 	public final static int LIGHT_HOUSE = 1;
 	public final static int LIGHT_MAJOR = 2;
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyNota.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyNota.java	(revision 22631)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyNota.java	(revision 22647)
@@ -73,7 +73,10 @@
 		dlg.cM01TopMark.setSelected(false);
 
-
 		switch (getStyleIndex()) {
 		case SeaMark.LIGHT_HOUSE:
+			dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
+					"/images/Light_House.png")));
+			break;
+
 		case SeaMark.LIGHT_MAJOR:
 			dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySaw.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySaw.java	(revision 22631)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySaw.java	(revision 22647)
@@ -24,4 +24,5 @@
 		dlg.cbM01StyleOfMark.addItem("Spar Buoy");
 		dlg.cbM01StyleOfMark.addItem("Sphere Buoy");
+		dlg.cbM01StyleOfMark.addItem("Beacon");
 		dlg.cbM01StyleOfMark.addItem("Float");
 
@@ -66,4 +67,7 @@
 			image += "_Sphere";
 			break;
+		case SAFE_BEACON:
+			image += "_Beacon";
+			break;
 		case SAFE_FLOAT:
 			image += "_Float";
@@ -119,4 +123,7 @@
 					"seamark:buoy_safe_water:shape", "sphere"));
 			break;
+		case SAFE_BEACON:
+			super.saveSign("beacon_safe_water");
+			break;
 		case SAFE_FLOAT:
 			super.saveSign("light_float");
@@ -124,15 +131,29 @@
 		default:
 		}
-		if (getStyleIndex() == SAFE_FLOAT) {
+
+		switch (getStyleIndex()) {
+		case SAFE_PILLAR:
+		case SAFE_SPAR:
+		case SAFE_SPHERE:
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_safe_water:colour_pattern", "vertical stripes"));
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_safe_water:colour", "red;white"));
+			break;
+		case SAFE_BEACON:
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:beacon_safe_water:colour_pattern", "vertical stripes"));
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:beacon_safe_water:colour", "red;white"));
+			break;
+		case SAFE_FLOAT:
 			Main.main.undoRedo.add(new ChangePropertyCommand(node,
 					"seamark:light_float:colour_pattern", "vertical stripes"));
 			Main.main.undoRedo.add(new ChangePropertyCommand(node,
 					"seamark:light_float:colour", "red;white"));
-		} else {
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
-					"seamark:buoy_safe_water:colour_pattern", "vertical stripes"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(node,
-					"seamark:buoy_safe_water:colour", "red;white"));
-		}
+			break;
+		default:
+		}
+
 		saveTopMarkData("spherical", "red");
 
@@ -229,4 +250,7 @@
 				&& (keys.get("seamark:type").equals("light_float"))) {
 			setStyleIndex(SAFE_FLOAT);
+		} else if ((keys.containsKey("seamark:type") == true)
+				&& (keys.get("seamark:type").equals("beacon_safe_water"))) {
+			setStyleIndex(SAFE_BEACON);
 		}
 
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySpec.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySpec.java	(revision 22631)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySpec.java	(revision 22647)
@@ -24,4 +24,6 @@
 		dlg.cbM01StyleOfMark.addItem("Spar Buoy");
 		dlg.cbM01StyleOfMark.addItem("Sphere Buoy");
+		dlg.cbM01StyleOfMark.addItem("Barrel");
+		dlg.cbM01StyleOfMark.addItem("Beacon");
 
 		dlg.cbM01Kennung.removeAllItems();
@@ -61,4 +63,10 @@
 			image += "_Sphere";
 			break;
+		case SPEC_BARREL:
+			image += "_Barrel";
+			break;
+		case SPEC_BEACON:
+			image += "_Beacon";
+			break;
 		default:
 		}
@@ -95,27 +103,40 @@
 		}
 
-		super.saveSign("buoy_special_purpose");
-
 		switch (getStyleIndex()) {
 		case SPEC_PILLAR:
+			super.saveSign("buoy_special_purpose");
 			Main.main.undoRedo.add(new ChangePropertyCommand(node,
 					"seamark:buoy_special_purpose:shape", "pillar"));
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_special_purpose:colour", "yellow"));
 			break;
 		case SPEC_SPAR:
+			super.saveSign("buoy_special_purpose");
 			Main.main.undoRedo.add(new ChangePropertyCommand(node,
 					"seamark:buoy_special_purpose:shape", "spar"));
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_special_purpose:colour", "yellow"));
 			break;
 		case SPEC_SPHERE:
+			super.saveSign("buoy_special_purpose");
 			Main.main.undoRedo.add(new ChangePropertyCommand(node,
 					"seamark:buoy_special_purpose:shape", "sphere"));
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_special_purpose:colour", "yellow"));
 			break;
 		case SPEC_BARREL:
+			super.saveSign("buoy_special_purpose");
 			Main.main.undoRedo.add(new ChangePropertyCommand(node,
 					"seamark:buoy_special_purpose:shape", "barrel"));
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_special_purpose:colour", "yellow"));
+			break;
+		case SPEC_BEACON:
+			super.saveSign("beacon_special_purpose");
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:beacon_special_purpose:colour", "yellow"));
 			break;
 		default:
 		}
-		Main.main.undoRedo.add(new ChangePropertyCommand(node,
-				"seamark:buoy_special_purpose:colour", "yellow"));
 
 		saveTopMarkData("x-shape", "yellow");
@@ -216,5 +237,7 @@
 		}
 
-		return ret;
+		if (keys.containsKey("seamark:beacon_special_purpose"))
+			setStyleIndex(SPEC_BEACON);
+			return ret;
 	}
 
