Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/dialogs/OSeaMAction.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/dialogs/OSeaMAction.java	(revision 24919)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/dialogs/OSeaMAction.java	(revision 24924)
@@ -212,4 +212,16 @@
 			panelMain.clearSelections();
 		} else {
+			if (keys.containsKey("name")) {
+				panelMain.nameBox.setText(keys.get("name"));
+				panelMain.nameBox.postActionEvent();
+			}
+			if (keys.containsKey("seamark:name")) {
+				panelMain.nameBox.setText(keys.get("seamark:name"));
+				panelMain.nameBox.postActionEvent();
+			}
+			if (keys.containsKey("seamark:" + type + ":name")) {
+				panelMain.nameBox.setText(keys.get("seamark:" + type + ":name"));
+				panelMain.nameBox.postActionEvent();
+			}
 			mark.parseMark();
 			mark.paintSign();
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMain.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMain.java	(revision 24919)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMain.java	(revision 24924)
@@ -48,4 +48,5 @@
 	public JRadioButton litButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/LitButton.png")));
 	private ActionListener alMisc = null;
+	private ActionListener alName = null;
 	public PanelChan panelChan = null;
 	public PanelHaz panelHaz = null;
@@ -247,4 +248,14 @@
 		nameBox.setBounds(new Rectangle(60, 330, 200, 20));
 		this.add(nameBox, null);
+		alName = new ActionListener() {
+			public void actionPerformed(java.awt.event.ActionEvent e) {
+				if (dlg.mark == null)
+					return;
+				else
+					dlg.mark.setName(nameBox.getText());
+			}
+		};
+		nameBox.addActionListener(alName);
+
 		saveButton = new JButton();
 		saveButton.setBounds(new Rectangle(285, 330, 100, 20));
@@ -256,4 +267,5 @@
 		typeButtons.clearSelection();
 		alType.actionPerformed(null);
+		nameBox.setText("");
 		clearType();
 	}
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 24919)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkCard.java	(revision 24924)
@@ -20,17 +20,4 @@
 		if (!dlg.panelMain.hazButton.isSelected())
 			dlg.panelMain.hazButton.doClick();
-
-		if (keys.containsKey("name"))
-			setName(keys.get("name"));
-
-		if (keys.containsKey("seamark:name"))
-			setName(keys.get("seamark:name"));
-
-		if (keys.containsKey("seamark:buoy_cardinal:name"))
-			setName(keys.get("seamark:buoy_cardinal:name"));
-		else if (keys.containsKey("seamark:beacon_cardinal:name"))
-			setName(keys.get("seamark:beacon_cardinal:name"));
-		else if (keys.containsKey("seamark:light_float:name"))
-			setName(keys.get("seamark:light_float:name"));
 
 		String cat = "";
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 24919)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkIsol.java	(revision 24924)
@@ -25,17 +25,4 @@
 			dlg.panelMain.panelHaz.isolButton.doClick();
 
-		if (keys.containsKey("name"))
-			setName(keys.get("name"));
-
-		if (keys.containsKey("seamark:name"))
-			setName(keys.get("seamark:name"));
-
-		if (keys.containsKey("seamark:buoy_isolated_danger:name"))
-			setName(keys.get("seamark:buoy_isolated_danger:name"));
-		else if (keys.containsKey("seamark:beacon_isolated_danger:name"))
-			setName(keys.get("seamark:beacon_isolated_danger:name"));
-		else if (keys.containsKey("seamark:light_float:name"))
-			setName(keys.get("seamark:light_float:name"));
-
 		if (keys.containsKey("seamark:buoy_isolated_danger:shape")) {
 			str = keys.get("seamark:buoy_isolated_danger:shape");
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 24919)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkLat.java	(revision 24924)
@@ -20,17 +20,4 @@
 		if (!dlg.panelMain.chanButton.isSelected())
 			dlg.panelMain.chanButton.doClick();
-
-		if (keys.containsKey("name"))
-			setName(keys.get("name"));
-
-		if (keys.containsKey("seamark:name"))
-			setName(keys.get("seamark:name"));
-
-		if (keys.containsKey("seamark:buoy_lateral:name"))
-			setName(keys.get("seamark:buoy_lateral:name"));
-		else if (keys.containsKey("seamark:beacon_lateral:name"))
-			setName(keys.get("seamark:beacon_lateral:name"));
-		else if (keys.containsKey("seamark:light_float:name"))
-			setName(keys.get("seamark:light_float:name"));
 
 		String cat = "";
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 24919)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkLight.java	(revision 24924)
@@ -21,21 +21,4 @@
 			dlg.panelMain.lightsButton.doClick();
 
-		if (keys.containsKey("name"))
-			setName(keys.get("name"));
-
-		if (keys.containsKey("seamark:name"))
-			setName(keys.get("seamark:name"));
-
-		if (keys.containsKey("seamark:landmark:name"))
-			setName(keys.get("seamark:landmark:name"));
-		else if (keys.containsKey("seamark:light_major:name"))
-			setName(keys.get("seamark:light_major:name"));
-		else if (keys.containsKey("seamark:light_minor:name"))
-			setName(keys.get("seamark:light_minor:name"));
-		else if (keys.containsKey("seamark:light_vessel:name"))
-			setName(keys.get("seamark:light_vessel:name"));
-		else if (keys.containsKey("seamark:light_float:name"))
-			setName(keys.get("seamark:light_float:name"));
-
 		if (keys.containsKey("seamark:type")) {
 			String type = keys.get("seamark:type");
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 24919)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkSaw.java	(revision 24924)
@@ -24,17 +24,4 @@
 			dlg.panelMain.panelChan.safeWaterButton.doClick();
 
-		if (keys.containsKey("name"))
-			setName(keys.get("name"));
-
-		if (keys.containsKey("seamark:name"))
-			setName(keys.get("seamark:name"));
-
-		if (keys.containsKey("seamark:buoy_safe_water:name"))
-			setName(keys.get("seamark:buoy_safe_water:name"));
-		else if (keys.containsKey("seamark:beacon_safe_water:name"))
-			setName(keys.get("seamark:beacon_safe_water:name"));
-		else if (keys.containsKey("seamark:light_float:name"))
-			setName(keys.get("seamark:light_float:name"));
-
 		if (keys.containsKey("seamark:buoy_safe_water:shape")) {
 			str = keys.get("seamark:buoy_safe_water:shape");
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 24919)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/MarkSpec.java	(revision 24924)
@@ -2,6 +2,4 @@
 
 import java.util.Map;
-
-import javax.swing.ImageIcon;
 
 import oseam.dialogs.OSeaMAction;
@@ -21,16 +19,10 @@
 			dlg.panelMain.specButton.doClick();
 
-		if (keys.containsKey("name"))
-			setName(keys.get("name"));
-
-		if (keys.containsKey("seamark:name"))
-			setName(keys.get("seamark:name"));
-
 		if (keys.containsKey("seamark:buoy_special_purpose:name"))
-			setName(keys.get("seamark:buoy_special_purpose:name"));
+			dlg.panelMain.nameBox.setText(keys.get("seamark:buoy_special_purpose:name"));
 		else if (keys.containsKey("seamark:beacon_special_purpose:name"))
-			setName(keys.get("seamark:beacon_special_purpose:name"));
+			dlg.panelMain.nameBox.setText(keys.get("seamark:beacon_special_purpose:name"));
 		else if (keys.containsKey("seamark:light_float:name"))
-			setName(keys.get("seamark:light_float:name"));
+			dlg.panelMain.nameBox.setText(keys.get("seamark:light_float:name"));
 
 		dlg.panelMain.panelSpec.panelCol.yellowButton.doClick();
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 24919)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java	(revision 24924)
@@ -74,5 +74,4 @@
 		objects.put(Obj.LNDMRK, "landmark");
 		objects.put(Obj.MORFAC, "mooring");
-
 	}
 
@@ -89,4 +88,85 @@
 	public enum Ent {
 		BODY, BUOY, BEACON, FLOAT, TOPMARK, DAYMARK, LIGHT
+	}
+
+	public enum Grp {
+		LAT, CAR, SAW, ISD, SPP, LIT
+	}
+
+	public static final EnumMap<Obj, Grp> groups = new EnumMap<Obj, Grp>(Obj.class);
+	static {
+		groups.put(Obj.BCNCAR, Grp.CAR);
+		groups.put(Obj.BCNISD, Grp.ISD);
+		groups.put(Obj.BCNLAT, Grp.LAT);
+		groups.put(Obj.BCNSAW, Grp.SAW);
+		groups.put(Obj.BCNSPP, Grp.SPP);
+		groups.put(Obj.BOYCAR, Grp.CAR);
+		groups.put(Obj.BOYISD, Grp.ISD);
+		groups.put(Obj.BOYLAT, Grp.LAT);
+		groups.put(Obj.BOYSAW, Grp.SAW);
+		groups.put(Obj.BOYSPP, Grp.SPP);
+		groups.put(Obj.LITMAJ, Grp.LIT);
+		groups.put(Obj.LITMIN, Grp.LIT);
+		groups.put(Obj.LITFLT, Grp.LIT);
+		groups.put(Obj.LITVES, Grp.LIT);
+		groups.put(Obj.LNDMRK, Grp.LIT);
+		groups.put(Obj.MORFAC, Grp.SPP);
+	}
+	
+	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, MOORING_BUOY
+	}
+
+	public static final EnumMap<Cat, String> categories = new EnumMap<Cat, String>(Cat.class);
+	static {
+		categories.put(Cat.LAT_PORT, "port");
+		categories.put(Cat.LAT_STBD, "starboard");
+		categories.put(Cat.LAT_PREF_PORT, "preferred_channel_port");
+		categories.put(Cat.LAT_PREF_STBD, "preferred_channel_starboard");
+		categories.put(Cat.CARD_NORTH, "north");
+		categories.put(Cat.CARD_EAST, "east");
+		categories.put(Cat.CARD_SOUTH, "south");
+		categories.put(Cat.CARD_WEST, "west");
+		categories.put(Cat.MOORING_BUOY, "mooring_buoy");
+	}
+
+	private Cat category = Cat.UNKNOWN;
+
+	public Cat getCategory() {
+		return category;
+	}
+
+	public void setCategory(Cat cat) {
+		category = cat;
+	}
+
+	public enum Shp {
+		UNKNOWN, PILLAR, SPAR, CAN, CONE, SPHERE, BARREL, FLOAT, SUPER, BEACON, TOWER, STAKE, PERCH
+	}
+
+	public static final EnumMap<Shp, String> shapes = new EnumMap<Shp, String>(Shp.class);
+	static {
+		shapes.put(Shp.PILLAR, "pillar");
+		shapes.put(Shp.SPAR, "spar");
+		shapes.put(Shp.CAN, "can");
+		shapes.put(Shp.CONE, "conical");
+		shapes.put(Shp.SPHERE, "sphere");
+		shapes.put(Shp.BARREL, "barrel");
+		shapes.put(Shp.FLOAT, "float");
+		shapes.put(Shp.SUPER, "super-buoy");
+		shapes.put(Shp.BEACON, "beacon");
+		shapes.put(Shp.TOWER, "tower");
+		shapes.put(Shp.STAKE, "stake");
+		shapes.put(Shp.PERCH, "perch");
+	}
+
+	private Shp shape = Shp.UNKNOWN;
+
+	public Shp getShape() {
+		return shape;
+	}
+
+	public void setShape(Shp styl) {
+		shape = styl;
 	}
 
@@ -153,61 +233,4 @@
 			break;
 		}
-	}
-
-	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, MOORING_BUOY
-	}
-
-	public static final EnumMap<Cat, String> categories = new EnumMap<Cat, String>(Cat.class);
-	static {
-		categories.put(Cat.LAT_PORT, "port");
-		categories.put(Cat.LAT_STBD, "starboard");
-		categories.put(Cat.LAT_PREF_PORT, "preferred_channel_port");
-		categories.put(Cat.LAT_PREF_STBD, "preferred_channel_starboard");
-		categories.put(Cat.CARD_NORTH, "north");
-		categories.put(Cat.CARD_EAST, "east");
-		categories.put(Cat.CARD_SOUTH, "south");
-		categories.put(Cat.CARD_WEST, "west");
-		categories.put(Cat.MOORING_BUOY, "mooring_buoy");
-	}
-
-	private Cat category = Cat.UNKNOWN;
-
-	public Cat getCategory() {
-		return category;
-	}
-
-	public void setCategory(Cat cat) {
-		category = cat;
-	}
-
-	public enum Shp {
-		UNKNOWN, PILLAR, SPAR, CAN, CONE, SPHERE, BARREL, FLOAT, SUPER, BEACON, TOWER, STAKE, PERCH
-	}
-
-	public static final EnumMap<Shp, String> shapes = new EnumMap<Shp, String>(Shp.class);
-	static {
-		shapes.put(Shp.PILLAR, "pillar");
-		shapes.put(Shp.SPAR, "spar");
-		shapes.put(Shp.CAN, "can");
-		shapes.put(Shp.CONE, "conical");
-		shapes.put(Shp.SPHERE, "sphere");
-		shapes.put(Shp.BARREL, "barrel");
-		shapes.put(Shp.FLOAT, "float");
-		shapes.put(Shp.SUPER, "super-buoy");
-		shapes.put(Shp.BEACON, "beacon");
-		shapes.put(Shp.TOWER, "tower");
-		shapes.put(Shp.STAKE, "stake");
-		shapes.put(Shp.PERCH, "perch");
-	}
-
-	private Shp shape = Shp.UNKNOWN;
-
-	public Shp getShape() {
-		return shape;
-	}
-
-	public void setShape(Shp styl) {
-		shape = styl;
 	}
 
@@ -685,4 +708,7 @@
 			}
 			imgStr += ".png";
+if (getClass().getResource(imgStr) == null)
+System.out.println(imgStr);
+else
 			dlg.panelMain.shapeIcon.setIcon(new ImageIcon(getClass().getResource(imgStr)));
 		}
@@ -723,9 +749,11 @@
 					imgStr += ("_" + colStr);
 				imgStr += ".png";
+if (getClass().getResource(imgStr) == null)
 System.out.println(imgStr);
-//				dlg.panelMain.topIcon.setIcon(new ImageIcon(getClass().getResource(imgStr)));
-			}
-		}
-
+else
+				dlg.panelMain.topIcon.setIcon(new ImageIcon(getClass().getResource(imgStr)));
+			}
+		}
+/*
 		if (hasRadar()) {
 			dlg.panelMain.radarIcon.setIcon(new ImageIcon(getClass().getResource("/images/Radar_Reflector_355.png")));
@@ -768,12 +796,11 @@
 			}
 
-			/*
-			 * c = getLightChar(); if (c.contains("+")) { i1 = c.indexOf("+"); tmp =
-			 * c.substring(i1, c.length()); c = c.substring(0, i1); if
-			 * (!getLightGroup().isEmpty()) { c = c + "(" + getLightGroup() + ")"; }
-			 * if (tmp != null) c = c + tmp; } else if (!getLightGroup().isEmpty()) c
-			 * = c + "(" + getLightGroup() + ")"; c = c + " " + getLightColour(); lp =
-			 * getLightPeriod(); if (!lp.isEmpty()) c = c + " " + lp + "s";
-			 */}
+			 c = getLightChar(); if (c.contains("+")) { i1 = c.indexOf("+"); tmp =
+			 c.substring(i1, c.length()); c = c.substring(0, i1); if
+			 (!getLightGroup().isEmpty()) { c = c + "(" + getLightGroup() + ")"; }
+			 if (tmp != null) c = c + tmp; } else if (!getLightGroup().isEmpty()) c
+			 = c + "(" + getLightGroup() + ")"; c = c + " " + getLightColour(); lp =
+			 getLightPeriod(); if (!lp.isEmpty()) c = c + " " + lp + "s";
+			 }*/
 	}
 
