Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelChan.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelChan.java	(revision 24880)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelChan.java	(revision 24881)
@@ -28,4 +28,7 @@
 
 	private OSeaMAction dlg;
+	public PanelPort panelPort = null;
+	public PanelStbd panelStbd = null;
+	public PanelSaw panelSaw = null;
 	private ButtonGroup catButtons = new ButtonGroup();
 	public JRadioButton portButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PortButton.png")));
@@ -123,8 +126,4 @@
 	};
 
-	public PanelPort panelPort = null;
-	public PanelStbd panelStbd = null;
-	public PanelSaw panelSaw = null;
-
 	public PanelChan(OSeaMAction dia) {
 		dlg = dia;
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelTop.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelTop.java	(revision 24880)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelTop.java	(revision 24881)
@@ -47,5 +47,5 @@
 				JRadioButton button = tops.get(top);
 				if (button.isSelected()) {
-					dlg.mark.setTopMark(top);
+					dlg.mark.setTopmark(top);
 					button.setBorderPainted(true);
 				} else
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkCard.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkCard.java	(revision 24880)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkCard.java	(revision 24881)
@@ -179,5 +179,4 @@
 		default:
 		}
-
 		switch (getShape()) {
 		case PILLAR:
@@ -189,5 +188,4 @@
 				shape = "2 cones up";
 				break;
-
 			case CARD_EAST:
 				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_cardinal:category", "east"));
@@ -195,5 +193,4 @@
 				shape = "2 cones base together";
 				break;
-
 			case CARD_SOUTH:
 				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_cardinal:category", "south"));
@@ -201,5 +198,4 @@
 				shape = "2 cones down";
 				break;
-
 			case CARD_WEST:
 				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_cardinal:category", "west"));
@@ -210,5 +206,4 @@
 			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_cardinal:colour_pattern", "horizontal stripes"));
 			break;
-
 		case BEACON:
 		case TOWER:
@@ -219,5 +214,4 @@
 				shape = "2 cones up";
 				break;
-
 			case CARD_EAST:
 				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_cardinal:category", "east"));
@@ -225,5 +219,4 @@
 				shape = "2 cones base together";
 				break;
-
 			case CARD_SOUTH:
 				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_cardinal:category", "south"));
@@ -231,5 +224,4 @@
 				shape = "2 cones down";
 				break;
-
 			case CARD_WEST:
 				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_cardinal:category", "west"));
@@ -240,5 +232,4 @@
 			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_cardinal:colour_pattern", "horizontal stripes"));
 			break;
-
 		case FLOAT:
 			switch (getCategory()) {
@@ -247,15 +238,12 @@
 				shape = "2 cones up";
 				break;
-
 			case CARD_EAST:
 				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light_float:colour", "black;yellow;black"));
 				shape = "2 cones base together";
 				break;
-
 			case CARD_SOUTH:
 				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light_float:colour", "yellow;black"));
 				shape = "2 cones down";
 				break;
-
 			case CARD_WEST:
 				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light_float:colour", "yellow;black;yellow"));
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 24880)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkIsol.java	(revision 24881)
@@ -109,5 +109,4 @@
 		else
 			super.saveSign();
-
 		switch (getShape()) {
 		case PILLAR:
@@ -131,5 +130,4 @@
 		default:
 		}
-
 		switch (getShape()) {
 		case PILLAR:
@@ -150,5 +148,4 @@
 			break;
 		}
-
 		Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:topmark:shape", "2 spheres"));
 		Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:topmark:colour", "black"));
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 24880)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkLat.java	(revision 24881)
@@ -384,5 +384,5 @@
 			dlg.panelMain.shapeIcon.setIcon(new ImageIcon(getClass().getResource(image)));
 
-			if (hasTopMark()) {
+			if (hasTopmark()) {
 				image = "";
 				switch (getCategory()) {
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 24880)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkLight.java	(revision 24881)
@@ -108,6 +108,3 @@
 	}
 
-	public void setLightColour() {
-	}
-
 }
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 24880)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkSaw.java	(revision 24881)
@@ -106,5 +106,5 @@
 			image += ".png";
 			dlg.panelMain.shapeIcon.setIcon(new ImageIcon(getClass().getResource(image)));
-			if (hasTopMark()) {
+			if (hasTopmark()) {
 				image = "";
 				switch (getShape()) {
@@ -161,5 +161,4 @@
 		default:
 		}
-
 		switch (getShape()) {
 		case PILLAR:
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 24880)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkSpec.java	(revision 24881)
@@ -172,56 +172,106 @@
 			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_special_purpose"));
 			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_special_purpose:shape", "pillar"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_special_purpose:colour", "yellow"));
+			saveColour(Obj.BUOY);
 			break;
 		case SPAR:
 			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_special_purpose"));
 			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_special_purpose:shape", "spar"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_special_purpose:colour", "yellow"));
+			saveColour(Obj.BUOY);
 			break;
 		case CAN:
 			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_special_purpose"));
 			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_special_purpose:shape", "can"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_special_purpose:colour", "yellow"));
+			saveColour(Obj.BUOY);
 			break;
 		case CONE:
 			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_special_purpose"));
 			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_special_purpose:shape", "conical"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_special_purpose:colour", "yellow"));
+			saveColour(Obj.BUOY);
 			break;
 		case SPHERE:
 			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_special_purpose"));
 			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_special_purpose:shape", "sphere"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_special_purpose:colour", "yellow"));
+			saveColour(Obj.BUOY);
 			break;
 		case BARREL:
 			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_special_purpose"));
 			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_special_purpose:shape", "barrel"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_special_purpose:colour", "yellow"));
+			saveColour(Obj.BUOY);
+			break;
+		case SUPER:
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "buoy_special_purpose"));
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:buoy_special_purpose:shape", "super-buoy"));
+			saveColour(Obj.BUOY);
 			break;
 		case FLOAT:
 			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "light_float"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light_float:colour", "yellow"));
+			saveColour(Obj.FLOAT);
 			break;
 		case BEACON:
 			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "beacon_special_purpose"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_special_purpose:colour", "yellow"));
+			saveColour(Obj.BEACON);
 			break;
 		case TOWER:
 			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:type", "beacon_special_purpose"));
 			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_special_purpose:shape", "tower"));
-			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:beacon_special_purpose:colour", "yellow"));
+			saveColour(Obj.BEACON);
 			break;
 		default:
 		}
-		/*
-		 * switch (getTopMarkIndex()) { case TOP_YELLOW_X:
-		 * saveTopMarkData("x-shape", "yellow"); break; case TOP_RED_X:
-		 * saveTopMarkData("x-shape", "red"); break; case TOP_YELLOW_CAN:
-		 * saveTopMarkData("cylinder", "yellow"); break; case TOP_YELLOW_CONE:
-		 * saveTopMarkData("cone, point up", "yellow"); break; }
-		 * Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node,
-		 * "seamark:topmark:shape", shape)); Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(dlg.node, "seamark:topmark:colour", "yellow"));
-		 */
+		if (hasTopmark()) {
+			switch (getTopmark()) {
+			case X_SHAPE:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:topmark:shape", "x-shape"));
+				break;
+			}
+			saveColour(Obj.TOPMARK);
+		}
+	}
+	
+	private void saveColour(Obj obj) {
+		String str = "";
+		switch (obj) {
+		case BUOY:
+			str = "seamark:buoy_special_purpose:colour";
+			break;
+		case BEACON:
+			str = "seamark:beacon_special_purpose:colour";
+			break;
+		case FLOAT:
+			str = "seamark:light_float:colour";
+			break;
+		case TOPMARK:
+			str = "seamark:topmark:colour";
+			break;
+		}
+		switch (getColour(obj)) {
+		case WHITE:
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, str, "white"));
+			break;
+		case RED:
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, str, "red"));
+			break;
+		case ORANGE:
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, str, "orange"));
+			break;
+		case AMBER:
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, str, "amber"));
+			break;
+		case YELLOW:
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, str, "yellow"));
+			break;
+		case GREEN:
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, str, "green"));
+			break;
+		case BLUE:
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, str, "blue"));
+			break;
+		case VIOLET:
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, str, "violet"));
+			break;
+		case BLACK:
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, str, "black"));
+			break;
+		}
 	}
 }
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java	(revision 24880)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java	(revision 24881)
@@ -45,11 +45,9 @@
 
 	public enum Col {
-		UNKNOWN, WHITE, RED, ORANGE, AMBER, YELLOW, GREEN, BLUE, VIOLET, BLACK,
-		RED_GREEN_RED, GREEN_RED_GREEN, RED_WHITE,
-		BLACK_YELLOW, BLACK_YELLOW_BLACK, YELLOW_BLACK, YELLOW_BLACK_YELLOW, BLACK_RED_BLACK
+		UNKNOWN, WHITE, RED, ORANGE, AMBER, YELLOW, GREEN, BLUE, VIOLET, BLACK, RED_GREEN_RED, GREEN_RED_GREEN, RED_WHITE, BLACK_YELLOW, BLACK_YELLOW_BLACK, YELLOW_BLACK, YELLOW_BLACK_YELLOW, BLACK_RED_BLACK
 	}
 
 	public enum Obj {
-		BODY, TOPMARK, LIGHT
+		BODY, BUOY, BEACON, FLOAT, TOPMARK, LIGHT
 	}
 
@@ -59,4 +57,7 @@
 		switch (obj) {
 		case BODY:
+		case BUOY:
+		case BEACON:
+		case FLOAT:
 			return bodyColour;
 		case TOPMARK:
@@ -71,4 +72,7 @@
 		switch (obj) {
 		case BODY:
+		case BUOY:
+		case BEACON:
+		case FLOAT:
 			bodyColour = col;
 			break;
@@ -93,7 +97,5 @@
 
 	public enum Cat {
-		UNKNOWN, LAT_PORT, LAT_STBD, LAT_PREF_PORT, LAT_PREF_STBD,
-		CARD_NORTH, CARD_EAST, CARD_SOUTH, CARD_WEST,
-		LIGHT_HOUSE, LIGHT_MAJOR, LIGHT_MINOR, LIGHT_VESSEL, LIGHT_FLOAT
+		UNKNOWN, LAT_PORT, LAT_STBD, LAT_PREF_PORT, LAT_PREF_STBD, CARD_NORTH, CARD_EAST, CARD_SOUTH, CARD_WEST, LIGHT_HOUSE, LIGHT_MAJOR, LIGHT_MINOR, LIGHT_VESSEL, LIGHT_FLOAT
 	}
 
@@ -109,6 +111,5 @@
 
 	public enum Shp {
-		UNKNOWN, PILLAR, SPAR, CAN, CONE, SPHERE, BARREL, FLOAT, SUPER,
-		BEACON, TOWER, STAKE, PERCH
+		UNKNOWN, PILLAR, SPAR, CAN, CONE, SPHERE, BARREL, FLOAT, SUPER, BEACON, TOWER, STAKE, PERCH
 	}
 
@@ -124,17 +125,20 @@
 
 	public enum Top {
-		NONE, CAN, CONE, SPHERE, X_SHAPE, NORTH, SOUTH, EAST, WEST, SPHERES2,
-		BOARD, DIAMOND, TRIANGLE, TRIANGLE_INV, SQUARE, MOORING
-	}
-
-	private Top topMark = Top.NONE;
+		NONE, CAN, CONE, SPHERE, X_SHAPE, NORTH, SOUTH, EAST, WEST, SPHERES2, BOARD, DIAMOND, TRIANGLE, TRIANGLE_INV, SQUARE, MOORING
+	}
+
+	private Top topShape = Top.NONE;
 	private Col topColour = Col.UNKNOWN;
 
-	public boolean hasTopMark() {
-		return (topMark != Top.NONE);
-	}
-
-	public void setTopMark(Top top) {
-		topMark = top;
+	public boolean hasTopmark() {
+		return (topShape != Top.NONE);
+	}
+
+	public Top getTopmark() {
+		return topShape;
+	}
+	
+	public void setTopmark(Top top) {
+		topShape = top;
 	}
 
@@ -642,110 +646,111 @@
 		if (!str.isEmpty())
 			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:name", str));
-		/*
-		 * String colour; if (dlg.cM01Fired.isSelected()) { if (!(colour =
-		 * LightColour[0]).isEmpty()) if (colour.equals("R")) {
-		 * Main.main.undoRedo.add(new ChangePropertyCommand(Node,
-		 * "seamark:light:colour", "red")); } else if (colour.equals("G")) {
-		 * Main.main.undoRedo.add(new ChangePropertyCommand(Node,
-		 * "seamark:light:colour", "green")); } else if (colour.equals("W")) {
-		 * Main.main.undoRedo.add(new ChangePropertyCommand(Node,
-		 * "seamark:light:colour", "white")); }
-		 * 
-		 * if (!LightPeriod[0].isEmpty()) Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:light:period", LightPeriod[0]));
-		 * 
-		 * if (!LightChar[0].isEmpty()) Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:light:character", LightChar[0]));
-		 * 
-		 * if (!LightGroup[0].isEmpty()) Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:light:group", LightGroup[0]));
-		 * 
-		 * if (!Height[0].isEmpty()) Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:light:height", Height[0]));
-		 * 
-		 * if (!Range[0].isEmpty()) Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:light:range", Range[0]));
-		 * 
-		 * for (int i = 1; i < 10; i++) { if ((colour = LightColour[i]) != null) if
-		 * (colour.equals("R")) { Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:light:" + i + ":colour", "red")); if
-		 * ((Bearing1[i] != null) && (Bearing2[i] != null) && (Radius[i] != null))
-		 * Main.main.undoRedo.add(new ChangePropertyCommand(Node, "seamark:light:" +
-		 * i, "red:" + Bearing1[i] + ":" + Bearing2[i] + ":" + Radius[i])); } else
-		 * if (colour.equals("G")) { Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:light:" + i + ":colour", "green"));
-		 * if ((Bearing1[i] != null) && (Bearing2[i] != null) && (Radius[i] !=
-		 * null)) Main.main.undoRedo.add(new ChangePropertyCommand(Node,
-		 * "seamark:light:" + i, "green:" + Bearing1[i] + ":" + Bearing2[i] + ":" +
-		 * Radius[i])); } else if (colour.equals("W")) { Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:light:" + i + ":colour", "white"));
-		 * if ((Bearing1[i] != null) && (Bearing2[i] != null) && (Radius[i] !=
-		 * null)) Main.main.undoRedo.add(new ChangePropertyCommand(Node,
-		 * "seamark:light:" + i, "white:" + Bearing1[i] + ":" + Bearing2[i] + ":" +
-		 * Radius[i])); }
-		 * 
-		 * if (LightPeriod[i] != null) Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:light:" + i + ":period",
-		 * LightPeriod[i]));
-		 * 
-		 * if (LightChar[i] != null) Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:light:" + i + ":character",
-		 * LightChar[i]));
-		 * 
-		 * if (LightGroup[i] != null) Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:light:" + i + ":group",
-		 * LightGroup[i]));
-		 * 
-		 * if (Height[i] != null) Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:light:" + i + ":height",
-		 * Height[i]));
-		 * 
-		 * if (Range[i] != null) Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:light:" + i + ":range", Range[i]));
-		 * 
-		 * if (Bearing1[i] != null) Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:light:" + i + ":sector_start",
-		 * Bearing1[i]));
-		 * 
-		 * if (Bearing2[i] != null) Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:light:" + i + ":sector_end",
-		 * Bearing2[i])); } } if (hasTopMark()) { Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:topmark:shape", shape));
-		 * Main.main.undoRedo.add(new ChangePropertyCommand(Node,
-		 * "seamark:topmark:colour", colour)); } if (hasRadar()) {
-		 * Main.main.undoRedo.add(new ChangePropertyCommand(Node,
-		 * "seamark:radar_reflector", "yes")); } if (hasRacon()) { switch (RaType) {
-		 * case RATYPE_RACON: Main.main.undoRedo.add(new ChangePropertyCommand(Node,
-		 * "seamark:radar_transponder:category", "racon")); if
-		 * (!getRaconGroup().isEmpty()) Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:radar_transponder:group",
-		 * getRaconGroup())); break; case RATYPE_RAMARK: Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:radar_transponder:category",
-		 * "ramark")); break; case RATYPE_LEADING: Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:radar_transponder:category",
-		 * "leading")); break; default: Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:radar_transponder", "yes")); } } if
-		 * (hasFog()) { if (getFogSound() == 0) { Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:fog_signal", "yes")); } else {
-		 * switch (getFogSound()) { case FOG_HORN: Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:fog_signal:category", "horn"));
-		 * break; case FOG_SIREN: Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:fog_signal:category", "siren"));
-		 * break; case FOG_DIA: Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:fog_signal:category", "diaphone"));
-		 * break; case FOG_BELL: Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:fog_signal:category", "bell"));
-		 * break; case FOG_WHIS: Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:fog_signal:category", "whistle"));
-		 * break; case FOG_GONG: Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:fog_signal:category", "gong"));
-		 * break; case FOG_EXPLOS: Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:fog_signal:category", "explosive"));
-		 * break; } if (!getFogGroup().isEmpty()) Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:fog_signal:group", getFogGroup()));
-		 * if (!getFogPeriod().isEmpty()) Main.main.undoRedo.add(new
-		 * ChangePropertyCommand(Node, "seamark:fog_signal:period",
-		 * getFogPeriod())); } }
-		 */}
+
+		Col colour;
+		if (isFired()) {
+			if ((colour = lightColour[0]) != Col.UNKNOWN)
+				if (colour == Col.RED) {
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light:colour", "red"));
+				} else if (colour.equals("G")) {
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light:colour", "green"));
+				} else if (colour.equals("W")) {
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light:colour", "white"));
+				}
+			if (!LightPeriod[0].isEmpty())
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light:period", LightPeriod[0]));
+			if (!LightChar[0].isEmpty())
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light:character", LightChar[0]));
+			if (!LightGroup[0].isEmpty())
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light:group", LightGroup[0]));
+			if (!Height[0].isEmpty())
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light:height", Height[0]));
+			if (!Range[0].isEmpty())
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light:range", Range[0]));
+			for (int i = 1; i < 10; i++) {
+				if ((colour = lightColour[i]) != Col.UNKNOWN)
+					if (colour.equals("R")) {
+						Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light:" + i + ":colour", "red"));
+						if ((Bearing1[i] != null) && (Bearing2[i] != null) && (Radius[i] != null))
+							Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light:" + i, "red:" + Bearing1[i] + ":" + Bearing2[i]
+									+ ":" + Radius[i]));
+					} else if (colour.equals("G")) {
+						Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light:" + i + ":colour", "green"));
+						if ((Bearing1[i] != null) && (Bearing2[i] != null) && (Radius[i] != null))
+							Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light:" + i, "green:" + Bearing1[i] + ":"
+									+ Bearing2[i] + ":" + Radius[i]));
+					} else if (colour.equals("W")) {
+						Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light:" + i + ":colour", "white"));
+						if ((Bearing1[i] != null) && (Bearing2[i] != null) && (Radius[i] != null))
+							Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light:" + i, "white:" + Bearing1[i] + ":"
+									+ Bearing2[i] + ":" + Radius[i]));
+					}
+				if (LightPeriod[i] != null)
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light:" + i + ":period", LightPeriod[i]));
+				if (LightChar[i] != null)
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light:" + i + ":character", LightChar[i]));
+				if (LightGroup[i] != null)
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light:" + i + ":group", LightGroup[i]));
+				if (Height[i] != null)
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light:" + i + ":height", Height[i]));
+				if (Range[i] != null)
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light:" + i + ":range", Range[i]));
+				if (Bearing1[i] != null)
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light:" + i + ":sector_start", Bearing1[i]));
+				if (Bearing2[i] != null)
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:light:" + i + ":sector_end", Bearing2[i]));
+			}
+		}
+		if (hasRadar()) {
+			Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:radar_reflector", "yes"));
+		}
+		if (hasRacon()) {
+			switch (RaType) {
+			case RACON:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:radar_transponder:category", "racon"));
+				if (!getRaconGroup().isEmpty())
+					Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:radar_transponder:group", getRaconGroup()));
+				break;
+			case RAMARK:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:radar_transponder:category", "ramark"));
+				break;
+			case LEADING:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:radar_transponder:category", "leading"));
+				break;
+			default:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:radar_transponder", "yes"));
+			}
+		}
+		if (hasFog()) {
+			switch (getFogSound()) {
+			case HORN:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:fog_signal:category", "horn"));
+				break;
+			case SIREN:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:fog_signal:category", "siren"));
+				break;
+			case DIA:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:fog_signal:category", "diaphone"));
+				break;
+			case BELL:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:fog_signal:category", "bell"));
+				break;
+			case WHIS:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:fog_signal:category", "whistle"));
+				break;
+			case GONG:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:fog_signal:category", "gong"));
+				break;
+			case EXPLOS:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:fog_signal:category", "explosive"));
+				break;
+			default:
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:fog_signal", "yes"));
+			}
+			if (!getFogGroup().isEmpty())
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:fog_signal:group", getFogGroup()));
+			if (!getFogPeriod().isEmpty())
+				Main.main.undoRedo.add(new ChangePropertyCommand(dlg.node, "seamark:fog_signal:period", getFogPeriod()));
+		}
+	}
 
 }
