Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelHaz.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelHaz.java	(revision 24847)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelHaz.java	(revision 24848)
@@ -57,6 +57,8 @@
 			public void actionPerformed(java.awt.event.ActionEvent e) {
 				if (northButton.isSelected()) {
-					if (!(dlg.mark instanceof MarkCard))
-						dlg.mark = new MarkCard(dlg);
+					if (!(dlg.mark instanceof MarkCard)) {
+						dlg.mark = new MarkCard(dlg);
+						alShape.actionPerformed(null);
+					}
 					dlg.mark.setCategory(Cat.CARD_NORTH);
 					dlg.mark.setColour(Col.BLACK_YELLOW);
@@ -68,6 +70,8 @@
 				}
 				if (southButton.isSelected()) {
-					if (!(dlg.mark instanceof MarkCard))
-						dlg.mark = new MarkCard(dlg);
+					if (!(dlg.mark instanceof MarkCard)) {
+						dlg.mark = new MarkCard(dlg);
+						alShape.actionPerformed(null);
+					}
 					dlg.mark.setCategory(Cat.CARD_SOUTH);
 					dlg.mark.setColour(Col.YELLOW_BLACK);
@@ -79,6 +83,8 @@
 				}
 				if (eastButton.isSelected()) {
-					if (!(dlg.mark instanceof MarkCard))
-						dlg.mark = new MarkCard(dlg);
+					if (!(dlg.mark instanceof MarkCard)) {
+						dlg.mark = new MarkCard(dlg);
+						alShape.actionPerformed(null);
+					}
 					dlg.mark.setCategory(Cat.CARD_EAST);
 					dlg.mark.setColour(Col.BLACK_YELLOW_BLACK);
@@ -90,6 +96,8 @@
 				}
 				if (westButton.isSelected()) {
-					if (!(dlg.mark instanceof MarkCard))
-						dlg.mark = new MarkCard(dlg);
+					if (!(dlg.mark instanceof MarkCard)) {
+						dlg.mark = new MarkCard(dlg);
+						alShape.actionPerformed(null);
+					}
 					dlg.mark.setCategory(Cat.CARD_WEST);
 					dlg.mark.setColour(Col.YELLOW_BLACK_YELLOW);
@@ -101,6 +109,8 @@
 				}
 				if (isolButton.isSelected()) {
-					if (!(dlg.mark instanceof MarkIsol))
+					if (!(dlg.mark instanceof MarkIsol)) {
 						dlg.mark = new MarkIsol(dlg);
+						alShape.actionPerformed(null);
+					}
 					dlg.mark.setColour(Col.BLACK_RED_BLACK);
 					dlg.panelMain.panelTop.spheres2TopButton.doClick();
@@ -163,4 +173,6 @@
 					towerButton.setBorderPainted(false);
 				}
+				if (dlg.mark != null)
+					dlg.mark.paintSign();
 			}
 		};
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLights.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLights.java	(revision 24847)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLights.java	(revision 24848)
@@ -19,4 +19,5 @@
 import oseam.Messages;
 import oseam.dialogs.OSeaMAction;
+import oseam.seamarks.SeaMark.Cat;
 
 import java.awt.Cursor;
@@ -49,9 +50,34 @@
 		ActionListener alCat = new ActionListener() {
 			public void actionPerformed(java.awt.event.ActionEvent e) {
-				houseButton.setBorderPainted(houseButton.isSelected());
-				majorButton.setBorderPainted(majorButton.isSelected());
-				minorButton.setBorderPainted(minorButton.isSelected());
-				vesselButton.setBorderPainted(vesselButton.isSelected());
-				floatButton.setBorderPainted(floatButton.isSelected());
+				if (houseButton.isSelected()) {
+					dlg.mark.setCategory(Cat.LIGHT_HOUSE);
+					houseButton.setBorderPainted(true);
+				} else {
+					houseButton.setBorderPainted(false);
+				}
+				if (majorButton.isSelected()) {
+					dlg.mark.setCategory(Cat.LIGHT_MAJOR);
+					majorButton.setBorderPainted(true);
+				} else {
+					majorButton.setBorderPainted(false);
+				}
+				if (minorButton.isSelected()) {
+					dlg.mark.setCategory(Cat.LIGHT_MINOR);
+					minorButton.setBorderPainted(true);
+				} else {
+					minorButton.setBorderPainted(false);
+				}
+				if (vesselButton.isSelected()) {
+					dlg.mark.setCategory(Cat.LIGHT_VESSEL);
+					vesselButton.setBorderPainted(true);
+				} else {
+					vesselButton.setBorderPainted(false);
+				}
+				if (floatButton.isSelected()) {
+					dlg.mark.setCategory(Cat.LIGHT_FLOAT);
+					floatButton.setBorderPainted(true);
+				} else {
+					floatButton.setBorderPainted(false);
+				}
 				if (dlg.mark != null)
 					dlg.mark.paintSign();
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSpec.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSpec.java	(revision 24847)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSpec.java	(revision 24848)
@@ -7,20 +7,15 @@
 
 import java.awt.Color;
-import java.awt.Dimension;
 import java.awt.Rectangle;
-import java.awt.Font;
 
 import javax.swing.ButtonGroup;
 import javax.swing.ImageIcon;
-import javax.swing.JLabel;
-import javax.swing.JTextField;
-import javax.swing.JComboBox;
-import javax.swing.JCheckBox;
 import javax.swing.JRadioButton;
 
 import oseam.Messages;
 import oseam.dialogs.OSeaMAction;
-
-import java.awt.Cursor;
+import oseam.seamarks.SeaMark.Shp;
+import oseam.seamarks.SeaMark.Col;
+
 import java.awt.event.ActionListener;
 
@@ -71,14 +66,64 @@
 		ActionListener alShape = new ActionListener() {
 			public void actionPerformed(java.awt.event.ActionEvent e) {
-				pillarButton.setBorderPainted(pillarButton.isSelected());
-				sparButton.setBorderPainted(sparButton.isSelected());
-				canButton.setBorderPainted(canButton.isSelected());
-				coneButton.setBorderPainted(coneButton.isSelected());
-				sphereButton.setBorderPainted(sphereButton.isSelected());
-				barrelButton.setBorderPainted(barrelButton.isSelected());
-				superButton.setBorderPainted(superButton.isSelected());
-				floatButton.setBorderPainted(floatButton.isSelected());
-				beaconButton.setBorderPainted(beaconButton.isSelected());
-				towerButton.setBorderPainted(towerButton.isSelected());
+				if (pillarButton.isSelected()) {
+					dlg.mark.setShape(Shp.PILLAR);
+					pillarButton.setBorderPainted(true);
+				} else {
+					pillarButton.setBorderPainted(false);
+				}
+				if (sparButton.isSelected()) {
+					dlg.mark.setShape(Shp.SPAR);
+					sparButton.setBorderPainted(true);
+				} else {
+					sparButton.setBorderPainted(false);
+				}
+				if (canButton.isSelected()) {
+					dlg.mark.setShape(Shp.CAN);
+					canButton.setBorderPainted(true);
+				} else {
+					canButton.setBorderPainted(false);
+				}
+				if (coneButton.isSelected()) {
+					dlg.mark.setShape(Shp.CONE);
+					coneButton.setBorderPainted(true);
+				} else {
+					coneButton.setBorderPainted(false);
+				}
+				if (sphereButton.isSelected()) {
+					dlg.mark.setShape(Shp.SPHERE);
+					sphereButton.setBorderPainted(true);
+				} else {
+					sphereButton.setBorderPainted(false);
+				}
+				if (barrelButton.isSelected()) {
+					dlg.mark.setShape(Shp.BARREL);
+					barrelButton.setBorderPainted(true);
+				} else {
+					barrelButton.setBorderPainted(false);
+				}
+				if (superButton.isSelected()) {
+					dlg.mark.setShape(Shp.SUPER);
+					superButton.setBorderPainted(true);
+				} else {
+					superButton.setBorderPainted(false);
+				}
+				if (floatButton.isSelected()) {
+					dlg.mark.setShape(Shp.FLOAT);
+					floatButton.setBorderPainted(true);
+				} else {
+					floatButton.setBorderPainted(false);
+				}
+				if (beaconButton.isSelected()) {
+					dlg.mark.setShape(Shp.BEACON);
+					beaconButton.setBorderPainted(true);
+				} else {
+					beaconButton.setBorderPainted(false);
+				}
+				if (towerButton.isSelected()) {
+					dlg.mark.setShape(Shp.TOWER);
+					towerButton.setBorderPainted(true);
+				} else {
+					towerButton.setBorderPainted(false);
+				}
 				if (dlg.mark != null)
 					dlg.mark.paintSign();
@@ -95,5 +140,4 @@
 		beaconButton.addActionListener(alShape);
 		towerButton.addActionListener(alShape);
-
 	}
 
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkIsol.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkIsol.java	(revision 24847)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkIsol.java	(revision 24848)
@@ -73,38 +73,31 @@
 
 	public void paintSign() {
-		/*
-		 * if (dlg.paintlock) return;
-		 * 
-		 * super.paintSign();
-		 */
-		if ((getCategory() != Cat.UNKNOWN) && (getShape() != Shp.UNKNOWN)) {
+		String image = "/images/Cardinal";
 
-			String image = "/images/Cardinal";
+		switch (getShape()) {
+		case PILLAR:
+			image += "_Pillar_Single";
+			break;
+		case SPAR:
+			image += "_Spar_Single";
+			break;
+		case BEACON:
+			image += "_Beacon_Single";
+			break;
+		case TOWER:
+			image += "_Tower_Single";
+			break;
+		case FLOAT:
+			image += "_Float_Single";
+			break;
+		default:
+		}
 
-			switch (getShape()) {
-			case PILLAR:
-				image += "_Pillar_Single";
-				break;
-			case SPAR:
-				image += "_Spar_Single";
-				break;
-			case BEACON:
-				image += "_Beacon_Single";
-				break;
-			case TOWER:
-				image += "_Tower_Single";
-				break;
-			case FLOAT:
-				image += "_Float_Single";
-				break;
-			default:
-			}
-
-			if (!image.equals("/images/Cardinal")) {
-				image += ".png";
-				dlg.panelMain.shapeIcon.setIcon(new ImageIcon(getClass().getResource(image)));
-			} else
-				dlg.panelMain.shapeIcon.setIcon(null);
-		}
+		if (!image.equals("/images/Cardinal")) {
+			image += ".png";
+			dlg.panelMain.shapeIcon.setIcon(new ImageIcon(getClass().getResource(image)));
+		} else
+			dlg.panelMain.shapeIcon.setIcon(null);
+		super.paintSign();
 	}
 
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkLat.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkLat.java	(revision 24847)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkLat.java	(revision 24848)
@@ -169,7 +169,4 @@
 
 	public void paintSign() {
-		/*
-		 * if (dlg.paintlock) return; super.paintSign();
-		 */
 		boolean region = getRegion();
 		Shp style = getShape();
@@ -470,4 +467,5 @@
 		} else
 			dlg.panelMain.shapeIcon.setIcon(null);
+		super.paintSign();
 	}
 
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkLight.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkLight.java	(revision 24847)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkLight.java	(revision 24848)
@@ -55,29 +55,26 @@
 
 	public void paintSign() {
-		/*
-		 * if (dlg.paintlock) return; super.paintSign();
-		 */
-		if (getCategory() != Cat.UNKNOWN) {
+		switch (getCategory()) {
+		case LIGHT_HOUSE:
+			dlg.panelMain.shapeIcon.setIcon(new ImageIcon(getClass().getResource("/images/Light_House.png")));
+			break;
 
-			switch (getCategory()) {
-			case LIGHT_HOUSE:
-				dlg.panelMain.shapeIcon.setIcon(new ImageIcon(getClass().getResource("/images/Light_House.png")));
-				break;
+		case LIGHT_MAJOR:
+			dlg.panelMain.shapeIcon.setIcon(new ImageIcon(getClass().getResource("/images/Light_Major.png")));
+			break;
 
-			case LIGHT_MAJOR:
-				dlg.panelMain.shapeIcon.setIcon(new ImageIcon(getClass().getResource("/images/Light_Major.png")));
-				break;
+		case LIGHT_MINOR:
+			dlg.panelMain.shapeIcon.setIcon(new ImageIcon(getClass().getResource("/images/Light_Minor.png")));
+			break;
 
-			case LIGHT_MINOR:
-				dlg.panelMain.shapeIcon.setIcon(new ImageIcon(getClass().getResource("/images/Light_Minor.png")));
-				break;
+		case LIGHT_VESSEL:
+			dlg.panelMain.shapeIcon.setIcon(new ImageIcon(getClass().getResource("/images/Float_Major.png")));
+			break;
 
-			case LIGHT_VESSEL:
-				dlg.panelMain.shapeIcon.setIcon(new ImageIcon(getClass().getResource("/images/Major_Float.png")));
-				break;
-
-			default:
-			}
+		case LIGHT_FLOAT:
+			dlg.panelMain.shapeIcon.setIcon(new ImageIcon(getClass().getResource("/images/Float_Minor.png")));
+			break;
 		}
+		super.paintSign();
 	}
 
@@ -100,4 +97,7 @@
 			super.saveSign("light_vessel");
 			break;
+		case LIGHT_FLOAT:
+			super.saveSign("light_float");
+			break;
 		default:
 		}
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkSaw.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkSaw.java	(revision 24847)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkSaw.java	(revision 24848)
@@ -81,7 +81,5 @@
 	 */
 	public void paintSign() {
-		/*
-		 * if (dlg.paintlock) return; super.paintSign();
-		 */
+
 		String image = "/images/Safe_Water";
 
@@ -133,4 +131,5 @@
 			dlg.panelMain.topIcon.setIcon(null);
 		}
+		super.paintSign();
 	}
 
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkSpec.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkSpec.java	(revision 24847)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkSpec.java	(revision 24848)
@@ -95,73 +95,68 @@
 
 	public void paintSign() {
-		/*
-		 * if (dlg.paintlock) return; super.paintSign();
-		 */
-		if ((getCategory() != Cat.UNKNOWN) && (getShape() != Shp.UNKNOWN)) {
-
-			String image = "/images/Special_Purpose";
-
-			switch (getShape()) {
-			case PILLAR:
-				image += "_Pillar";
-				break;
-			case CAN:
-				image += "_Can";
-				break;
-			case CONE:
-				image += "_Cone";
-				break;
-			case SPAR:
-				image += "_Spar";
-				break;
-			case SPHERE:
-				image += "_Sphere";
-				break;
-			case BARREL:
-				image += "_Barrel";
-				break;
-			case FLOAT:
-				image += "_Float";
-				break;
-			case BEACON:
-				image += "_Beacon";
-				break;
-			case TOWER:
-				image += "_Tower";
-				break;
-			default:
-			}
-
-			if (!image.equals("/images/Special_Purpose")) {
-				image += ".png";
-				dlg.panelMain.topIcon.setIcon(new ImageIcon(getClass().getResource(image)));
-				/*
-				 * if (hasTopMark()) { image = ""; switch (getShape()) { case PILLAR:
-				 * case SPAR: switch (getTopMarkIndex()) { case TOP_YELLOW_X: image =
-				 * "/images/Top_X_Yellow_Buoy.png"; break; case TOP_RED_X: image =
-				 * "/images/Top_X_Red_Buoy.png"; break; case TOP_YELLOW_CAN: image =
-				 * "/images/Top_Can_Yellow_Buoy.png"; break; case TOP_YELLOW_CONE: image
-				 * = "/images/Top_Cone_Yellow_Buoy.png"; break; } break; case CAN: case
-				 * CONE: case SPHERE: case BARREL: switch (getTopMarkIndex()) { case
-				 * TOP_YELLOW_X: image = "/images/Top_X_Yellow_Buoy_Small.png"; break;
-				 * case TOP_RED_X: image = "/images/Top_X_Red_Buoy_Small.png"; break;
-				 * case TOP_YELLOW_CAN: image = "/images/Top_Can_Yellow_Buoy_Small.png";
-				 * break; case TOP_YELLOW_CONE: image =
-				 * "/images/Top_Cone_Yellow_Buoy_Small.png"; break; } break; case
-				 * BEACON: case TOWER: switch (getTopMarkIndex()) { case TOP_YELLOW_X:
-				 * image = "/images/Top_X_Yellow_Beacon.png"; break; case TOP_RED_X:
-				 * image = "/images/Top_X_Red_Beacon.png"; break; case TOP_YELLOW_CAN:
-				 * image = "/images/Top_Can_Yellow_Beacon.png"; break; case
-				 * TOP_YELLOW_CONE: image = "/images/Top_Cone_Yellow_Beacon.png"; break;
-				 * } break; case FLOAT: switch (getTopMarkIndex()) { case TOP_YELLOW_X:
-				 * image = "/images/Top_X_Yellow_Float.png"; break; case TOP_RED_X:
-				 * image = "/images/Top_X_Red_Float.png"; break; case TOP_YELLOW_CAN:
-				 * image = "/images/Top_Can_Yellow_Float.png"; break; case
-				 * TOP_YELLOW_CONE: image = "/images/Top_Cone_Yellow_Float.png"; break;
-				 * } break; } if (!image.isEmpty()) dlg.lM06Icon.setIcon(new
-				 * ImageIcon(getClass().getResource(image))); }
-				 */} else
-				dlg.panelMain.shapeIcon.setIcon(null);
+
+		String image = "/images/Special_Purpose";
+
+		switch (getShape()) {
+		case PILLAR:
+			image += "_Pillar";
+			break;
+		case CAN:
+			image += "_Can";
+			break;
+		case CONE:
+			image += "_Cone";
+			break;
+		case SPAR:
+			image += "_Spar";
+			break;
+		case SPHERE:
+			image += "_Sphere";
+			break;
+		case BARREL:
+			image += "_Barrel";
+			break;
+		case FLOAT:
+			image += "_Float";
+			break;
+		case BEACON:
+			image += "_Beacon";
+			break;
+		case TOWER:
+			image += "_Tower";
+			break;
 		}
+
+		if (!image.equals("/images/Special_Purpose")) {
+			image += ".png";
+			dlg.panelMain.topIcon.setIcon(new ImageIcon(getClass().getResource(image)));
+			/*
+			 * if (hasTopMark()) { image = ""; switch (getShape()) { case PILLAR: case
+			 * SPAR: switch (getTopMarkIndex()) { case TOP_YELLOW_X: image =
+			 * "/images/Top_X_Yellow_Buoy.png"; break; case TOP_RED_X: image =
+			 * "/images/Top_X_Red_Buoy.png"; break; case TOP_YELLOW_CAN: image =
+			 * "/images/Top_Can_Yellow_Buoy.png"; break; case TOP_YELLOW_CONE: image =
+			 * "/images/Top_Cone_Yellow_Buoy.png"; break; } break; case CAN: case
+			 * CONE: case SPHERE: case BARREL: switch (getTopMarkIndex()) { case
+			 * TOP_YELLOW_X: image = "/images/Top_X_Yellow_Buoy_Small.png"; break;
+			 * case TOP_RED_X: image = "/images/Top_X_Red_Buoy_Small.png"; break; case
+			 * TOP_YELLOW_CAN: image = "/images/Top_Can_Yellow_Buoy_Small.png"; break;
+			 * case TOP_YELLOW_CONE: image = "/images/Top_Cone_Yellow_Buoy_Small.png";
+			 * break; } break; case BEACON: case TOWER: switch (getTopMarkIndex()) {
+			 * case TOP_YELLOW_X: image = "/images/Top_X_Yellow_Beacon.png"; break;
+			 * case TOP_RED_X: image = "/images/Top_X_Red_Beacon.png"; break; case
+			 * TOP_YELLOW_CAN: image = "/images/Top_Can_Yellow_Beacon.png"; break;
+			 * case TOP_YELLOW_CONE: image = "/images/Top_Cone_Yellow_Beacon.png";
+			 * break; } break; case FLOAT: switch (getTopMarkIndex()) { case
+			 * TOP_YELLOW_X: image = "/images/Top_X_Yellow_Float.png"; break; case
+			 * TOP_RED_X: image = "/images/Top_X_Red_Float.png"; break; case
+			 * TOP_YELLOW_CAN: image = "/images/Top_Can_Yellow_Float.png"; break; case
+			 * TOP_YELLOW_CONE: image = "/images/Top_Cone_Yellow_Float.png"; break; }
+			 * break; } if (!image.isEmpty()) dlg.lM06Icon.setIcon(new
+			 * ImageIcon(getClass().getResource(image))); }
+			 */
+		} else
+			dlg.panelMain.shapeIcon.setIcon(null);
+		super.paintSign();
 	}
 
