Index: applications/editors/josm/plugins/toms/src/toms/dialogs/SmpDialogAction.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/dialogs/SmpDialogAction.java	(revision 22737)
+++ applications/editors/josm/plugins/toms/src/toms/dialogs/SmpDialogAction.java	(revision 22746)
@@ -89,4 +89,5 @@
 							SelNode = node;
 							parseSeaMark();
+							buoy.paintSign();
 						}
 				}
@@ -271,5 +272,4 @@
 			buoy = new BuoyUkn(this, "active layer contains no OSM data");
 			buoy.setNode(null);
-			buoy.paintSign();
 			return;
 		}
@@ -281,5 +281,4 @@
 			buoy = new BuoyUkn(this, "Please select a node");
 			buoy.setNode(null);
-			buoy.paintSign();
 			return;
 		}
@@ -288,5 +287,4 @@
 			buoy = new BuoyUkn(this, "Please select only one node");
 			buoy.setNode(null);
-			buoy.paintSign();
 			return;
 		}
@@ -335,5 +333,4 @@
 					|| keys.containsKey("seamark:beacon_lateral:colour")) {
 				buoy = new BuoyLat(this, node);
-				buoy.paintSign();
 				return;
 
@@ -346,5 +343,4 @@
 					|| keys.containsKey("seamark:beacon_cardinal:colour")) {
 				buoy = new BuoyCard(this, node);
-				buoy.paintSign();
 				return;
 
@@ -356,5 +352,4 @@
 					|| keys.containsKey("seamark:beacon_safe_water:colour")) {
 				buoy = new BuoySaw(this, node);
-				buoy.paintSign();
 				return;
 
@@ -366,5 +361,4 @@
 					|| keys.containsKey("seamark:beacon_special_purpose:colour")) {
 				buoy = new BuoySpec(this, node);
-				buoy.paintSign();
 				return;
 
@@ -376,5 +370,4 @@
 					|| keys.containsKey("seamark:beacon_isolated_danger:colour")) {
 				buoy = new BuoyIsol(this, node);
-				buoy.paintSign();
 				return;
 
@@ -385,5 +378,4 @@
 							|| str.equals("red;green;red") || str.equals("green;red;green")) {
 						buoy = new BuoyLat(this, node);
-						buoy.paintSign();
 						return;
 					} else if (str.equals("black;yellow")
@@ -391,22 +383,17 @@
 							|| str.equals("yellow;black;yellow")) {
 						buoy = new BuoyCard(this, node);
-						buoy.paintSign();
 						return;
 					} else if (str.equals("black;red;black")) {
 						buoy = new BuoyIsol(this, node);
-						buoy.paintSign();
 						return;
 					} else if (str.equals("red;white")) {
 						buoy = new BuoySaw(this, node);
-						buoy.paintSign();
 						return;
 					} else if (str.equals("yellow")) {
 						buoy = new BuoySaw(this, node);
-						buoy.paintSign();
 						return;
 					} else {
 						buoy = new BuoyUkn(this, "Parse-Error: Invalid colour");
 						buoy.setNode(node);
-						buoy.paintSign();
 						return;
 					}
@@ -415,5 +402,4 @@
 					if (str.equals("cylinder") || str.equals("cone, point up")) {
 						buoy = new BuoyLat(this, node);
-						buoy.paintSign();
 						return;
 					}
@@ -422,5 +408,4 @@
 					if (str.equals("red") || str.equals("green")) {
 						buoy = new BuoyLat(this, node);
-						buoy.paintSign();
 						return;
 					}
@@ -431,5 +416,4 @@
 		buoy = new BuoyUkn(this, "Seamark not set");
 		buoy.setNode(node);
-		buoy.paintSign();
 		return;
 	}
@@ -464,4 +448,5 @@
 
 					parseSeaMark();
+					buoy.paintSign();
 				}
 
@@ -589,5 +574,4 @@
 					if (buoy == null) {
 						buoy = new BuoyUkn(dia, "Seamark not set");
-						buoy.paintSign();
 						return;
 					}
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java	(revision 22737)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java	(revision 22746)
@@ -220,4 +220,5 @@
 
 	public void paintSign() {
+		
 		dlg.cbM01TypeOfMark.setEnabled(true);
 		dlg.cbM01StyleOfMark.setEnabled(true);
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyIsol.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyIsol.java	(revision 22737)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyIsol.java	(revision 22746)
@@ -81,9 +81,7 @@
 		}
 
-		if (keys.containsKey("seamark:topmark:shape")) {
-			str = keys.get("seamark:topmark:shape");
-			if (str.equals("2 spheres")) {
+		if (keys.containsKey("seamark:topmark:shape")
+				|| keys.containsKey("seamark:topmark:colour")) {
 				setTopMark(true);
-			}
 		}
 
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyLat.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyLat.java	(revision 22737)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyLat.java	(revision 22746)
@@ -168,6 +168,4 @@
 		}
 
-		refreshStyles();
-
 		if (keys.containsKey("seamark:buoy_lateral:shape")) {
 			str = keys.get("seamark:buoy_lateral:shape");
@@ -224,34 +222,9 @@
 		}
 
-		if (keys.containsKey("seamark:topmark:shape")) {
-			str = keys.get("seamark:topmark:shape");
-
-			switch (getBuoyIndex()) {
-			case PORT_HAND:
-			case PREF_PORT_HAND:
-				if (str.equals("cylinder")) {
-					setTopMark(true);
-					setRegion(IALA_A);
-				} else if (str.equals("cone, point up")) {
-					setTopMark(true);
-					setRegion(IALA_B);
-				} else {
-					setTopMark(false);
-				}
-				break;
-
-			case STARBOARD_HAND:
-			case PREF_STARBOARD_HAND:
-				if (str.equals("cone, point up")) {
-					setTopMark(true);
-					setRegion(IALA_A);
-				} else if (str.equals("cylinder")) {
-					setTopMark(true);
-					setRegion(IALA_B);
-				} else {
-					setTopMark(false);
-				}
-				break;
-			}
+		refreshStyles();
+
+		if (keys.containsKey("seamark:topmark:shape")
+				|| keys.containsKey("seamark:topmark:colour")) {
+			setTopMark(true);
 		}
 
@@ -321,5 +294,4 @@
 		setStyleIndex(style);
 		dlg.cbM01StyleOfMark.setSelectedIndex(style);
-
 	}
 
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySaw.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySaw.java	(revision 22737)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySaw.java	(revision 22746)
@@ -95,10 +95,7 @@
 		}
 
-		if (keys.containsKey("seamark:topmark:shape")) {
-			str = keys.get("seamark:topmark:shape");
-
-			if (str.equals("spherical") || str.equals("sphere")) {
+		if (keys.containsKey("seamark:topmark:shape")
+				|| keys.containsKey("seamark:topmark:colour")) {
 				setTopMark(true);
-			}
 		}
 	}
