Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/Messages.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/Messages.java	(revision 23382)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/Messages.java	(revision 23382)
@@ -0,0 +1,22 @@
+package oseam;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+public class Messages {
+    private static final String BUNDLE_NAME = "oseam.msg.messages"; //$NON-NLS-1$
+
+    private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
+            .getBundle(BUNDLE_NAME);
+
+    private Messages() {
+    }
+
+    public static String getString(String key) {
+        try {
+            return RESOURCE_BUNDLE.getString(key);
+        } catch (MissingResourceException e) {
+            return '!' + key + '!';
+        }
+    }
+}
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/OSeaM.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/OSeaM.java	(revision 23382)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/OSeaM.java	(revision 23382)
@@ -0,0 +1,52 @@
+package oseam;
+
+import javax.swing.JComponent;
+
+import oseam.dialogs.OSeaMAction;
+
+import smed.plug.ifc.SmedPluggable;
+import smed.plug.ifc.SmedPluginManager;
+
+public class OSeaM implements SmedPluggable {
+
+	private OSeaMAction os = null;
+	
+	@Override
+	public JComponent getComponent() {
+		os = new OSeaMAction();
+		os.init();
+		return os.getPM01SeaMap();
+	}
+
+	@Override
+	public String getInfo() {return "mapping seamarks"; }
+
+	@Override
+	public String getName() {return "Seamarks"; }
+
+	@Override
+	public void setPluginManager(SmedPluginManager manager) {
+		// TODO Auto-generated method stub
+		
+	}
+
+	@Override
+	public boolean start() {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	@Override
+	public boolean stop() {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	@Override
+	public String getFileName() {
+		return "OSeaM.jar";
+	
+	}
+
+
+}
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 23382)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/dialogs/OSeaMAction.java	(revision 23382)
@@ -0,0 +1,1410 @@
+package oseam.dialogs;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.Rectangle;
+import java.awt.SystemColor;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.FocusAdapter;
+import java.awt.event.FocusEvent;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Map;
+
+import javax.swing.ButtonGroup;
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
+import javax.swing.JLabel;
+import javax.swing.JMenuItem;
+import javax.swing.JPanel;
+import javax.swing.JRadioButton;
+import javax.swing.JTextField;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.command.ChangePropertyCommand;
+import org.openstreetmap.josm.command.Command;
+import org.openstreetmap.josm.data.SelectionChangedListener;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+
+import oseam.Messages;
+import oseam.seamarks.SeaMark;
+import oseam.seamarks.buoys.Buoy;
+import oseam.seamarks.buoys.BuoyLat;
+import oseam.seamarks.buoys.BuoyUkn;
+import oseam.seamarks.buoys.BuoyCard;
+import oseam.seamarks.buoys.BuoySaw;
+import oseam.seamarks.buoys.BuoyIsol;
+import oseam.seamarks.buoys.BuoySpec;
+import oseam.seamarks.buoys.BuoyNota;
+
+
+public class OSeaMAction {
+	/**
+	 * local variable, private
+	 */
+	private OSeaMAction dia = null; // Variable f�r den Handle von
+																				// SmpDialogAction
+	private Buoy buoy = null; // Variable f�r Objekte des Typs "Tonne" //
+	private boolean isOpen = false; // zeigt den Status des Dialogs an
+	private Node onode = null; // gemerkter Knoten
+	private Buoy obuoy = null; // gemerkte Tonne // @jve:decl-index=0:
+	private JMenuItem SmpItem = null; // Info über item in der Werkzeugleiste
+	private String smt = ""; // value vom key "seamark:type" // @jve:decl-index=0: //$NON-NLS-1$
+	private String smb = ""; // value vom key "seamark" // @jve:decl-index=0: //$NON-NLS-1$
+	private Collection<? extends OsmPrimitive> Selection = null; // @jve:decl-index=0:
+	private OsmPrimitive SelNode = null;
+	private String Os = ""; // @jve:decl-index=0: //$NON-NLS-1$
+	private String UserHome = ""; // @jve:decl-index=0: //$NON-NLS-1$
+
+	// SelectionChangedListner der in die Eventqueue von josm eingehängt wird
+	private SelectionChangedListener SmpListener = new SelectionChangedListener() {
+		public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
+			Node node;  //  @jve:decl-index=0:
+			Selection = newSelection;
+
+			// System.out.println("hello");
+			for (OsmPrimitive osm : Selection) {
+				if (osm instanceof Node) {
+					node = (Node) osm;
+					if (Selection.size() == 1)
+						// Absicherung gegen Doppelevents
+						if (node.compareTo(SelNode) != 0) {
+							SelNode = node;
+							parseSeaMark();
+							buoy.paintSign();
+						}
+				}
+			}
+
+			Selection = null;
+
+		}
+	};
+
+	
+	/**
+	 * local variables of the mask
+	 */
+	private JPanel pM01SeaMap = null;
+	private JLabel lM01Head = null;
+	private JLabel lM01Region = null;
+	private JLabel lM02Region = null;
+	public ButtonGroup bgM01Region = null;
+	public JRadioButton rbM01RegionA = null;
+	public JRadioButton rbM01RegionB = null;
+	public JLabel lM01Icon = null; // Shape
+	public JLabel lM02Icon = null; // Light
+	public JLabel lM03Icon = null; // Reflector
+	public JLabel lM04Icon = null; // Racon
+	public JLabel lM05Icon = null; // Fog
+	public JLabel lM06Icon = null; // Topmark
+	public JLabel lM01NameMark = null;
+	public JLabel lM01FireMark = null;
+	public JLabel lM01FogMark = null;
+	public JLabel lM01RadarMark = null;
+	private JLabel lM01TypeOfMark = null;
+	public JComboBox cbM01TypeOfMark = null;
+	public JLabel lM01CatOfMark = null;
+	public JComboBox cbM01CatOfMark = null;
+	public JLabel lM01StyleOfMark = null;
+	public JComboBox cbM01StyleOfMark = null;
+	private JLabel lM01Name = null;
+	public JTextField tfM01Name = null;
+	private JLabel lM01Props02 = null;
+	public JCheckBox cM01TopMark = null;
+	public JComboBox cbM01TopMark = null;
+	public JCheckBox cM01Radar = null;
+	public JCheckBox cM01Racon = null;
+	public JComboBox cbM01Racon = null;
+	public JTextField tfM01Racon = null;
+	public JLabel lM01Racon = null;
+	public JCheckBox cM01Fog = null;
+	public JComboBox cbM01Fog = null;
+	public JLabel lM01FogGroup = null;
+	public JTextField tfM01FogGroup = null;
+	public JLabel lM01FogPeriod = null;
+	public JTextField tfM01FogPeriod = null;
+	public JCheckBox cM01Fired = null;
+	public ButtonGroup bgM01Fired = null;
+	public JRadioButton rbM01Fired1 = null;
+	public JRadioButton rbM01FiredN = null;
+	public JLabel lM01Kennung = null;
+	public JComboBox cbM01Kennung = null;
+	public JLabel lM01Height = null;
+	public JTextField tfM01Height = null;
+	public JLabel lM01Range = null;
+	public JTextField tfM01Range = null;
+	public JLabel lM01Group = null;
+	public JTextField tfM01Group = null;
+	public JLabel lM01RepeatTime = null;
+	public JTextField tfM01RepeatTime = null;
+	public JLabel lM01Sector = null;
+	public JComboBox cbM01Sector = null;
+	public JLabel lM01Colour = null;
+	public JComboBox cbM01Colour = null;
+	public JLabel lM01Bearing = null;
+	public JTextField tfM01Bearing = null;
+	public JTextField tfM02Bearing = null;
+	public JTextField tfM01Radius = null;
+	public JButton bM01Save = null;
+	public JButton bM01Close = null;
+	public JCheckBox cM01IconVisible = null;
+	public JTextField sM01StatusBar = null;
+
+	public boolean paintlock = false;
+
+	
+	public OSeaMAction() {
+		dia = this;
+		
+		String str = Main.pref.get("mappaint.style.sources"); //$NON-NLS-1$
+		if (!str.contains("dev.openseamap.org")) { //$NON-NLS-1$
+			if (!str.isEmpty()) //$NON-NLS-1$
+				str += new String(new char[] { 0x1e });
+			Main.pref.put("mappaint.style.sources", str //$NON-NLS-1$
+					+ "http://dev.openseamap.org/josm/seamark_styles.xml"); //$NON-NLS-1$
+		}
+		str = Main.pref.get("color.background"); //$NON-NLS-1$
+		if (str.equals("#000000") || str.isEmpty()) //$NON-NLS-1$ //$NON-NLS-2$
+			Main.pref.put("color.background", "#606060"); //$NON-NLS-1$ //$NON-NLS-2$
+	}
+
+	public JMenuItem getSmpItem() {
+		return SmpItem;
+	}
+
+	public void setSmpItem(JMenuItem smpItem) {
+		SmpItem = smpItem;
+	}
+
+	public boolean isOpen() {
+		return isOpen;
+	}
+
+	public void setOpen(boolean isOpen) {
+		this.isOpen = isOpen;
+	}
+
+	public String getOs() {
+		return Os;
+	}
+
+	public void setOs(String os) {
+		Os = os;
+	}
+
+	public String getUserHome() {
+		return UserHome;
+	}
+
+	public void setUserHome(String userHome) {
+		UserHome = userHome;
+	}
+
+	public void CloseDialog() {
+		onode = null;
+		DataSet.removeSelectionListener(SmpListener);
+		Selection = null;
+
+		/*
+		if (isOpen)
+			dM01SeaMap.dispose();
+		*/
+		isOpen = false;
+	}
+
+	public void init() {
+		onode = null;
+		obuoy = null;
+		setOpen(true);
+
+		/*
+		if (SmpItem == null) {
+			return;
+		}
+
+		SmpItem.setEnabled(false);
+		*/
+
+		// Ausprobe: Möglichkeit der Benachrichtigung, wenn etwas neu
+		// selektiert wird (ueber SelectionChangedListener)
+		// private Collection<? extends OsmPrimitive> sel;
+		// siehe org.openstreetmap.josm.plugins.osb -> OsbLayer.java
+		// Einhängen des Listeners in die Eventqueue von josm
+		DataSet.addSelectionListener(SmpListener);
+	}
+	
+	private void PicRebuild() {
+
+		DataSet ds = Main.main.getCurrentDataSet();
+
+		if (obuoy == null) {
+			return;
+		}
+
+		Node n = obuoy.getNode();
+
+		if (n != null) {
+			Command c;
+
+			if (smb != "") { //$NON-NLS-1$
+
+				c = new ChangePropertyCommand(n, "seamark", smb); //$NON-NLS-1$
+				c.executeCommand();
+				ds.fireSelectionChanged();
+
+				smb = ""; //$NON-NLS-1$
+			}
+
+			if (smt != "") { //$NON-NLS-1$
+
+				c = new ChangePropertyCommand(n, "seamark:type", smt); //$NON-NLS-1$
+				c.executeCommand();
+				ds.fireSelectionChanged();
+
+				smt = ""; //$NON-NLS-1$
+			}
+		}
+
+		obuoy = null;
+
+	}
+
+	private void parseSeaMark() {
+
+		int nodes = 0;
+		Node node = null;
+		Collection<Node> selection = null;
+		Map<String, String> keys;
+		DataSet ds;
+
+		ds = Main.main.getCurrentDataSet();
+
+		if (ds == null) {
+			buoy = new BuoyUkn(this, Messages.getString("SmpDialogAction.26")); //$NON-NLS-1$
+			buoy.setNode(null);
+			return;
+		}
+
+		selection = ds.getSelectedNodes();
+		nodes = selection.size();
+
+		if (nodes == 0) {
+			buoy = new BuoyUkn(this, Messages.getString("SmpDialogAction.27")); //$NON-NLS-1$
+			buoy.setNode(null);
+			return;
+		}
+
+		if (nodes > 1) {
+			buoy = new BuoyUkn(this, Messages.getString("SmpDialogAction.28")); //$NON-NLS-1$
+			buoy.setNode(null);
+			return;
+		}
+
+		Iterator<Node> it = selection.iterator();
+		node = it.next();
+
+		if (onode != null)
+			if (node.equals(onode))
+				return;
+
+		// Knoten wurde gewechselt -> die alten tags (benutzt zum Ausblenden der
+		// Pictogramme) wiederherstellen
+		if (obuoy != null)
+			PicRebuild();
+
+		onode = node;
+
+		cM01IconVisible.setEnabled(true);
+		cM01IconVisible.setIcon(new ImageIcon(getClass().getResource(
+				"/images/Auge.png"))); //$NON-NLS-1$
+
+		cbM01TypeOfMark.setEnabled(true);
+
+		// Soweit das Vorspiel. Ab hier beginnt das Parsen
+		String type = ""; //$NON-NLS-1$
+		String str = ""; //$NON-NLS-1$
+
+		keys = node.getKeys();
+
+		// vorsorglich den Namen holen und verwenden, wenn es ein
+		// Seezeichen ist. Name kann durch die weiteren Tags ueber-
+		// schrieben werden
+
+		if (keys.containsKey("seamark:type")) //$NON-NLS-1$
+			type = keys.get("seamark:type"); //$NON-NLS-1$
+		
+		if (type.equals("buoy_lateral") || type.equals("beacon_lateral")) { //$NON-NLS-1$ //$NON-NLS-2$
+			buoy = new BuoyLat(this, node);
+			return;
+
+		} else if (type.equals("buoy_cardinal") || type.equals("beacon_cardinal")) { //$NON-NLS-1$ //$NON-NLS-2$
+			buoy = new BuoyCard(this, node);
+			return;
+
+		} else if (type.equals("buoy_safe_water") || type.equals("beacon_safe_water")) { //$NON-NLS-1$ //$NON-NLS-2$
+			buoy = new BuoySaw(this, node);
+			return;
+
+		} else if (type.equals("buoy_special_purpose") || type.equals("beacon_special_purpose")) { //$NON-NLS-1$ //$NON-NLS-2$
+			buoy = new BuoySpec(this, node);
+			return;
+
+		} else if (type.equals("buoy_isolated_danger") || type.equals("beacon_isolated_danger")) { //$NON-NLS-1$ //$NON-NLS-2$
+			buoy = new BuoyIsol(this, node);
+			return;
+
+		} else if (type.equals("landmark") || type.equals("light_vessel") //$NON-NLS-1$ //$NON-NLS-2$
+				|| type.equals("light_major") || type.equals("light_minor")) { //$NON-NLS-1$ //$NON-NLS-2$
+			buoy = new BuoyNota(this, node);
+			return;
+
+		} else if (type.equals("light_float")) { //$NON-NLS-1$
+			if (keys.containsKey("seamark:light_float:colour")) { //$NON-NLS-1$
+				str = keys.get("seamark:light_float:colour"); //$NON-NLS-1$
+				if (str.equals("red") || str.equals("green") //$NON-NLS-1$ //$NON-NLS-2$
+						|| str.equals("red;green;red") || str.equals("green;red;green")) { //$NON-NLS-1$ //$NON-NLS-2$
+					buoy = new BuoyLat(this, node);
+					return;
+				} else if (str.equals("black;yellow") //$NON-NLS-1$
+						|| str.equals("black;yellow;black") || str.equals("yellow;black") //$NON-NLS-1$ //$NON-NLS-2$
+						|| str.equals("yellow;black;yellow")) { //$NON-NLS-1$
+					buoy = new BuoyCard(this, node);
+					return;
+				} else if (str.equals("black;red;black")) { //$NON-NLS-1$
+					buoy = new BuoyIsol(this, node);
+					return;
+				} else if (str.equals("red;white")) { //$NON-NLS-1$
+					buoy = new BuoySaw(this, node);
+					return;
+				} else if (str.equals("yellow")) { //$NON-NLS-1$
+					buoy = new BuoySpec(this, node);
+					return;
+				}
+			} else if (keys.containsKey("seamark:light_float:topmark:shape")) { //$NON-NLS-1$
+				str = keys.get("seamark:light_float:topmark:shape"); //$NON-NLS-1$
+				if (str.equals("cylinder") || str.equals("cone, point up")) { //$NON-NLS-1$ //$NON-NLS-2$
+					buoy = new BuoyLat(this, node);
+					return;
+				}
+			} else if (keys.containsKey("seamark:light_float:topmark:colour")) { //$NON-NLS-1$
+				str = keys.get("seamark:light_float:topmark:colour"); //$NON-NLS-1$
+				if (str.equals("red") || str.equals("green")) { //$NON-NLS-1$ //$NON-NLS-2$
+					buoy = new BuoyLat(this, node);
+					return;
+				}
+			}
+		}
+
+		if (keys.containsKey("buoy_lateral:category") || keys.containsKey("beacon_lateral:category")) { //$NON-NLS-1$ //$NON-NLS-2$
+			buoy = new BuoyLat(this, node);
+			return;
+		} else if (keys.containsKey("buoy_cardinal:category") || keys.containsKey("beacon_cardinal:category")) { //$NON-NLS-1$ //$NON-NLS-2$
+			buoy = new BuoyCard(this, node);
+			return;
+		} else if (keys.containsKey("buoy_isolated_danger:category") || keys.containsKey("beacon_isolated_danger:category")) { //$NON-NLS-1$ //$NON-NLS-2$
+			buoy = new BuoyIsol(this, node);
+			return;
+		} else if (keys.containsKey("buoy_safe_water:category") || keys.containsKey("beacon_safe_water:category")) { //$NON-NLS-1$ //$NON-NLS-2$
+			buoy = new BuoySaw(this, node);
+			return;
+		} else if (keys.containsKey("buoy_special_purpose:category") || keys.containsKey("beacon_special_purpose:category")) { //$NON-NLS-1$ //$NON-NLS-2$
+			buoy = new BuoySpec(this, node);
+			return;
+		}
+
+		if (keys.containsKey("buoy_lateral:shape") || keys.containsKey("beacon_lateral:shape")) { //$NON-NLS-1$ //$NON-NLS-2$
+			buoy = new BuoyLat(this, node);
+			return;
+		} else if (keys.containsKey("buoy_cardinal:shape") || keys.containsKey("beacon_cardinal:shape")) { //$NON-NLS-1$ //$NON-NLS-2$
+			buoy = new BuoyCard(this, node);
+			return;
+		} else if (keys.containsKey("buoy_isolated_danger:shape") || keys.containsKey("beacon_isolated_danger:shape")) { //$NON-NLS-1$ //$NON-NLS-2$
+			buoy = new BuoyIsol(this, node);
+			return;
+		} else if (keys.containsKey("buoy_safe_water:shape") || keys.containsKey("beacon_safe_water:shape")) { //$NON-NLS-1$ //$NON-NLS-2$
+			buoy = new BuoySaw(this, node);
+			return;
+		} else if (keys.containsKey("buoy_special_purpose:shape") || keys.containsKey("beacon_special_purpose:shape")) { //$NON-NLS-1$ //$NON-NLS-2$
+			buoy = new BuoySpec(this, node);
+			return;
+		}
+
+		if (keys.containsKey("buoy_lateral:colour") || keys.containsKey("beacon_lateral:colour")) { //$NON-NLS-1$ //$NON-NLS-2$
+			buoy = new BuoyLat(this, node);
+			return;
+		} else if (keys.containsKey("buoy_cardinal:colour") || keys.containsKey("beacon_cardinal:colour")) { //$NON-NLS-1$ //$NON-NLS-2$
+			buoy = new BuoyCard(this, node);
+			return;
+		} else if (keys.containsKey("buoy_isolated_danger:colour") || keys.containsKey("beacon_isolated_danger:colour")) { //$NON-NLS-1$ //$NON-NLS-2$
+			buoy = new BuoyIsol(this, node);
+			return;
+		} else if (keys.containsKey("buoy_safe_water:colour") || keys.containsKey("beacon_safe_water:colour")) { //$NON-NLS-1$ //$NON-NLS-2$
+			buoy = new BuoySaw(this, node);
+			return;
+		} else if (keys.containsKey("buoy_special_purpose:colour") || keys.containsKey("beacon_special_purpose:colour")) { //$NON-NLS-1$ //$NON-NLS-2$
+			buoy = new BuoySpec(this, node);
+			return;
+		}
+
+		buoy = new BuoyUkn(this, Messages.getString("SmpDialogAction.91")); //$NON-NLS-1$
+		buoy.setNode(node);
+		buoy.paintSign();
+		return;
+	}
+
+
+	public JPanel getPM01SeaMap() {
+		if (pM01SeaMap == null) {
+
+			lM01Icon = new JLabel();
+			lM01Icon.setBounds(new Rectangle(220, 20, 150, 200));
+			lM01Icon.setIcon(null);
+			lM01Icon.setText(""); //$NON-NLS-1$
+
+			lM02Icon = new JLabel();
+			lM02Icon.setBounds(new Rectangle(220, 20, 150, 200));
+			lM02Icon.setIcon(null);
+			lM02Icon.setText(""); //$NON-NLS-1$
+
+			lM03Icon = new JLabel();
+			lM03Icon.setBounds(new Rectangle(220, 20, 150, 200));
+			lM03Icon.setIcon(null);
+			lM03Icon.setText(""); //$NON-NLS-1$
+
+			lM04Icon = new JLabel();
+			lM04Icon.setBounds(new Rectangle(220, 20, 150, 200));
+			lM04Icon.setIcon(null);
+			lM04Icon.setText(""); //$NON-NLS-1$
+
+			lM05Icon = new JLabel();
+			lM05Icon.setBounds(new Rectangle(220, 20, 150, 200));
+			lM05Icon.setIcon(null);
+			lM05Icon.setText(""); //$NON-NLS-1$
+
+			lM06Icon = new JLabel();
+			lM06Icon.setBounds(new Rectangle(220, 20, 150, 200));
+			lM06Icon.setIcon(null);
+			lM06Icon.setText(""); //$NON-NLS-1$
+
+			lM01FireMark = new JLabel();
+			lM01FireMark.setBounds(new Rectangle(315, 85, 80, 20));
+			lM01FireMark.setFont(new Font("Dialog", Font.PLAIN, 10)); //$NON-NLS-1$
+			lM01FireMark.setText(""); //$NON-NLS-1$
+
+			lM01NameMark = new JLabel();
+			lM01NameMark.setBounds(new Rectangle(315, 65, 80, 20));
+			lM01NameMark.setFont(new Font("Dialog", Font.PLAIN, 10)); //$NON-NLS-1$
+			lM01NameMark.setText(""); //$NON-NLS-1$
+
+			lM01FogMark = new JLabel();
+			lM01FogMark.setBounds(new Rectangle(220, 85, 70, 20));
+			lM01FogMark.setFont(new Font("Dialog", Font.PLAIN, 10)); //$NON-NLS-1$
+			lM01FogMark.setText(""); //$NON-NLS-1$
+
+			lM01RadarMark = new JLabel();
+			lM01RadarMark.setBounds(new Rectangle(230, 65, 70, 20));
+			lM01RadarMark.setFont(new Font("Dialog", Font.PLAIN, 10)); //$NON-NLS-1$
+			lM01RadarMark.setText(""); //$NON-NLS-1$
+
+			lM01Head = new JLabel();
+			lM01Head.setBounds(new Rectangle(5, 3, 316, 16));
+			lM01Head.setText(Messages.getString("SmpDialogAction.97")); //$NON-NLS-1$
+
+			lM01Region = new JLabel();
+			lM01Region.setBounds(new Rectangle(220, 7, 120, 16));
+			lM01Region.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			lM01Region.setText(Messages.getString("SmpDialogAction.99")); //$NON-NLS-1$
+
+			lM02Region = new JLabel();
+			lM02Region.setBounds(new Rectangle(270, 7, 120, 16));
+			lM02Region.setFont(new Font("Dialog", Font.BOLD, 12)); //$NON-NLS-1$
+			lM02Region.setText(Messages.getString("SmpDialogAction.101")); //$NON-NLS-1$
+
+			lM01TypeOfMark = new JLabel();
+			lM01TypeOfMark.setBounds(new Rectangle(5, 28, 120, 16));
+			lM01TypeOfMark.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			lM01TypeOfMark.setText(Messages.getString("SmpDialogAction.103")); //$NON-NLS-1$
+
+			lM01CatOfMark = new JLabel();
+			lM01CatOfMark.setBounds(new Rectangle(5, 58, 120, 16));
+			lM01CatOfMark.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			lM01CatOfMark.setText(Messages.getString("SmpDialogAction.1")); //$NON-NLS-1$
+
+			lM01StyleOfMark = new JLabel();
+			lM01StyleOfMark.setBounds(new Rectangle(5, 88, 148, 16));
+			lM01StyleOfMark.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			lM01StyleOfMark.setText(Messages.getString("SmpDialogAction.107")); //$NON-NLS-1$
+
+			lM01Name = new JLabel();
+			lM01Name.setBounds(new Rectangle(5, 120, 82, 16));
+			lM01Name.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			lM01Name.setText(Messages.getString("SmpDialogAction.109")); //$NON-NLS-1$
+
+			lM01Props02 = new JLabel();
+			lM01Props02.setBounds(new Rectangle(5, 150, 172, 16));
+			lM01Props02.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			lM01Props02.setText(Messages.getString("SmpDialogAction.111")); //$NON-NLS-1$
+
+			lM01Racon = new JLabel();
+			lM01Racon.setBounds(new Rectangle(335, 195, 65, 20));
+			lM01Racon.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			lM01Racon.setText(Messages.getString("SmpDialogAction.113")); //$NON-NLS-1$
+
+			lM01FogGroup = new JLabel();
+			lM01FogGroup.setBounds(new Rectangle(190, 220, 100, 20));
+			lM01FogGroup.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			lM01FogGroup.setText(Messages.getString("SmpDialogAction.115")); //$NON-NLS-1$
+
+			lM01FogPeriod = new JLabel();
+			lM01FogPeriod.setBounds(new Rectangle(300, 220, 100, 20));
+			lM01FogPeriod.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			lM01FogPeriod.setText(Messages.getString("SmpDialogAction.117")); //$NON-NLS-1$
+
+			lM01Kennung = new JLabel();
+			lM01Kennung.setBounds(new Rectangle(235, 245, 70, 20));
+			lM01Kennung.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			lM01Kennung.setText(Messages.getString("SmpDialogAction.119")); //$NON-NLS-1$
+
+			lM01Height = new JLabel();
+			lM01Height.setBounds(new Rectangle(10, 270, 100, 20));
+			lM01Height.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			lM01Height.setText(Messages.getString("SmpDialogAction.121")); //$NON-NLS-1$
+
+			lM01Range = new JLabel();
+			lM01Range.setBounds(new Rectangle(108, 270, 100, 20));
+			lM01Range.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			lM01Range.setText(Messages.getString("SmpDialogAction.123")); //$NON-NLS-1$
+
+			lM01Group = new JLabel();
+			lM01Group.setBounds(new Rectangle(204, 270, 100, 20));
+			lM01Group.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			lM01Group.setText(Messages.getString("SmpDialogAction.125")); //$NON-NLS-1$
+
+			lM01RepeatTime = new JLabel();
+			lM01RepeatTime.setBounds(new Rectangle(300, 270, 100, 20));
+			lM01RepeatTime.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			lM01RepeatTime.setText(Messages.getString("SmpDialogAction.127")); //$NON-NLS-1$
+
+			lM01Sector = new JLabel();
+			lM01Sector.setBounds(new Rectangle(10, 295, 180, 20));
+			lM01Sector.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			lM01Sector.setText(Messages.getString("SmpDialogAction.129")); //$NON-NLS-1$
+
+			lM01Colour = new JLabel();
+			lM01Colour.setBounds(new Rectangle(120, 295, 180, 20));
+			lM01Colour.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			lM01Colour.setText(Messages.getString("SmpDialogAction.131")); //$NON-NLS-1$
+
+			lM01Bearing = new JLabel();
+			lM01Bearing.setBounds(new Rectangle(228, 295, 180, 20));
+			lM01Bearing.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			lM01Bearing.setText(Messages.getString("SmpDialogAction.133")); //$NON-NLS-1$
+
+			rbM01RegionA = new JRadioButton(
+					Messages.getString("SmpDialogAction.134"), Main.pref.get("tomsplugin.IALA") //$NON-NLS-1$ //$NON-NLS-2$
+							.equals("A")); //$NON-NLS-1$
+			rbM01RegionA.setBounds(new Rectangle(305, 0, 50, 30));
+			rbM01RegionB = new JRadioButton("-B", Main.pref.get("tomsplugin.IALA") //$NON-NLS-1$ //$NON-NLS-2$
+					.equals("B")); //$NON-NLS-1$
+			rbM01RegionB.setBounds(new Rectangle(352, 0, 50, 30));
+			bgM01Region = new ButtonGroup();
+			bgM01Region.add(rbM01RegionA);
+			bgM01Region.add(rbM01RegionB);
+
+			ActionListener alM01Region = new ActionListener() {
+				public void actionPerformed(java.awt.event.ActionEvent e) {
+					if (buoy instanceof BuoyLat) {
+						buoy.setRegion(rbM01RegionB.isSelected());
+						buoy.setLightColour();
+						buoy.paintSign();
+					}
+				}
+			};
+			rbM01RegionA.addActionListener(alM01Region);
+			rbM01RegionB.addActionListener(alM01Region);
+
+			rbM01Fired1 = new JRadioButton(
+					Messages.getString("SmpDialogAction.140"), true); //$NON-NLS-1$
+			rbM01Fired1.setBounds(new Rectangle(85, 240, 70, 30));
+			rbM01FiredN = new JRadioButton(
+					Messages.getString("SmpDialogAction.141"), false); //$NON-NLS-1$
+			rbM01FiredN.setBounds(new Rectangle(155, 240, 80, 30));
+			bgM01Fired = new ButtonGroup();
+			bgM01Fired.add(rbM01Fired1);
+			bgM01Fired.add(rbM01FiredN);
+
+			ActionListener alM01Fired = new ActionListener() {
+				public void actionPerformed(java.awt.event.ActionEvent e) {
+					buoy.setSectored(rbM01FiredN.isSelected());
+					cbM01Sector.setSelectedIndex(0);
+					buoy.setSectorIndex(0);
+					buoy.paintSign();
+				}
+			};
+			rbM01Fired1.addActionListener(alM01Fired);
+			rbM01FiredN.addActionListener(alM01Fired);
+
+			pM01SeaMap = new JPanel();
+			pM01SeaMap.setSize(new Dimension(400, 400));
+			pM01SeaMap.setLayout(null);
+			pM01SeaMap.add(lM01Head, null);
+			pM01SeaMap.add(rbM01RegionA, null);
+			pM01SeaMap.add(rbM01RegionB, null);
+			pM01SeaMap.add(lM01Region, null);
+			pM01SeaMap.add(lM02Region, null);
+			pM01SeaMap.add(lM01Icon, null);
+			pM01SeaMap.add(lM02Icon, null);
+			pM01SeaMap.add(lM03Icon, null);
+			pM01SeaMap.add(lM04Icon, null);
+			pM01SeaMap.add(lM05Icon, null);
+			pM01SeaMap.add(lM06Icon, null);
+			pM01SeaMap.add(getCbM01TypeOfMark(), null);
+			pM01SeaMap.add(lM01TypeOfMark, null);
+			pM01SeaMap.add(getCbM01CatOfMark(), null);
+			pM01SeaMap.add(lM01CatOfMark, null);
+			pM01SeaMap.add(getCbM01StyleOfMark(), null);
+			pM01SeaMap.add(lM01StyleOfMark, null);
+			pM01SeaMap.add(lM01Name, null);
+			pM01SeaMap.add(getTfM01Name(), null);
+			pM01SeaMap.add(lM01Props02, null);
+			pM01SeaMap.add(getCM01TopMark(), null);
+			pM01SeaMap.add(getCbM01TopMark(), null);
+			pM01SeaMap.add(getCM01Radar(), null);
+			pM01SeaMap.add(getCM01Racon(), null);
+			pM01SeaMap.add(getCbM01Racon(), null);
+			pM01SeaMap.add(getTfM01Racon(), null);
+			pM01SeaMap.add(lM01Racon, null);
+			pM01SeaMap.add(getCM01Fog(), null);
+			pM01SeaMap.add(getCbM01Fog(), null);
+			pM01SeaMap.add(getTfM01FogGroup(), null);
+			pM01SeaMap.add(lM01FogGroup, null);
+			pM01SeaMap.add(getTfM01FogPeriod(), null);
+			pM01SeaMap.add(lM01FogPeriod, null);
+			pM01SeaMap.add(getCM01Fired(), null);
+			pM01SeaMap.add(rbM01Fired1, null);
+			pM01SeaMap.add(rbM01FiredN, null);
+			pM01SeaMap.add(getTfM01RepeatTime(), null);
+			pM01SeaMap.add(lM01RepeatTime, null);
+			pM01SeaMap.add(getCbM01Kennung(), null);
+			pM01SeaMap.add(lM01Kennung, null);
+			pM01SeaMap.add(lM01Group, null);
+			pM01SeaMap.add(getTfM01Group(), null);
+			pM01SeaMap.add(lM01Sector, null);
+			pM01SeaMap.add(getCbM01Sector(), null);
+			pM01SeaMap.add(lM01Colour, null);
+			pM01SeaMap.add(getCbM01Colour(), null);
+			pM01SeaMap.add(lM01Bearing, null);
+			pM01SeaMap.add(getTfM01Bearing(), null);
+			pM01SeaMap.add(getTfM02Bearing(), null);
+			pM01SeaMap.add(getTfM01Radius(), null);
+			pM01SeaMap.add(lM01Height, null);
+			pM01SeaMap.add(getTfM01Height(), null);
+			pM01SeaMap.add(lM01Range, null);
+			pM01SeaMap.add(getTfM01Range(), null);
+			pM01SeaMap.add(lM01FireMark, null);
+			pM01SeaMap.add(lM01NameMark, null);
+			pM01SeaMap.add(lM01FogMark, null);
+			pM01SeaMap.add(lM01RadarMark, null);
+			pM01SeaMap.add(getBM01Save(), null);
+			pM01SeaMap.add(getSM01StatusBar(), null);
+			pM01SeaMap.add(getBM01Close(), null);
+			pM01SeaMap.add(getCM01IconVisible(), null);
+		}
+		return pM01SeaMap;
+	}
+
+	private JComboBox getCbM01TypeOfMark() {
+
+		if (cbM01TypeOfMark == null) {
+
+			cbM01TypeOfMark = new JComboBox();
+
+			// Inhalt der ComboBox
+			cbM01TypeOfMark.addItem(Messages.getString("SmpDialogAction.142")); //$NON-NLS-1$
+			cbM01TypeOfMark.addItem(Messages.getString("SmpDialogAction.143")); //$NON-NLS-1$
+			cbM01TypeOfMark.addItem(Messages.getString("SmpDialogAction.144")); //$NON-NLS-1$
+			cbM01TypeOfMark.addItem(Messages.getString("SmpDialogAction.145")); //$NON-NLS-1$
+			cbM01TypeOfMark.addItem(Messages.getString("SmpDialogAction.146")); //$NON-NLS-1$
+			cbM01TypeOfMark.addItem(Messages.getString("SmpDialogAction.147")); //$NON-NLS-1$
+			cbM01TypeOfMark.addItem(Messages.getString("SmpDialogAction.148")); //$NON-NLS-1$
+
+			cbM01TypeOfMark.setBounds(new Rectangle(50, 25, 170, 25));
+			// cbM01TypeOfMark.setEditable(false);
+			cbM01TypeOfMark.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			cbM01TypeOfMark.setEnabled(true);
+
+			cbM01TypeOfMark.addActionListener(new ActionListener() {
+				public void actionPerformed(java.awt.event.ActionEvent e) {
+					int type = cbM01TypeOfMark.getSelectedIndex();
+
+					if (buoy == null) {
+						buoy = new BuoyUkn(dia, Messages.getString("SmpDialogAction.150")); //$NON-NLS-1$
+						buoy.paintSign();
+						return;
+					}
+
+					Node n = buoy.getNode();
+					if (n == null)
+						return;
+
+					paintlock = true;
+					switch (type) {
+
+					case SeaMark.UNKNOWN_TYPE:
+						if (!(buoy instanceof BuoyUkn))
+							buoy = new BuoyUkn(dia, Messages.getString("SmpDialogAction.150")); //$NON-NLS-1$
+						buoy.setBuoyIndex(0);
+						break;
+
+					case SeaMark.LATERAL:
+						if (!(buoy instanceof BuoyLat)) {
+							buoy = new BuoyLat(dia, n);
+							buoy.setBuoyIndex(0);
+						}
+						break;
+
+					case SeaMark.CARDINAL:
+						if (!(buoy instanceof BuoyCard)) {
+							buoy = new BuoyCard(dia, n);
+							buoy.setBuoyIndex(0);
+						}
+						break;
+
+					case SeaMark.SAFE_WATER:
+						if (!(buoy instanceof BuoySaw)) {
+							buoy = new BuoySaw(dia, n);
+						}
+						buoy.setBuoyIndex(type);
+						break;
+
+					case SeaMark.ISOLATED_DANGER:
+						if (!(buoy instanceof BuoyIsol)) {
+							buoy = new BuoyIsol(dia, n);
+						}
+						buoy.setBuoyIndex(type);
+						break;
+
+					case SeaMark.SPECIAL_PURPOSE:
+						if (!(buoy instanceof BuoySpec)) {
+							buoy = new BuoySpec(dia, n);
+						}
+						buoy.setBuoyIndex(type);
+						break;
+
+					case SeaMark.LIGHT:
+						if (!(buoy instanceof BuoyNota)) {
+							buoy = new BuoyNota(dia, n);
+							buoy.setBuoyIndex(0);
+						}
+						break;
+					}
+
+					buoy.refreshStyles();
+					buoy.refreshLights();
+					buoy.setLightColour();
+					paintlock = false;
+					buoy.paintSign();
+				}
+			});
+		}
+		return cbM01TypeOfMark;
+	}
+
+	private JComboBox getCbM01CatOfMark() {
+		if (cbM01CatOfMark == null) {
+			cbM01CatOfMark = new JComboBox();
+			cbM01CatOfMark.setBounds(new Rectangle(65, 55, 155, 25));
+			cbM01CatOfMark.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			cbM01CatOfMark.setEnabled(true);
+
+			cbM01CatOfMark.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					if (buoy == null)
+						return;
+					buoy.setBuoyIndex(cbM01CatOfMark.getSelectedIndex());
+					buoy.refreshStyles();
+					buoy.refreshLights();
+					buoy.setLightColour();
+					buoy.paintSign();
+				}
+			});
+		}
+		return cbM01CatOfMark;
+	}
+
+	private JComboBox getCbM01StyleOfMark() {
+		if (cbM01StyleOfMark == null) {
+			cbM01StyleOfMark = new JComboBox();
+			cbM01StyleOfMark.setBounds(new Rectangle(50, 85, 170, 25));
+			cbM01StyleOfMark.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			cbM01StyleOfMark.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					if (buoy == null)
+						return;
+					buoy.setStyleIndex(cbM01StyleOfMark.getSelectedIndex());
+					buoy.refreshLights();
+					buoy.setLightColour();
+					buoy.paintSign();
+				}
+			});
+		}
+		return cbM01StyleOfMark;
+	}
+
+	private JTextField getTfM01Name() {
+		if (tfM01Name == null) {
+			tfM01Name = new JTextField();
+			tfM01Name.setBounds(new Rectangle(50, 120, 150, 20));
+			tfM01Name.addFocusListener(new FocusAdapter() {
+				public void focusLost(FocusEvent e) {
+					if (buoy == null)
+						return;
+					buoy.setName(tfM01Name.getText());
+					buoy.paintSign();
+				}
+			});
+		}
+		return tfM01Name;
+	}
+
+	private JCheckBox getCM01TopMark() {
+		if (cM01TopMark == null) {
+			cM01TopMark = new JCheckBox();
+			cM01TopMark.setBounds(new Rectangle(10, 170, 100, 20));
+			cM01TopMark.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			cM01TopMark.setText(Messages.getString("SmpDialogAction.166")); //$NON-NLS-1$
+			cM01TopMark.addItemListener(new ItemListener() {
+				public void itemStateChanged(ItemEvent e) {
+					if (buoy == null)
+						return;
+					buoy.setTopMark(cM01TopMark.isSelected());
+					buoy.paintSign();
+				}
+			});
+		}
+		return cM01TopMark;
+	}
+
+	private JComboBox getCbM01TopMark() {
+		if (cbM01TopMark == null) {
+			cbM01TopMark = new JComboBox();
+			cbM01TopMark.setBounds(new Rectangle(110, 170, 80, 20));
+			cbM01TopMark.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			cbM01TopMark.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					if (buoy == null)
+						return;
+					buoy.setTopMarkIndex(cbM01TopMark.getSelectedIndex());
+					buoy.paintSign();
+				}
+			});
+		}
+		return cbM01TopMark;
+	}
+
+	private JCheckBox getCM01Radar() {
+		if (cM01Radar == null) {
+			cM01Radar = new JCheckBox();
+			cM01Radar.setBounds(new Rectangle(10, 195, 120, 20));
+			cM01Radar.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			cM01Radar.setText(Messages.getString("SmpDialogAction.169")); //$NON-NLS-1$
+			cM01Radar.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					if (buoy == null)
+						return;
+					if (cM01Radar.isSelected()) {
+						buoy.setRadar(true);
+						buoy.setRacon(false);
+						cM01Racon.setSelected(false);
+					} else {
+						buoy.setRadar(false);
+					}
+					buoy.paintSign();
+				}
+			});
+		}
+		return cM01Radar;
+	}
+
+	private JCheckBox getCM01Racon() {
+		if (cM01Racon == null) {
+			cM01Racon = new JCheckBox();
+			cM01Racon.setBounds(new Rectangle(130, 195, 110, 20));
+			cM01Racon.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			cM01Racon.setText(Messages.getString("SmpDialogAction.171")); //$NON-NLS-1$
+			cM01Racon.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					if (buoy == null)
+						return;
+					if (cM01Racon.isSelected()) {
+						buoy.setRacon(true);
+						buoy.setRadar(false);
+						cM01Radar.setSelected(false);
+					} else {
+						buoy.setRacon(false);
+					}
+					buoy.paintSign();
+				}
+			});
+		}
+		return cM01Racon;
+	}
+
+	private JComboBox getCbM01Racon() {
+		if (cbM01Racon == null) {
+			cbM01Racon = new JComboBox();
+			cbM01Racon.setBounds(new Rectangle(240, 195, 80, 20));
+			cbM01Racon.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			cbM01Racon.removeAllItems();
+			cbM01Racon.addItem(Messages.getString("SmpDialogAction.8")); //$NON-NLS-1$
+			cbM01Racon.addItem(Messages.getString("SmpDialogAction.10")); //$NON-NLS-1$
+			cbM01Racon.addItem(Messages.getString("SmpDialogAction.11")); //$NON-NLS-1$
+			cbM01Racon.addItem(Messages.getString("SmpDialogAction.12")); //$NON-NLS-1$
+			cbM01Racon.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					if (buoy == null)
+						return;
+					int rac = cbM01Racon.getSelectedIndex();
+					buoy.setRaType(rac);
+					buoy.paintSign();
+				}
+			});
+		}
+		return cbM01Racon;
+	}
+
+	private JTextField getTfM01Racon() {
+		if (tfM01Racon == null) {
+			tfM01Racon = new JTextField();
+			tfM01Racon.setBounds(new Rectangle(345, 195, 30, 20));
+			tfM01Racon.addFocusListener(new FocusAdapter() {
+				public void focusLost(FocusEvent e) {
+					if (buoy == null)
+						return;
+					buoy.setRaconGroup(tfM01Racon.getText().trim());
+					buoy.paintSign();
+				}
+			});
+		}
+		return tfM01Racon;
+	}
+
+	private JCheckBox getCM01Fog() {
+		if (cM01Fog == null) {
+			cM01Fog = new JCheckBox();
+			cM01Fog.setBounds(new Rectangle(10, 220, 90, 20));
+			cM01Fog.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			cM01Fog.setText(Messages.getString("SmpDialogAction.174")); //$NON-NLS-1$
+			cM01Fog.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					if (buoy == null)
+						return;
+					buoy.setFog(cM01Fog.isSelected());
+					buoy.paintSign();
+				}
+			});
+		}
+		return cM01Fog;
+	}
+
+	private JComboBox getCbM01Fog() {
+		if (cbM01Fog == null) {
+			cbM01Fog = new JComboBox();
+			cbM01Fog.setBounds(new Rectangle(100, 220, 75, 20));
+			cbM01Fog.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			cbM01Fog.removeAllItems();
+			cbM01Fog.addItem(Messages.getString("SmpDialogAction.8")); //$NON-NLS-1$
+			cbM01Fog.addItem(Messages.getString("SmpDialogAction.14")); //$NON-NLS-1$
+			cbM01Fog.addItem(Messages.getString("SmpDialogAction.15")); //$NON-NLS-1$
+			cbM01Fog.addItem(Messages.getString("SmpDialogAction.16")); //$NON-NLS-1$
+			cbM01Fog.addItem(Messages.getString("SmpDialogAction.17")); //$NON-NLS-1$
+			cbM01Fog.addItem(Messages.getString("SmpDialogAction.18")); //$NON-NLS-1$
+			cbM01Fog.addItem(Messages.getString("SmpDialogAction.19")); //$NON-NLS-1$
+			cbM01Fog.addItem(Messages.getString("SmpDialogAction.20")); //$NON-NLS-1$
+			cbM01Fog.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					if (buoy == null)
+						return;
+					if (cbM01Fog.getSelectedIndex() > 0)
+						buoy.setFogSound(cbM01Fog.getSelectedIndex());
+					else
+						buoy.setFogSound(0);
+					buoy.paintSign();
+				}
+			});
+		}
+		return cbM01Fog;
+	}
+
+	private JTextField getTfM01FogGroup() {
+		if (tfM01FogGroup == null) {
+			tfM01FogGroup = new JTextField();
+			tfM01FogGroup.setBounds(new Rectangle(243, 220, 30, 20));
+			tfM01FogGroup.addFocusListener(new FocusAdapter() {
+				public void focusLost(FocusEvent e) {
+					if (buoy == null)
+						return;
+					buoy.setFogGroup(tfM01FogGroup.getText().trim());
+					buoy.paintSign();
+				}
+			});
+		}
+		return tfM01FogGroup;
+	}
+
+	private JTextField getTfM01FogPeriod() {
+		if (tfM01FogPeriod == null) {
+			tfM01FogPeriod = new JTextField();
+			tfM01FogPeriod.setBounds(new Rectangle(345, 220, 30, 20));
+			tfM01FogPeriod.addFocusListener(new FocusAdapter() {
+				public void focusLost(FocusEvent e) {
+					if (buoy == null)
+						return;
+					buoy.setFogPeriod(tfM01FogPeriod.getText().trim());
+					buoy.paintSign();
+				}
+			});
+		}
+		return tfM01FogPeriod;
+	}
+
+	private JCheckBox getCM01Fired() {
+		if (cM01Fired == null) {
+			cM01Fired = new JCheckBox();
+			cM01Fired.setBounds(new Rectangle(10, 245, 75, 20));
+			cM01Fired.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			cM01Fired.setText(Messages.getString("SmpDialogAction.177")); //$NON-NLS-1$
+			cM01Fired.addItemListener(new ItemListener() {
+				public void itemStateChanged(ItemEvent e) {
+					if (buoy == null) {
+						return;
+					}
+					buoy.setFired(cM01Fired.isSelected());
+					buoy.setLightColour();
+					buoy.paintSign();
+				}
+			});
+		}
+
+		return cM01Fired;
+	}
+
+	private JComboBox getCbM01Kennung() {
+		if (cbM01Kennung == null) {
+			cbM01Kennung = new JComboBox();
+			cbM01Kennung.setBounds(new Rectangle(300, 245, 75, 20));
+			cbM01Kennung.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					int i1, i2;
+					String c = ""; //$NON-NLS-1$ //$NON-NLS-2$
+					String it = (String) cbM01Kennung.getSelectedItem();
+
+					if (it == null)
+						return;
+					if (it.equals(Messages.getString("SmpDialogAction.212"))) //$NON-NLS-1$
+						return;
+					if (buoy == null)
+						return;
+
+					if (it.contains("(")) { //$NON-NLS-1$
+						i1 = it.indexOf("("); //$NON-NLS-1$
+						i2 = it.indexOf(")"); //$NON-NLS-1$
+						c = it.substring(i1 + 1, i2);
+						it = it.substring(0, i1) + it.substring(i2 + 1);
+					}
+					if (!c.isEmpty())
+						buoy.setLightGroup(c);
+					;
+					buoy.setLightChar(it);
+					buoy.paintSign();
+				}
+			});
+		}
+		return cbM01Kennung;
+	}
+
+	private JTextField getTfM01Height() {
+		if (tfM01Height == null) {
+			tfM01Height = new JTextField();
+			tfM01Height.setBounds(new Rectangle(54, 270, 30, 20));
+			tfM01Height.addFocusListener(new FocusAdapter() {
+				public void focusLost(FocusEvent e) {
+					if (buoy == null)
+						return;
+					buoy.setHeight(tfM01Height.getText().trim());
+					buoy.paintSign();
+				}
+			});
+		}
+		return tfM01Height;
+	}
+
+	private JTextField getTfM01Range() {
+		if (tfM01Range == null) {
+			tfM01Range = new JTextField();
+			tfM01Range.setBounds(new Rectangle(151, 270, 30, 20));
+			tfM01Range.addFocusListener(new FocusAdapter() {
+				public void focusLost(FocusEvent e) {
+					if (buoy == null)
+						return;
+					buoy.setRange(tfM01Range.getText().trim());
+					buoy.paintSign();
+				}
+			});
+		}
+		return tfM01Range;
+	}
+
+	private JTextField getTfM01Group() {
+		if (tfM01Group == null) {
+			tfM01Group = new JTextField();
+			tfM01Group.setBounds(new Rectangle(255, 270, 30, 20));
+			tfM01Group.addFocusListener(new FocusAdapter() {
+				public void focusLost(FocusEvent e) {
+					if (buoy == null)
+						return;
+					buoy.setLightGroup(tfM01Group.getText().trim());
+					buoy.paintSign();
+				}
+			});
+		}
+		return tfM01Group;
+	}
+
+	private JTextField getTfM01RepeatTime() {
+		if (tfM01RepeatTime == null) {
+			tfM01RepeatTime = new JTextField();
+			tfM01RepeatTime.setBounds(new Rectangle(345, 270, 30, 20));
+			tfM01RepeatTime.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					if (buoy == null)
+						return;
+					buoy.setLightPeriod(tfM01RepeatTime.getText().trim());
+					buoy.paintSign();
+				}
+			});
+
+			tfM01RepeatTime.addFocusListener(new FocusAdapter() {
+				public void focusLost(FocusEvent e) {
+					if (buoy == null)
+						return;
+					buoy.setLightPeriod(tfM01RepeatTime.getText().trim());
+					buoy.paintSign();
+				}
+			});
+		}
+		return tfM01RepeatTime;
+	}
+
+	private JComboBox getCbM01Colour() {
+		if (cbM01Colour == null) {
+			cbM01Colour = new JComboBox();
+			cbM01Colour.setBounds(new Rectangle(165, 295, 40, 20));
+			cbM01Colour.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			cbM01Colour.addItem(""); //$NON-NLS-1$
+			cbM01Colour.addItem(Messages.getString("SmpDialogAction.190")); //$NON-NLS-1$
+			cbM01Colour.addItem(Messages.getString("SmpDialogAction.191")); //$NON-NLS-1$
+			cbM01Colour.addItem(Messages.getString("SmpDialogAction.192")); //$NON-NLS-1$
+			cbM01Colour.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					if (buoy == null)
+						return;
+					buoy.setLightColour((String) cbM01Colour.getSelectedItem());
+					buoy.paintSign();
+				}
+			});
+		}
+		return cbM01Colour;
+	}
+
+	private JComboBox getCbM01Sector() {
+		if (cbM01Sector == null) {
+			cbM01Sector = new JComboBox();
+			cbM01Sector.setBounds(new Rectangle(55, 295, 50, 20));
+			cbM01Sector.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			cbM01Sector.addItem(Messages.getString("SmpDialogAction.194")); //$NON-NLS-1$
+			cbM01Sector.addItem(Messages.getString("SmpDialogAction.195")); //$NON-NLS-1$
+			cbM01Sector.addItem(Messages.getString("SmpDialogAction.196")); //$NON-NLS-1$
+			cbM01Sector.addItem(Messages.getString("SmpDialogAction.197")); //$NON-NLS-1$
+			cbM01Sector.addItem(Messages.getString("SmpDialogAction.198")); //$NON-NLS-1$
+			cbM01Sector.addItem(Messages.getString("SmpDialogAction.199")); //$NON-NLS-1$
+			cbM01Sector.addItem(Messages.getString("SmpDialogAction.200")); //$NON-NLS-1$
+			cbM01Sector.addItem(Messages.getString("SmpDialogAction.201")); //$NON-NLS-1$
+			cbM01Sector.addItem(Messages.getString("SmpDialogAction.202")); //$NON-NLS-1$
+			cbM01Sector.addItem(Messages.getString("SmpDialogAction.203")); //$NON-NLS-1$
+			cbM01Sector.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					if (buoy == null)
+						return;
+					buoy.setSectorIndex(cbM01Sector.getSelectedIndex());
+					buoy.paintSign();
+				}
+			});
+		}
+		return cbM01Sector;
+	}
+
+	private JTextField getTfM01Bearing() {
+		if (tfM01Bearing == null) {
+			tfM01Bearing = new JTextField();
+			tfM01Bearing.setBounds(new Rectangle(255, 295, 30, 20));
+			tfM01Bearing.addFocusListener(new FocusAdapter() {
+				public void focusLost(FocusEvent e) {
+					if (buoy == null)
+						return;
+					buoy.setBearing1(tfM01Bearing.getText().trim());
+				}
+			});
+		}
+		return tfM01Bearing;
+	}
+
+	private JTextField getTfM02Bearing() {
+		if (tfM02Bearing == null) {
+			tfM02Bearing = new JTextField();
+			tfM02Bearing.setBounds(new Rectangle(300, 295, 30, 20));
+			tfM02Bearing.addFocusListener(new FocusAdapter() {
+				public void focusLost(FocusEvent e) {
+					buoy.setBearing2(tfM02Bearing.getText().trim());
+				}
+			});
+		}
+		return tfM02Bearing;
+	}
+
+	private JTextField getTfM01Radius() {
+		if (tfM01Radius == null) {
+			tfM01Radius = new JTextField();
+			tfM01Radius.setBounds(new Rectangle(355, 295, 30, 20));
+			tfM01Radius.addFocusListener(new FocusAdapter() {
+				public void focusLost(FocusEvent e) {
+					if (buoy == null)
+						return;
+					buoy.setRadius(tfM01Radius.getText().trim());
+				}
+			});
+		}
+		return tfM01Radius;
+	}
+
+	private JButton getBM01Close() {
+		if (bM01Close == null) {
+			bM01Close = new JButton();
+			bM01Close.setBounds(new Rectangle(20, 325, 110, 20));
+			bM01Close.setText(tr("Close")); //$NON-NLS-1$
+			bM01Close.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					// aufraeumen
+					/*
+					if (obuoy != null)
+						PicRebuild();
+					// Deaktivierung des Listeners
+					DataSet.removeSelectionListener(SmpListener);
+					Selection = null;
+					SmpItem.setEnabled(true);
+					onode = null;
+
+					dM01SeaMap.dispose();
+					 */
+				}
+			});
+			
+		}
+
+		return bM01Close;
+	}
+
+	private JButton getBM01Save() {
+		if (bM01Save == null) {
+			bM01Save = new JButton();
+			bM01Save.setBounds(new Rectangle(150, 325, 110, 20));
+			bM01Save.setText(tr("Save")); //$NON-NLS-1$
+			bM01Save.setEnabled(false);
+
+			bM01Save.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					cM01IconVisible.setIcon(new ImageIcon(getClass().getResource(
+							"/images/Auge.png"))); //$NON-NLS-1$
+					cM01IconVisible.setSelected(true);
+
+					buoy.saveSign();
+				}
+			});
+		}
+
+		return bM01Save;
+	}
+
+	private JCheckBox getCM01IconVisible() {
+		if (cM01IconVisible == null) {
+			cM01IconVisible = new JCheckBox();
+			cM01IconVisible.setBounds(new Rectangle(310, 325, 30, 21));
+			cM01IconVisible.setIcon(new ImageIcon(getClass().getResource(
+					"/images/AugeN.png"))); //$NON-NLS-1$
+			cM01IconVisible.setSelected(false);
+			cM01IconVisible.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					Command c;
+					Node n = null;
+					DataSet ds = Main.main.getCurrentDataSet();
+
+					if (buoy != null)
+						n = buoy.getNode();
+
+					if (cM01IconVisible.isSelected()) {
+						cM01IconVisible.setIcon(new ImageIcon(getClass().getResource(
+								"/images/AugeN.png"))); //$NON-NLS-1$
+						if (n != null) {
+							// seamark loeschen, wenn notwendig
+							if (n.getKeys().containsKey("seamark")) { //$NON-NLS-1$
+								smb = n.getKeys().get("seamark"); // smb merken //$NON-NLS-1$
+
+								c = new ChangePropertyCommand(n, "seamark", null); //$NON-NLS-1$
+								c.executeCommand();
+								ds.fireSelectionChanged();
+								obuoy = buoy;
+							}
+
+							// seamark:type loeschen, wenn notwendig
+							if (n.getKeys().containsKey("seamark:type")) { //$NON-NLS-1$
+								smt = n.getKeys().get("seamark:type"); // smt merken //$NON-NLS-1$
+
+								c = new ChangePropertyCommand(n, "seamark:type", null); //$NON-NLS-1$
+								c.executeCommand();
+								ds.fireSelectionChanged();
+								obuoy = buoy;
+							}
+
+						}
+					} else {
+						cM01IconVisible.setIcon(new ImageIcon(getClass().getResource(
+								"/images/Auge.png"))); //$NON-NLS-1$
+						PicRebuild();
+						obuoy = null;
+					}
+					buoy.paintSign();
+				}
+			});
+		}
+		return cM01IconVisible;
+	}
+
+	private JTextField getSM01StatusBar() {
+		if (sM01StatusBar == null) {
+			sM01StatusBar = new JTextField();
+			sM01StatusBar.setBounds(new Rectangle(7, 355, 385, 20));
+			sM01StatusBar.setBackground(SystemColor.activeCaptionBorder);
+		}
+		return sM01StatusBar;
+	}
+}
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages.properties
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages.properties	(revision 23382)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages.properties	(revision 23382)
@@ -0,0 +1,94 @@
+Buoy.01=Pillar Buoy
+Buoy.02=Can Buoy
+Buoy.03=Cone Buoy
+Buoy.04=Spar Buoy
+Buoy.05=Beacon
+Buoy.06=Tower
+Buoy.07=Float
+Buoy.08=Sphere Buoy
+Buoy.09=Barrel
+Buoy.10=Perch
+SmpDialogAction.0=Seamark Editor
+SmpDialogAction.1=Category:
+SmpDialogAction.10=Racon
+SmpDialogAction.101=IALA
+SmpDialogAction.103=Type:
+SmpDialogAction.107=Form:
+SmpDialogAction.109=Name:
+SmpDialogAction.11=Ramark
+SmpDialogAction.111=Other Features:
+SmpDialogAction.113=(          )
+SmpDialogAction.115=Group: (         )
+SmpDialogAction.117=Period:          s
+SmpDialogAction.119=Character:
+SmpDialogAction.12=Leading
+SmpDialogAction.121=Height:         m
+SmpDialogAction.123=Range:         M
+SmpDialogAction.125=Group: (         )
+SmpDialogAction.127=Period:          s
+SmpDialogAction.129=Sector:
+SmpDialogAction.131=Colour:
+SmpDialogAction.133=Brg:         \u00B0-        \u00B0, r:
+SmpDialogAction.134=-A
+SmpDialogAction.14=Horn
+SmpDialogAction.140=Single
+SmpDialogAction.141=Sectored
+SmpDialogAction.142=* Select Seamark *
+SmpDialogAction.143=Lateral Mark
+SmpDialogAction.144=Cardinal Mark
+SmpDialogAction.145=Safe Water Mark
+SmpDialogAction.146=Isolated Danger
+SmpDialogAction.147=Special Purpose
+SmpDialogAction.148=Light
+SmpDialogAction.15=Siren
+SmpDialogAction.150=Seamark not set
+SmpDialogAction.152=*Select Category*
+SmpDialogAction.153=Port
+SmpDialogAction.154=Starboard
+SmpDialogAction.155=Preferred Port
+SmpDialogAction.156=Preferred Starboard
+SmpDialogAction.157=*Select Category*
+SmpDialogAction.158=North
+SmpDialogAction.159=East
+SmpDialogAction.16=Dia
+SmpDialogAction.160=South
+SmpDialogAction.161=West
+SmpDialogAction.166=Topmark
+SmpDialogAction.169=Radar Reflector
+SmpDialogAction.17=Bell
+SmpDialogAction.171=Radar Beacon
+SmpDialogAction.174=Fog Signal
+SmpDialogAction.177=Lighted
+SmpDialogAction.18=Whis
+SmpDialogAction.19=Gong
+SmpDialogAction.190=W
+SmpDialogAction.191=R
+SmpDialogAction.192=G
+SmpDialogAction.194=All
+SmpDialogAction.195=1
+SmpDialogAction.196=2
+SmpDialogAction.197=3
+SmpDialogAction.198=4
+SmpDialogAction.199=5
+SmpDialogAction.20=Explos
+SmpDialogAction.200=6
+SmpDialogAction.201=7
+SmpDialogAction.202=8
+SmpDialogAction.203=9
+SmpDialogAction.26=active layer contains no OSM data
+SmpDialogAction.27=Please select a node
+SmpDialogAction.28=Please select only one node
+SmpDialogAction.4=Edit OpenSeaMap
+SmpDialogAction.9=Seamap Editor
+SmpDialogAction.91=Seamark not set
+SmpDialogAction.97=Seamark Properties
+SmpDialogAction.99=Region:
+SmpDialogAction.206=Lighthouse
+SmpDialogAction.207=Major Light
+SmpDialogAction.208=Minor Light
+SmpDialogAction.209=Light Vessel
+SmpDialogAction.210=Yellow X
+SmpDialogAction.211=Red X
+SmpDialogAction.212=Not set
+SmpDialogAction.213=*Select shape*
+SmpDialogAction.8=Any
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages_de.properties
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages_de.properties	(revision 23382)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages_de.properties	(revision 23382)
@@ -0,0 +1,95 @@
+Buoy.01=Bakentonne
+Buoy.02=Stumpftonne
+Buoy.03=Spitztonne
+Buoy.04=Spierentonne
+Buoy.05=Spiere
+Buoy.06=Tower
+Buoy.07=Leuchtfloß
+Buoy.08=Kugeltonne
+Buoy.09=Fasstonne
+Buoy.10=Pricke
+SmpDialogAction.0=Seezeichen Editor
+SmpDialogAction.1=Kategorie:
+SmpDialogAction.10=Racon
+SmpDialogAction.101=IALA
+SmpDialogAction.103=Typ:
+SmpDialogAction.107=Form:
+SmpDialogAction.109=Name:
+SmpDialogAction.11=Ramark
+SmpDialogAction.111=Andere Eigenschaften:
+SmpDialogAction.113=(          )
+SmpDialogAction.115=Gruppe:
+SmpDialogAction.117=Dauer:          s
+SmpDialogAction.119=Charakter:
+SmpDialogAction.12=Richtfeuer
+SmpDialogAction.121=Höhe:           m
+SmpDialogAction.123=Bereich:       M
+SmpDialogAction.125=Gruppe:
+SmpDialogAction.127=Dauer:           s
+SmpDialogAction.129=Sektor:
+SmpDialogAction.131=Farbe
+SmpDialogAction.133=Brg:         \u00B0-        \u00B0, r:
+SmpDialogAction.134=-A
+SmpDialogAction.14=Horn
+SmpDialogAction.140=einzeln
+SmpDialogAction.141=geteilt
+SmpDialogAction.142=*Wähle Seezeichen aus*
+SmpDialogAction.143=Fahrwassertonne
+SmpDialogAction.144=Untiefentonne
+SmpDialogAction.145=Ansteuertonne
+SmpDialogAction.146=Einzelgefahrentonne
+SmpDialogAction.147=Sonderzeichentonne
+SmpDialogAction.148=Leuchtfeuer
+SmpDialogAction.15=Sirene
+SmpDialogAction.150=kein Seezeichen ausgewählt
+SmpDialogAction.152=*Wähle Kategorie aus*
+SmpDialogAction.153=Backbord
+SmpDialogAction.154=Steuerbord
+SmpDialogAction.155=Abzweigung Backboard
+SmpDialogAction.156=Abzweigung Steuerbord
+SmpDialogAction.157=*Wähle Kategorie aus*
+SmpDialogAction.158=Nord
+SmpDialogAction.159=Ost
+SmpDialogAction.16=Doppelton
+SmpDialogAction.160=Süd
+SmpDialogAction.161=West
+SmpDialogAction.166=Topzeichen
+SmpDialogAction.169=Radar Reflektor
+SmpDialogAction.17=Glocke
+SmpDialogAction.171=Radar Bake
+SmpDialogAction.174=Nebelhorn
+SmpDialogAction.177=befeuert
+SmpDialogAction.18=Heulton
+SmpDialogAction.19=Gong
+SmpDialogAction.190=W
+SmpDialogAction.191=R
+SmpDialogAction.192=G
+SmpDialogAction.194=Com
+SmpDialogAction.195=1
+SmpDialogAction.196=2
+SmpDialogAction.197=3
+SmpDialogAction.198=4
+SmpDialogAction.199=5
+SmpDialogAction.20=Explosion
+SmpDialogAction.200=6
+SmpDialogAction.201=7
+SmpDialogAction.202=8
+SmpDialogAction.203=9
+SmpDialogAction.26=Aktive Ebene enthält keine OSM-Daten
+SmpDialogAction.27=Bitte einen Knoten anwählen
+SmpDialogAction.28=Bitte nur einen Knoten anwählen
+SmpDialogAction.4=OpenSeaMap Editor
+SmpDialogAction.9=Seekarten Editor
+SmpDialogAction.91=Seezeichen nicht gesetzt
+SmpDialogAction.97=Seezeichen: Eigenschaften
+SmpDialogAction.97=Region:
+SmpDialogAction.206=Leuchtturm
+SmpDialogAction.207=primäres Feuer
+SmpDialogAction.208=sekundäres Feuer
+SmpDialogAction.209=Feuerschiff
+SmpDialogAction.210=X gelb
+SmpDialogAction.211=X rot
+SmpDialogAction.212=Unbekannt
+SmpDialogAction.213=*Wähle Form aus*
+SmpDialogAction.8=beliebig
+
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages_en.properties
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages_en.properties	(revision 23382)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/msg/messages_en.properties	(revision 23382)
@@ -0,0 +1,94 @@
+Buoy.01=Pillar Buoy
+Buoy.02=Can Buoy
+Buoy.03=Cone Buoy
+Buoy.04=Spar Buoy
+Buoy.05=Beacon
+Buoy.06=Tower
+Buoy.07=Float
+Buoy.08=Sphere Buoy
+Buoy.09=Barrel
+Buoy.10=Perch
+SmpDialogAction.0=Seamark Editor
+SmpDialogAction.1=Category:
+SmpDialogAction.10=Racon
+SmpDialogAction.101=IALA
+SmpDialogAction.103=Type:
+SmpDialogAction.107=Shape:
+SmpDialogAction.109=Name:
+SmpDialogAction.11=Ramark
+SmpDialogAction.111=Other Features:
+SmpDialogAction.113=(          )
+SmpDialogAction.115=Group: (          )
+SmpDialogAction.117=Period:          s
+SmpDialogAction.119=Character:
+SmpDialogAction.12=Leading
+SmpDialogAction.121=Height:         m
+SmpDialogAction.123=Range:         M
+SmpDialogAction.125=Group: (         )
+SmpDialogAction.127=Period:          s
+SmpDialogAction.129=Sector:
+SmpDialogAction.131=Colour:
+SmpDialogAction.133=Brg:         \u00B0-        \u00B0, r:
+SmpDialogAction.134=-A
+SmpDialogAction.14=Horn
+SmpDialogAction.140=Single
+SmpDialogAction.141=Sectored
+SmpDialogAction.142=* Select Seamark *
+SmpDialogAction.143=Lateral Mark
+SmpDialogAction.144=Cardinal Mark
+SmpDialogAction.145=Safe Water Mark
+SmpDialogAction.146=Isolated Danger
+SmpDialogAction.147=Special Purpose
+SmpDialogAction.148=Light
+SmpDialogAction.15=Siren
+SmpDialogAction.150=Seamark not set
+SmpDialogAction.152=*Select Category*
+SmpDialogAction.153=Port
+SmpDialogAction.154=Starboard
+SmpDialogAction.155=Preferred Port
+SmpDialogAction.156=Preferred Starboard
+SmpDialogAction.157=*Select Category*
+SmpDialogAction.158=North
+SmpDialogAction.159=East
+SmpDialogAction.16=Dia
+SmpDialogAction.160=South
+SmpDialogAction.161=West
+SmpDialogAction.166=Topmark
+SmpDialogAction.169=Radar Reflector
+SmpDialogAction.17=Bell
+SmpDialogAction.171=Radar Beacon
+SmpDialogAction.174=Fog Signal
+SmpDialogAction.177=Lighted
+SmpDialogAction.18=Whis
+SmpDialogAction.19=Gong
+SmpDialogAction.190=W
+SmpDialogAction.191=R
+SmpDialogAction.192=G
+SmpDialogAction.194=All
+SmpDialogAction.195=1
+SmpDialogAction.196=2
+SmpDialogAction.197=3
+SmpDialogAction.198=4
+SmpDialogAction.199=5
+SmpDialogAction.20=Explos
+SmpDialogAction.200=6
+SmpDialogAction.201=7
+SmpDialogAction.202=8
+SmpDialogAction.203=9
+SmpDialogAction.26=active layer contains no OSM data
+SmpDialogAction.27=Please select a node
+SmpDialogAction.28=Please select only one node
+SmpDialogAction.4=Edit OpenSeaMap
+SmpDialogAction.9=Seamap Editor
+SmpDialogAction.91=Seamark not set
+SmpDialogAction.97=Seamark Properties
+SmpDialogAction.99=Region:
+SmpDialogAction.206=Lighthouse
+SmpDialogAction.207=Major Light
+SmpDialogAction.208=Minor Light
+SmpDialogAction.209=Light Vessel
+SmpDialogAction.210=Yellow X
+SmpDialogAction.211=Red X
+SmpDialogAction.212=Not set
+SmpDialogAction.213=*Select shape*
+SmpDialogAction.8=Any
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 23382)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java	(revision 23382)
@@ -0,0 +1,210 @@
+package oseam.seamarks;
+
+import java.util.Iterator;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.command.ChangePropertyCommand;
+import org.openstreetmap.josm.data.osm.Node;
+
+public abstract class SeaMark {
+
+
+	/**
+	 * CONSTANTS
+	 */
+
+	/**
+	 * Colours
+	 */
+
+	public final static int UNKNOWN_COLOUR = 0;
+	public final static int RED = 1;
+	public final static int GREEN = 2;
+	public final static int RED_GREEN_RED = 3;
+	public final static int GREEN_RED_GREEN = 4;
+	public final static int RED_WHITE = 5;
+	public final static int BLACK_YELLOW = 6;
+	public final static int BLACK_YELLOW_BLACK = 7;
+	public final static int YELLOW_BLACK = 8;
+	public final static int YELLOW_BLACK_YELLOW = 9;
+	public final static int BLACK_RED_BLACK = 10;
+	public final static int YELLOW = 11;
+	public final static int WHITE_LIGHT = 1;
+	public final static int RED_LIGHT = 2;
+	public final static int GREEN_LIGHT = 3;
+
+	/**
+	 * Types - correspond to TypeIndex
+	 */
+	public final static int UNKNOWN_TYPE = 0;
+	public final static int LATERAL = 1;
+	public final static int CARDINAL = 2;
+	public final static int SAFE_WATER = 3;
+	public final static int ISOLATED_DANGER = 4;
+	public final static int SPECIAL_PURPOSE = 5;
+	public final static int LIGHT = 6;
+
+	/**
+	 * Categories - correspond to CatIndex
+	 */
+	public final static int UNKNOWN_CAT = 0;
+	public final static int PORT_HAND = 1;
+	public final static int STARBOARD_HAND = 2;
+	public final static int PREF_PORT_HAND = 3;
+	public final static int PREF_STARBOARD_HAND = 4;
+	public final static int CARD_NORTH = 1;
+	public final static int CARD_EAST = 2;
+	public final static int CARD_SOUTH = 3;
+	public final static int CARD_WEST = 4;
+	public final static int LIGHT_HOUSE = 1;
+	public final static int LIGHT_MAJOR = 2;
+	public final static int LIGHT_MINOR = 3;
+	public final static int LIGHT_VESSEL = 4;
+
+	/**
+	 * Regions
+	 */
+	public final static boolean IALA_A = false;
+	public final static boolean IALA_B = true;
+
+	/**
+	 * Shapes - correspond to StyleIndex
+	 */
+	public final static int UNKNOWN_SHAPE = 0;
+	public final static int LAT_CAN = 1;
+	public final static int LAT_CONE = 1;
+	public final static int LAT_PILLAR = 2;
+	public final static int LAT_SPAR = 3;
+	public final static int LAT_BEACON = 4;
+	public final static int LAT_TOWER = 5;
+	public final static int LAT_FLOAT = 6;
+	public final static int LAT_PERCH = 7;
+	public final static int CARD_PILLAR = 1;
+	public final static int CARD_SPAR = 2;
+	public final static int CARD_BEACON = 3;
+	public final static int CARD_TOWER = 4;
+	public final static int CARD_FLOAT = 5;
+	public final static int SAFE_PILLAR = 1;
+	public final static int SAFE_SPAR = 2;
+	public final static int SAFE_SPHERE = 3;
+	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;
+	public final static int ISOL_BEACON = 3;
+	public final static int ISOL_TOWER = 4;
+	public final static int ISOL_FLOAT = 5;
+	public final static int SPEC_PILLAR = 1;
+	public final static int SPEC_CAN = 2;
+	public final static int SPEC_CONE = 3;
+	public final static int SPEC_SPAR = 4;
+	public final static int SPEC_BEACON = 5;
+	public final static int SPEC_TOWER = 6;
+	public final static int SPEC_FLOAT = 7;
+	public final static int SPEC_SPHERE = 8;
+	public final static int SPEC_BARREL = 9;
+
+	/**
+	 * Topmark Shapes - correspond to TopMarkIndex
+	 */
+
+	public final static int UNKNOWN_TOPMARK = 0;
+	public final static int TOP_YELLOW_X = 1;
+	public final static int TOP_RED_X = 2;
+	public final static int TOP_YELLOW_CAN = 3;
+	public final static int TOP_YELLOW_CONE = 4;
+
+	/**
+	 * Radar Beacons - correspond to Ratyp Index
+	 */
+
+	public final static int UNKNOWN_RATYPE = 0;
+	public final static int RATYPE_RACON = 1;
+	public final static int RATYPE_RAMARK = 2;
+	public final static int RATYPE_LEADING = 3;
+
+	/**
+	 * Fog Signals - correspond to FogSound Index
+	 */
+
+	public final static int UNKNOWN_FOG = 0;
+	public final static int FOG_HORN = 1;
+	public final static int FOG_SIREN = 2;
+	public final static int FOG_DIA = 3;
+	public final static int FOG_BELL = 4;
+	public final static int FOG_WHIS = 5;
+	public final static int FOG_GONG = 6;
+	public final static int FOG_EXPLOS = 7;
+
+	/**
+	 * Variables
+	 */
+
+	/**
+	 * private Variablen
+	 */
+
+	public abstract void paintSign();
+
+	public abstract void saveSign();
+
+	private int Colour = UNKNOWN_COLOUR;
+
+	public int getColour() {
+		return Colour;
+	}
+
+	public void setColour(int colour) {
+		if (colour < UNKNOWN_COLOUR || colour > RED_WHITE) {
+			return;
+		}
+		Colour = colour;
+
+	}
+
+	private String ErrMsg = null;
+
+	public String getErrMsg() {
+		return ErrMsg;
+	}
+
+	public void setErrMsg(String errMsg) {
+		ErrMsg = errMsg;
+	}
+
+	private String Name;
+
+	public String getName() {
+		return Name;
+	}
+
+	public void setName(String name) {
+		Name = name;
+	}
+
+	private boolean valid = true;
+
+	public boolean isValid() {
+		return valid;
+	}
+
+	public void setValid(boolean valid) {
+		this.valid = valid;
+
+	}
+
+	protected void delSeaMarkKeys(Node node) {
+		Iterator<String> it = node.getKeys().keySet().iterator();
+		String str;
+
+		while (it.hasNext()) {
+			str = it.next();
+
+			if (str.contains("seamark") == true)
+				if (str.compareTo("seamark") != 0) {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node, str, null));
+				}
+		}
+	}
+
+}
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/buoys/Buoy.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/buoys/Buoy.java	(revision 23382)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/buoys/Buoy.java	(revision 23382)
@@ -0,0 +1,1098 @@
+package oseam.seamarks.buoys;
+
+import java.util.Map;
+import java.util.Iterator;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.swing.ImageIcon;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.command.ChangePropertyCommand;
+import org.openstreetmap.josm.data.osm.Node;
+
+import oseam.Messages;
+import oseam.dialogs.OSeaMAction;
+import oseam.seamarks.SeaMark;
+
+
+abstract public class Buoy extends SeaMark {
+
+	public abstract void setLightColour();
+
+	/**
+	 * private Variablen
+	 */
+
+	private int BuoyIndex = 0;
+
+	public int getBuoyIndex() {
+		return BuoyIndex;
+	}
+
+	public void setBuoyIndex(int buoyIndex) {
+		BuoyIndex = buoyIndex;
+	}
+
+	private int StyleIndex = 0;
+
+	public int getStyleIndex() {
+		return StyleIndex;
+	}
+
+	public void setStyleIndex(int styleIndex) {
+		StyleIndex = styleIndex;
+	}
+
+	private boolean Region = false;
+
+	public boolean getRegion() {
+		return Region;
+	}
+
+	public void setRegion(boolean region) {
+		Region = region;
+	}
+
+	private boolean Radar = false;
+
+	public boolean hasRadar() {
+		return Radar;
+	}
+
+	public void setRadar(boolean radar) {
+		Radar = radar;
+	}
+
+	private boolean Racon = false;
+
+	public boolean hasRacon() {
+		return Racon;
+	}
+
+	public void setRacon(boolean racon) {
+		Racon = racon;
+	}
+
+	private int RaType = 0;
+
+	public int getRaType() {
+		return RaType;
+	}
+
+	public void setRaType(int type) {
+		RaType = type;
+	}
+
+	private String RaconGroup = "";
+
+	public String getRaconGroup() {
+		return RaconGroup;
+	}
+
+	public void setRaconGroup(String raconGroup) {
+		RaconGroup = raconGroup;
+	}
+
+	private boolean Fog = false;
+
+	public boolean hasFog() {
+		return Fog;
+	}
+
+	public void setFog(boolean fog) {
+		Fog = fog;
+	}
+
+	private int FogSound = 0;
+
+	public int getFogSound() {
+		return FogSound;
+	}
+
+	public void setFogSound(int sound) {
+		FogSound = sound;
+	}
+
+	private String FogGroup = "";
+
+	public String getFogGroup() {
+		return FogGroup;
+	}
+
+	public void setFogGroup(String group) {
+		FogGroup = group;
+	}
+
+	private String FogPeriod = "";
+
+	public String getFogPeriod() {
+		return FogPeriod;
+	}
+
+	public void setFogPeriod(String period) {
+		FogPeriod = period;
+	}
+
+	private boolean Fired = false;
+
+	public boolean isFired() {
+		return Fired;
+	}
+
+	public void setFired(boolean fired) {
+		Fired = fired;
+	}
+
+	private boolean Sectored = false;
+
+	public boolean isSectored() {
+		return Sectored;
+	}
+
+	public void setSectored(boolean sectored) {
+		Sectored = sectored;
+		if (sectored) {
+			LightColour[0] = "";
+		} else {
+			setSectorIndex(0);
+			setLightChar("");
+			setLightColour("");
+			setLightGroup("");
+			setHeight("");
+			setRange("");
+			setBearing1("");
+			setBearing2("");
+			setRadius("");
+		}
+	}
+
+	private int SectorIndex = 0;
+
+	public int getSectorIndex() {
+		return SectorIndex;
+	}
+
+	public void setSectorIndex(int sector) {
+		SectorIndex = sector;
+	}
+
+	private String[] LightChar = new String[10];
+
+	public String getLightChar() {
+		if (LightChar[SectorIndex] == null)
+			return (LightChar[0]);
+		return LightChar[SectorIndex];
+	}
+
+	public void setLightChar(String lightChar) {
+		if (SectorIndex == 0) {
+			LightChar = new String[10];
+			LightChar[0] = lightChar;
+		} else if (LightChar[0].isEmpty())
+			LightChar[SectorIndex] = lightChar;
+	}
+
+	private String[] LightColour = new String[10];
+
+	public String getLightColour() {
+		if (LightColour[SectorIndex] == null)
+			return (LightColour[0]);
+		return LightColour[SectorIndex];
+	}
+
+	public void setLightColour(String lightColour) {
+		LightColour[SectorIndex] = lightColour;
+	}
+
+	private String[] LightGroup = new String[10];
+
+	public String getLightGroup() {
+		if (LightGroup[SectorIndex] == null)
+			return (LightGroup[0]);
+		return LightGroup[SectorIndex];
+	}
+
+	public void setLightGroup(String lightGroup) {
+		if (SectorIndex == 0)
+			LightGroup = new String[10];
+		LightGroup[SectorIndex] = lightGroup;
+	}
+
+	protected void setLightGroup(Map<String, String> k) {
+		String s = "";
+		if (k.containsKey("seamark:light:group")) {
+			s = k.get("seamark:light:group");
+			setLightGroup(s);
+		}
+	}
+
+	private String[] Height = new String[10];
+
+	public String getHeight() {
+		if (Height[SectorIndex] == null)
+			return (Height[0]);
+		return Height[SectorIndex];
+	}
+
+	public void setHeight(String height) {
+		if (SectorIndex == 0)
+			Height = new String[10];
+		Height[SectorIndex] = height;
+	}
+
+	private String[] Range = new String[10];
+
+	public String getRange() {
+		if (Range[SectorIndex] == null)
+			return (Range[0]);
+		return Range[SectorIndex];
+	}
+
+	public void setRange(String range) {
+		if (SectorIndex == 0)
+			Range = new String[10];
+		Range[SectorIndex] = range;
+	}
+
+	private String[] Bearing1 = new String[10];
+
+	public String getBearing1() {
+		if (Bearing1[SectorIndex] == null)
+			return (Bearing1[0]);
+		return Bearing1[SectorIndex];
+	}
+
+	public void setBearing1(String bearing) {
+		if (SectorIndex == 0)
+			Bearing1 = new String[10];
+		Bearing1[SectorIndex] = bearing;
+	}
+
+	private String[] Bearing2 = new String[10];
+
+	public String getBearing2() {
+		if (Bearing2[SectorIndex] == null)
+			return (Bearing2[0]);
+		return Bearing2[SectorIndex];
+	}
+
+	public void setBearing2(String bearing) {
+		if (SectorIndex == 0)
+			Bearing2 = new String[10];
+		Bearing2[SectorIndex] = bearing;
+	}
+
+	private String[] Radius = new String[10];
+
+	public String getRadius() {
+		if (Radius[SectorIndex] == null)
+			return (Radius[0]);
+		return Radius[SectorIndex];
+	}
+
+	public void setRadius(String radius) {
+		if (SectorIndex == 0)
+			Radius = new String[10];
+		Radius[SectorIndex] = radius;
+	}
+
+	private String[] LightPeriod = new String[10];
+
+	public String getLightPeriod() {
+		if (LightPeriod[SectorIndex] == null)
+			return (LightPeriod[0]);
+		return LightPeriod[SectorIndex];
+	}
+
+	public void setLightPeriod(String lightPeriod) {
+		String regex = "^[\\d\\s.]+$";
+
+		if (!lightPeriod.isEmpty()) {
+
+			Pattern pat = Pattern.compile(regex);
+			Matcher matcher = pat.matcher(lightPeriod);
+
+			if (matcher.find()) {
+				setErrMsg(null);
+			} else {
+				setErrMsg("Must be a number");
+				lightPeriod = "";
+				dlg.tfM01RepeatTime.requestFocus();
+			}
+		}
+		if (SectorIndex == 0)
+			LightPeriod = new String[10];
+		LightPeriod[SectorIndex] = lightPeriod;
+	}
+
+	private Node Node = null;
+
+	public Node getNode() {
+		return Node;
+	}
+
+	public void setNode(Node node) {
+		Node = node;
+	}
+
+	private boolean TopMark = false;
+
+	public boolean hasTopMark() {
+		return TopMark;
+	}
+
+	public void setTopMark(boolean topMark) {
+		TopMark = topMark;
+		/*
+		 * if (dlg.cM01TopMark == null) { return; }
+		 */
+		dlg.cM01TopMark.setSelected(topMark);
+	}
+
+	private int TopMarkIndex = 0;
+
+	public int getTopMarkIndex() {
+		return TopMarkIndex;
+	}
+
+	public void setTopMarkIndex(int index) {
+		TopMarkIndex = index;
+	}
+
+	protected OSeaMAction dlg = null; // hier wird der Dialog referenziert
+
+	public OSeaMAction getDlg() {
+		return dlg;
+	}
+
+	public void setDlg(OSeaMAction dlg) {
+		this.dlg = dlg;
+	}
+
+	protected Buoy(OSeaMAction dia) {
+		dlg = dia;
+	}
+
+	public boolean isValid() {
+		return false;
+	}
+
+	public void parseLights(Map<String, String> k) {
+		setFired(false);
+		setSectored(false);
+		Iterator it = k.entrySet().iterator();
+		while (it.hasNext()) {
+			Map.Entry entry = (Map.Entry) it.next();
+			String key = (String) entry.getKey();
+			String value = ((String) entry.getValue()).trim();
+			if (key.contains("seamark:light:")) {
+				setFired(true);
+				int index = 0;
+				key = key.substring(14);
+				if (key.matches("^\\d:.*")) {
+					index = key.charAt(0) - '0';
+					key = key.substring(2);
+				} else if (key.matches("^\\d$")) {
+					index = key.charAt(0) - '0';
+					String values[] = value.split(":");
+					if (values[0].equals("red"))
+						LightColour[index] = "R";
+					else if (values[0].equals("green"))
+						LightColour[index] = "G";
+					else if (values[0].equals("white"))
+						LightColour[index] = "W";
+					if (values.length > 1)
+						Bearing1[index] = values[1];
+					if (values.length > 2)
+						Bearing2[index] = values[2];
+					if (values.length > 3)
+						Radius[index] = values[3];
+				} else {
+					index = 0;
+				}
+				if (index != 0)
+					setSectored(true);
+				if (key.equals("colour")) {
+					if (value.equals("red"))
+						LightColour[index] = "R";
+					else if (value.equals("green"))
+						LightColour[index] = "G";
+					else if (value.equals("white"))
+						LightColour[index] = "W";
+				} else if (key.equals("character")) {
+					LightChar[index] = value;
+				} else if (key.equals("group")) {
+					LightGroup[index] = value;
+				} else if (key.equals("period")) {
+					LightPeriod[index] = value;
+				} else if (key.equals("height")) {
+					Height[index] = value;
+				} else if (key.equals("range")) {
+					Range[index] = value;
+				}
+			}
+		}
+		setSectorIndex(0);
+		dlg.cbM01Sector.setSelectedIndex(0);
+		dlg.cM01Fired.setSelected(isFired());
+		dlg.rbM01Fired1.setSelected(!isSectored());
+		dlg.rbM01FiredN.setSelected(isSectored());
+		dlg.cbM01Kennung.setSelectedItem(getLightChar());
+		dlg.tfM01Height.setText(getHeight());
+		dlg.tfM01Range.setText(getRange());
+		dlg.tfM01Group.setText(getLightGroup());
+		dlg.tfM01RepeatTime.setText(getLightPeriod());
+		dlg.cbM01Colour.setSelectedItem(getLightColour());
+	}
+
+	public void parseFogRadar(Map<String, String> k) {
+		String str;
+		setFog(false);
+		setRadar(false);
+		setRacon(false);
+		if (k.containsKey("seamark:fog_signal")
+				|| k.containsKey("seamark:fog_signal:category")
+				|| k.containsKey("seamark:fog_signal:group")
+				|| k.containsKey("seamark:fog_signal:period")) {
+			setFog(true);
+			if (k.containsKey("seamark:fog_signal:category")) {
+				str = k.get("seamark:fog_signal:category");
+				if (str.equals("horn"))
+					setFogSound(FOG_HORN);
+				else if (str.equals("siren"))
+					setFogSound(FOG_SIREN);
+				else if (str.equals("diaphone"))
+					setFogSound(FOG_DIA);
+				else if (str.equals("bell"))
+					setFogSound(FOG_BELL);
+				else if (str.equals("whis"))
+					setFogSound(FOG_WHIS);
+				else if (str.equals("gong"))
+					setFogSound(FOG_GONG);
+				else if (str.equals("explosive"))
+					setFogSound(FOG_EXPLOS);
+				else
+					setFogSound(UNKNOWN_FOG);
+			}
+			if (k.containsKey("seamark:fog_signal:group"))
+				setFogGroup(k.get("seamark:fog_signal:group"));
+			if (k.containsKey("seamark:fog_signal:period"))
+				setFogPeriod(k.get("seamark:fog_signal:period"));
+		}
+		dlg.cM01Fog.setSelected(hasFog());
+		dlg.cbM01Fog.setSelectedIndex(getFogSound());
+		dlg.tfM01FogGroup.setText(getFogGroup());
+		dlg.tfM01FogPeriod.setText(getFogPeriod());
+
+		if (k.containsKey("seamark:radar_transponder")
+				|| k.containsKey("seamark:radar_transponder:category")
+				|| k.containsKey("seamark:radar_transponder:group")) {
+			setRacon(true);
+			if (k.containsKey("seamark:radar_transponder:category")) {
+				str = k.get("seamark:radar_transponder:category");
+				if (str.equals("racon"))
+					setRaType(SeaMark.RATYPE_RACON);
+				else if (str.equals("ramark"))
+					setRaType(RATYPE_RAMARK);
+				else if (str.equals("leading"))
+					setRaType(RATYPE_LEADING);
+				else
+					setRaType(UNKNOWN_RATYPE);
+			}
+			if (k.containsKey("seamark:radar_transponder:group"))
+				setRaconGroup(k.get("seamark:radar_transponder:group"));
+		} else if (k.containsKey("seamark:radar_reflector"))
+			setRadar(true);
+		dlg.cM01Radar.setSelected(hasRadar());
+		dlg.cM01Racon.setSelected(hasRacon());
+		dlg.cbM01Racon.setSelectedIndex(getRaType());
+		dlg.tfM01Racon.setText(getRaconGroup());
+	}
+
+	public void paintSign() {
+
+		if (dlg.paintlock)
+			return;
+		else
+			dlg.paintlock = true;
+
+		dlg.lM01Icon.setIcon(null);
+		dlg.lM02Icon.setIcon(null);
+		dlg.lM03Icon.setIcon(null);
+		dlg.lM04Icon.setIcon(null);
+		dlg.lM05Icon.setIcon(null);
+		dlg.lM06Icon.setIcon(null);
+		dlg.lM01NameMark.setText("");
+		dlg.lM01FireMark.setText("");
+		dlg.lM01FogMark.setText("");
+		dlg.lM01RadarMark.setText("");
+
+		dlg.rbM01RegionA.setSelected(!getRegion());
+		dlg.rbM01RegionB.setSelected(getRegion());
+
+		if (isValid()) {
+			dlg.lM01NameMark.setText(getName());
+
+			dlg.bM01Save.setEnabled(true);
+
+			dlg.cM01TopMark.setSelected(hasTopMark());
+			dlg.cM01Fired.setSelected(isFired());
+
+			dlg.tfM01RepeatTime.setText(getLightPeriod());
+
+			dlg.tfM01Name.setText(getName());
+			dlg.tfM01Name.setEnabled(true);
+
+			if (hasRadar()) {
+				dlg.lM03Icon.setIcon(new ImageIcon(getClass().getResource(
+						"/images/Radar_Reflector_355.png")));
+			}
+
+			else if (hasRacon()) {
+				dlg.lM04Icon.setIcon(new ImageIcon(getClass().getResource(
+						"/images/Radar_Station.png")));
+				if (getRaType() != 0) {
+					String c = (String) dlg.cbM01Racon.getSelectedItem();
+					if ((getRaType() == RATYPE_RACON) && !getRaconGroup().isEmpty())
+						c += ("(" + getRaconGroup() + ")");
+					dlg.lM01RadarMark.setText(c);
+				}
+				dlg.cbM01Racon.setVisible(true);
+				if (getRaType() == RATYPE_RACON) {
+					dlg.lM01Racon.setVisible(true);
+					dlg.tfM01Racon.setVisible(true);
+					dlg.tfM01Racon.setEnabled(true);
+				} else {
+					dlg.lM01Racon.setVisible(false);
+					dlg.tfM01Racon.setVisible(false);
+				}
+			} else {
+				dlg.cbM01Racon.setVisible(false);
+				dlg.lM01Racon.setVisible(false);
+				dlg.tfM01Racon.setVisible(false);
+			}
+
+			if (hasFog()) {
+				dlg.lM05Icon.setIcon(new ImageIcon(getClass().getResource(
+						"/images/Fog_Signal.png")));
+				if (getFogSound() != 0) {
+					String c = (String) dlg.cbM01Fog.getSelectedItem();
+					if (!getFogGroup().isEmpty())
+						c += ("(" + getFogGroup() + ")");
+					if (!getFogPeriod().isEmpty())
+						c += (" " + getFogPeriod() + "s");
+					dlg.lM01FogMark.setText(c);
+				}
+				dlg.cbM01Fog.setVisible(true);
+				if (getFogSound() == 0) {
+					dlg.lM01FogGroup.setVisible(false);
+					dlg.tfM01FogGroup.setVisible(false);
+					dlg.lM01FogPeriod.setVisible(false);
+					dlg.tfM01FogPeriod.setVisible(false);
+				} else {
+					dlg.lM01FogGroup.setVisible(true);
+					dlg.tfM01FogGroup.setVisible(true);
+					dlg.lM01FogPeriod.setVisible(true);
+					dlg.tfM01FogPeriod.setVisible(true);
+				}
+			} else {
+				dlg.cbM01Fog.setVisible(false);
+				dlg.lM01FogGroup.setVisible(false);
+				dlg.tfM01FogGroup.setVisible(false);
+				dlg.lM01FogPeriod.setVisible(false);
+				dlg.tfM01FogPeriod.setVisible(false);
+			}
+
+			if (isFired()) {
+				String lp, c;
+				String tmp = null;
+				int i1;
+
+				String col = getLightColour();
+				if (col.equals("W")) {
+					dlg.lM02Icon.setIcon(new ImageIcon(getClass().getResource(
+							"/images/Light_White_120.png")));
+					dlg.cbM01Colour.setSelectedIndex(WHITE_LIGHT);
+				} else if (col.equals("R")) {
+					dlg.lM02Icon.setIcon(new ImageIcon(getClass().getResource(
+							"/images/Light_Red_120.png")));
+					dlg.cbM01Colour.setSelectedIndex(RED_LIGHT);
+				} else if (col.equals("G")) {
+					dlg.lM02Icon.setIcon(new ImageIcon(getClass().getResource(
+							"/images/Light_Green_120.png")));
+					dlg.cbM01Colour.setSelectedIndex(GREEN_LIGHT);
+				} else {
+					dlg.lM02Icon.setIcon(new ImageIcon(getClass().getResource(
+							"/images/Light_Magenta_120.png")));
+					dlg.cbM01Colour.setSelectedIndex(UNKNOWN_COLOUR);
+				}
+
+				c = getLightChar();
+				dlg.cbM01Kennung.setSelectedItem(c);
+				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;
+					dlg.cbM01Kennung.setSelectedItem(c);
+				} else if (!getLightGroup().isEmpty())
+					c = c + "(" + getLightGroup() + ")";
+				if (dlg.cbM01Kennung.getSelectedIndex() == 0)
+					dlg.cbM01Kennung.setSelectedItem(c);
+				c = c + " " + getLightColour();
+				lp = getLightPeriod();
+				if (!lp.isEmpty())
+					c = c + " " + lp + "s";
+				dlg.lM01FireMark.setText(c);
+				dlg.cM01Fired.setVisible(true);
+				dlg.lM01Kennung.setVisible(true);
+				dlg.cbM01Kennung.setVisible(true);
+				if (((String) dlg.cbM01Kennung.getSelectedItem()).contains("(")) {
+					dlg.tfM01Group.setVisible(false);
+					dlg.lM01Group.setVisible(false);
+				} else {
+					dlg.lM01Group.setVisible(true);
+					dlg.tfM01Group.setVisible(true);
+				}
+				dlg.tfM01Group.setText(getLightGroup());
+				dlg.lM01RepeatTime.setVisible(true);
+				dlg.tfM01RepeatTime.setVisible(true);
+				if (isSectored()) {
+					dlg.rbM01Fired1.setSelected(false);
+					dlg.rbM01FiredN.setSelected(true);
+					if ((getSectorIndex() != 0) && (!LightChar[0].isEmpty()))
+						dlg.cbM01Kennung.setEnabled(false);
+					else
+						dlg.cbM01Kennung.setEnabled(true);
+					dlg.cbM01Kennung.setSelectedItem(getLightChar());
+					if ((getSectorIndex() != 0) && (!LightGroup[0].isEmpty()))
+						dlg.tfM01Group.setEnabled(false);
+					else
+						dlg.tfM01Group.setEnabled(true);
+					dlg.tfM01Group.setText(getLightGroup());
+					if ((getSectorIndex() != 0) && (!LightPeriod[0].isEmpty()))
+						dlg.tfM01RepeatTime.setEnabled(false);
+					else
+						dlg.tfM01RepeatTime.setEnabled(true);
+					dlg.tfM01RepeatTime.setText(getLightPeriod());
+					if ((getSectorIndex() != 0) && (!Height[0].isEmpty()))
+						dlg.tfM01Height.setEnabled(false);
+					else
+						dlg.tfM01Height.setEnabled(true);
+					dlg.tfM01Height.setText(getHeight());
+					if ((getSectorIndex() != 0) && (!Range[0].isEmpty()))
+						dlg.tfM01Range.setEnabled(false);
+					else
+						dlg.tfM01Range.setEnabled(true);
+					dlg.tfM01Range.setText(getRange());
+					dlg.lM01Sector.setVisible(true);
+					dlg.cbM01Sector.setVisible(true);
+					if (getSectorIndex() == 0) {
+						dlg.lM01Colour.setVisible(false);
+						dlg.cbM01Colour.setVisible(false);
+						dlg.lM01Bearing.setVisible(false);
+						dlg.tfM01Bearing.setVisible(false);
+						dlg.tfM02Bearing.setVisible(false);
+						dlg.tfM01Radius.setVisible(false);
+					} else {
+						dlg.lM01Colour.setVisible(true);
+						dlg.cbM01Colour.setVisible(true);
+						dlg.lM01Bearing.setVisible(true);
+						dlg.tfM01Bearing.setVisible(true);
+						dlg.tfM01Bearing.setText(getBearing1());
+						dlg.tfM02Bearing.setVisible(true);
+						dlg.tfM02Bearing.setText(getBearing2());
+						dlg.tfM01Radius.setVisible(true);
+						dlg.tfM01Radius.setText(getRadius());
+					}
+				} else {
+					dlg.rbM01FiredN.setSelected(false);
+					dlg.rbM01Fired1.setSelected(true);
+					dlg.cbM01Kennung.setEnabled(true);
+					dlg.tfM01Group.setEnabled(true);
+					dlg.tfM01RepeatTime.setEnabled(true);
+					dlg.tfM01Height.setEnabled(true);
+					dlg.tfM01Range.setEnabled(true);
+					dlg.lM01Colour.setVisible(true);
+					dlg.cbM01Colour.setVisible(true);
+					dlg.lM01Sector.setVisible(false);
+					dlg.cbM01Sector.setVisible(false);
+					dlg.lM01Bearing.setVisible(false);
+					dlg.tfM01Bearing.setVisible(false);
+					dlg.tfM02Bearing.setVisible(false);
+					dlg.tfM01Radius.setVisible(false);
+				}
+			} else {
+				dlg.lM01FireMark.setText("");
+				dlg.rbM01Fired1.setVisible(false);
+				dlg.rbM01FiredN.setVisible(false);
+				dlg.cbM01Kennung.setVisible(false);
+				dlg.lM01Kennung.setVisible(false);
+				dlg.tfM01Height.setVisible(false);
+				dlg.lM01Height.setVisible(false);
+				dlg.tfM01Range.setVisible(false);
+				dlg.lM01Range.setVisible(false);
+				dlg.cbM01Colour.setVisible(false);
+				dlg.lM01Colour.setVisible(false);
+				dlg.cbM01Sector.setVisible(false);
+				dlg.lM01Sector.setVisible(false);
+				dlg.tfM01Group.setVisible(false);
+				dlg.lM01Group.setVisible(false);
+				dlg.tfM01RepeatTime.setVisible(false);
+				dlg.lM01RepeatTime.setVisible(false);
+				dlg.tfM01Bearing.setVisible(false);
+				dlg.lM01Bearing.setVisible(false);
+				dlg.tfM02Bearing.setVisible(false);
+				dlg.tfM01Radius.setVisible(false);
+			}
+		} else {
+			dlg.bM01Save.setEnabled(false);
+			dlg.tfM01Name.setEnabled(false);
+			dlg.cM01TopMark.setVisible(false);
+			dlg.cbM01TopMark.setVisible(false);
+			dlg.cM01Radar.setVisible(false);
+			dlg.cM01Racon.setVisible(false);
+			dlg.cbM01Racon.setVisible(false);
+			dlg.tfM01Racon.setVisible(false);
+			dlg.lM01Racon.setVisible(false);
+			dlg.cM01Fog.setVisible(false);
+			dlg.cbM01Fog.setVisible(false);
+			dlg.tfM01FogGroup.setVisible(false);
+			dlg.lM01FogGroup.setVisible(false);
+			dlg.tfM01FogPeriod.setVisible(false);
+			dlg.lM01FogPeriod.setVisible(false);
+			dlg.cM01Fired.setVisible(false);
+			dlg.rbM01Fired1.setVisible(false);
+			dlg.rbM01FiredN.setVisible(false);
+			dlg.cbM01Kennung.setVisible(false);
+			dlg.lM01Kennung.setVisible(false);
+			dlg.tfM01Height.setVisible(false);
+			dlg.lM01Height.setVisible(false);
+			dlg.tfM01Range.setVisible(false);
+			dlg.lM01Range.setVisible(false);
+			dlg.cbM01Colour.setVisible(false);
+			dlg.lM01Colour.setVisible(false);
+			dlg.cbM01Sector.setVisible(false);
+			dlg.lM01Sector.setVisible(false);
+			dlg.tfM01Group.setVisible(false);
+			dlg.lM01Group.setVisible(false);
+			dlg.tfM01RepeatTime.setVisible(false);
+			dlg.lM01RepeatTime.setVisible(false);
+			dlg.tfM01Bearing.setVisible(false);
+			dlg.lM01Bearing.setVisible(false);
+			dlg.tfM02Bearing.setVisible(false);
+			dlg.tfM01Radius.setVisible(false);
+		}
+		dlg.paintlock = false;
+	}
+
+	public void saveSign(String type) {
+		delSeaMarkKeys(Node);
+
+		String str = dlg.tfM01Name.getText();
+		if (!str.isEmpty())
+			Main.main.undoRedo.add(new ChangePropertyCommand(Node, "seamark:name",
+					str));
+		Main.main.undoRedo
+				.add(new ChangePropertyCommand(Node, "seamark:type", type));
+	}
+
+	protected void saveLightData() {
+		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]));
+			}
+		}
+	}
+
+	protected void saveTopMarkData(String shape, String colour) {
+		if (hasTopMark()) {
+			Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+					"seamark:topmark:shape", shape));
+			Main.main.undoRedo.add(new ChangePropertyCommand(Node,
+					"seamark:topmark:colour", colour));
+		}
+	}
+
+	protected void saveRadarFogData() {
+		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()));
+			}
+		}
+	}
+
+	public void refreshStyles() {
+	}
+
+	public void refreshLights() {
+		dlg.cbM01Kennung.removeAllItems();
+		dlg.cbM01Kennung.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
+		dlg.cbM01Kennung.addItem("Fl"); //$NON-NLS-1$
+		dlg.cbM01Kennung.addItem("LFl"); //$NON-NLS-1$
+		dlg.cbM01Kennung.addItem("Iso"); //$NON-NLS-1$
+		dlg.cbM01Kennung.addItem("F"); //$NON-NLS-1$
+		dlg.cbM01Kennung.addItem("FFl"); //$NON-NLS-1$
+		dlg.cbM01Kennung.addItem("Oc"); //$NON-NLS-1$
+		dlg.cbM01Kennung.addItem("Q"); //$NON-NLS-1$
+		dlg.cbM01Kennung.addItem("IQ"); //$NON-NLS-1$
+		dlg.cbM01Kennung.addItem("VQ"); //$NON-NLS-1$
+		dlg.cbM01Kennung.addItem("IVQ"); //$NON-NLS-1$
+		dlg.cbM01Kennung.addItem("UQ"); //$NON-NLS-1$
+		dlg.cbM01Kennung.addItem("IUQ"); //$NON-NLS-1$
+		dlg.cbM01Kennung.addItem("Mo"); //$NON-NLS-1$
+		dlg.cbM01Kennung.setSelectedIndex(0);
+	}
+
+	public void resetMask() {
+		setRegion(Main.pref.get("tomsplugin.IALA").equals("B"));
+
+		dlg.lM01Icon.setIcon(null);
+		dlg.lM02Icon.setIcon(null);
+		dlg.lM03Icon.setIcon(null);
+		dlg.lM04Icon.setIcon(null);
+		dlg.lM05Icon.setIcon(null);
+		dlg.lM06Icon.setIcon(null);
+
+		dlg.rbM01RegionA.setEnabled(false);
+		dlg.rbM01RegionB.setEnabled(false);
+		dlg.lM01FireMark.setText("");
+		dlg.cbM01CatOfMark.setVisible(false);
+		dlg.lM01CatOfMark.setVisible(false);
+		setBuoyIndex(0);
+		dlg.cbM01StyleOfMark.setVisible(false);
+		dlg.lM01StyleOfMark.setVisible(false);
+		setStyleIndex(0);
+		dlg.tfM01Name.setText("");
+		dlg.tfM01Name.setEnabled(false);
+		setName("");
+		dlg.cM01TopMark.setSelected(false);
+		dlg.cM01TopMark.setVisible(false);
+		dlg.cbM01TopMark.setVisible(false);
+		setTopMark(false);
+		dlg.cM01Radar.setSelected(false);
+		dlg.cM01Radar.setVisible(false);
+		setRadar(false);
+		dlg.cM01Racon.setSelected(false);
+		dlg.cM01Racon.setVisible(false);
+		dlg.cbM01Racon.setVisible(false);
+		dlg.tfM01Racon.setText("");
+		dlg.tfM01Racon.setVisible(false);
+		dlg.lM01Racon.setVisible(false);
+		setRacon(false);
+		setRaType(0);
+		dlg.cM01Fog.setSelected(false);
+		dlg.cM01Fog.setVisible(false);
+		dlg.cbM01Fog.setVisible(false);
+		setFogSound(0);
+		dlg.tfM01FogGroup.setText("");
+		dlg.tfM01FogGroup.setVisible(false);
+		dlg.lM01FogGroup.setVisible(false);
+		dlg.tfM01FogPeriod.setText("");
+		dlg.tfM01FogPeriod.setVisible(false);
+		dlg.lM01FogPeriod.setVisible(false);
+		setFog(false);
+		dlg.cM01Fired.setSelected(false);
+		dlg.cM01Fired.setVisible(false);
+		setFired(false);
+		dlg.rbM01Fired1.setVisible(false);
+		dlg.rbM01Fired1.setSelected(true);
+		dlg.rbM01FiredN.setVisible(false);
+		dlg.rbM01FiredN.setSelected(false);
+		setSectored(false);
+		dlg.cbM01Kennung.removeAllItems();
+		dlg.cbM01Kennung.setVisible(false);
+		dlg.lM01Kennung.setVisible(false);
+		setLightChar("");
+		dlg.tfM01Height.setText("");
+		dlg.tfM01Height.setVisible(false);
+		dlg.lM01Height.setVisible(false);
+		setHeight("");
+		dlg.tfM01Range.setText("");
+		dlg.tfM01Range.setVisible(false);
+		dlg.lM01Range.setVisible(false);
+		setRange("");
+		dlg.cbM01Colour.setVisible(false);
+		dlg.lM01Colour.setVisible(false);
+		setLightColour("");
+		dlg.cbM01Sector.setVisible(false);
+		dlg.lM01Sector.setVisible(false);
+		setSectorIndex(0);
+		dlg.tfM01Group.setText("");
+		dlg.tfM01Group.setVisible(false);
+		dlg.lM01Group.setVisible(false);
+		setLightGroup("");
+		dlg.tfM01RepeatTime.setText("");
+		dlg.tfM01RepeatTime.setVisible(false);
+		dlg.lM01RepeatTime.setVisible(false);
+		setLightPeriod("");
+		dlg.tfM01Bearing.setText("");
+		dlg.tfM01Bearing.setVisible(false);
+		dlg.lM01Bearing.setVisible(false);
+		setBearing1("");
+		dlg.tfM02Bearing.setText("");
+		dlg.tfM02Bearing.setVisible(false);
+		setBearing2("");
+		dlg.tfM01Radius.setText("");
+		dlg.tfM01Radius.setVisible(false);
+		setRadius("");
+
+		dlg.bM01Save.setEnabled(false);
+	}
+
+}
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/buoys/BuoyCard.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/buoys/BuoyCard.java	(revision 23382)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/buoys/BuoyCard.java	(revision 23382)
@@ -0,0 +1,411 @@
+package oseam.seamarks.buoys;
+
+import java.util.Map;
+
+import javax.swing.ImageIcon;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.command.ChangePropertyCommand;
+import org.openstreetmap.josm.data.osm.Node;
+
+import oseam.Messages;
+import oseam.dialogs.OSeaMAction;
+import oseam.seamarks.SeaMark;
+
+
+public class BuoyCard extends Buoy {
+
+	public BuoyCard(OSeaMAction dia, Node node) {
+		super(dia);
+
+		String str;
+		Map<String, String> keys;
+		keys = node.getKeys();
+		setNode(node);
+
+		resetMask();
+		dlg.cbM01TypeOfMark.setSelectedIndex(CARDINAL);
+
+		dlg.cbM01CatOfMark.removeAllItems();
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.157")); //$NON-NLS-1$
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.158")); //$NON-NLS-1$
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.159")); //$NON-NLS-1$
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.160")); //$NON-NLS-1$
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.161")); //$NON-NLS-1$
+
+		dlg.cbM01CatOfMark.setEnabled(true);
+		dlg.cbM01CatOfMark.setVisible(true);
+		dlg.lM01CatOfMark.setVisible(true);
+
+		dlg.cbM01StyleOfMark.removeAllItems();
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.01")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.04")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.06")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.setVisible(true);
+		dlg.lM01StyleOfMark.setVisible(true);
+
+		setRegion(Main.pref.get("tomsplugin.IALA").equals("B")); //$NON-NLS-1$ //$NON-NLS-2$
+		if (keys.containsKey("name")) //$NON-NLS-1$
+			setName(keys.get("name")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:name")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:buoy_cardinal:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:buoy_cardinal:name")); //$NON-NLS-1$
+		else if (keys.containsKey("seamark:beacon_cardinal:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:beacon_cardinal:name")); //$NON-NLS-1$
+		else if (keys.containsKey("seamark:light_float:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:light_float:name")); //$NON-NLS-1$
+
+		String cat = ""; //$NON-NLS-1$
+		String col = ""; //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:buoy_cardinal:category")) //$NON-NLS-1$
+			cat = keys.get("seamark:buoy_cardinal:category"); //$NON-NLS-1$
+		else if (keys.containsKey("seamark:beacon_cardinal:category")) //$NON-NLS-1$
+			cat = keys.get("seamark:beacon_cardinal:category"); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:buoy_cardinal:colour")) //$NON-NLS-1$
+			col = keys.get("seamark:buoy_cardinal:colour"); //$NON-NLS-1$
+		else if (keys.containsKey("seamark:beacon_cardinal:colour")) //$NON-NLS-1$
+			col = keys.get("seamark:beacon_cardinal:colour"); //$NON-NLS-1$
+		else if (keys.containsKey("seamark:light_float:colour")) //$NON-NLS-1$
+			col = keys.get("seamark:light_float:colour"); //$NON-NLS-1$
+
+		if (cat.isEmpty()) { //$NON-NLS-1$
+			if (col.equals("black;yellow")) { //$NON-NLS-1$
+				setBuoyIndex(CARD_NORTH);
+				setColour(BLACK_YELLOW);
+			} else if (col.equals("black;yellow;black")) { //$NON-NLS-1$
+				setBuoyIndex(CARD_EAST);
+				setColour(BLACK_YELLOW_BLACK);
+			} else if (col.equals("yellow;black")) { //$NON-NLS-1$
+				setBuoyIndex(CARD_SOUTH);
+				setColour(YELLOW_BLACK);
+			} else if (col.equals("yellow;black;yellow")) { //$NON-NLS-1$
+				setBuoyIndex(CARD_WEST);
+				setColour(YELLOW_BLACK_YELLOW);
+			}
+		} else if (cat.equals("north")) { //$NON-NLS-1$
+			setBuoyIndex(CARD_NORTH);
+			setColour(BLACK_YELLOW);
+		} else if (cat.equals("east")) { //$NON-NLS-1$
+			setBuoyIndex(CARD_EAST);
+			setColour(BLACK_YELLOW_BLACK);
+		} else if (cat.equals("south")) { //$NON-NLS-1$
+			setBuoyIndex(CARD_SOUTH);
+			setColour(YELLOW_BLACK);
+		} else if (cat.equals("west")) { //$NON-NLS-1$
+			setBuoyIndex(CARD_WEST);
+			setColour(YELLOW_BLACK_YELLOW);
+		}
+
+		if (keys.containsKey("seamark:buoy_cardinal:shape")) { //$NON-NLS-1$
+			str = keys.get("seamark:buoy_cardinal:shape"); //$NON-NLS-1$
+
+			if (str.equals("pillar")) //$NON-NLS-1$
+				setStyleIndex(CARD_PILLAR);
+			else if (str.equals("spar")) //$NON-NLS-1$
+				setStyleIndex(CARD_SPAR);
+		} else if (keys.containsKey("seamark:beacon_cardinal:colour")) { //$NON-NLS-1$
+			if (keys.containsKey("seamark:beacon_cardinal:shape")) { //$NON-NLS-1$
+				str = keys.get("seamark:beacon_cardinal:shape"); //$NON-NLS-1$
+
+				if (str.equals("tower")) //$NON-NLS-1$
+					setStyleIndex(CARD_TOWER);
+				else
+					setStyleIndex(CARD_BEACON);
+			} else
+				setStyleIndex(CARD_BEACON);
+		} else if (keys.containsKey("seamark:type") //$NON-NLS-1$
+				&& (keys.get("seamark:type").equals("light_float"))) { //$NON-NLS-1$ //$NON-NLS-2$
+			setStyleIndex(CARD_FLOAT);
+		}
+
+		if (getStyleIndex() >= dlg.cbM01StyleOfMark.getItemCount())
+			setStyleIndex(0);
+
+		refreshLights();
+		parseLights(keys);
+		parseFogRadar(keys);
+
+		dlg.cbM01CatOfMark.setSelectedIndex(getBuoyIndex());
+		dlg.cbM01StyleOfMark.setSelectedIndex(getStyleIndex());
+		dlg.tfM01Name.setText(getName());
+		dlg.cM01TopMark.setSelected(hasTopMark());
+	}
+
+	public void refreshLights() {
+		dlg.cbM01Kennung.removeAllItems();
+		dlg.cbM01Kennung.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
+		dlg.cbM01Kennung.setSelectedIndex(0);
+
+		switch (getBuoyIndex()) {
+		case CARD_NORTH:
+			dlg.cbM01Kennung.addItem("Q"); //$NON-NLS-1$
+			dlg.cbM01Kennung.addItem("VQ"); //$NON-NLS-1$
+			break;
+		case CARD_EAST:
+			dlg.cbM01Kennung.addItem("Q(3)"); //$NON-NLS-1$
+			dlg.cbM01Kennung.addItem("VQ(3)"); //$NON-NLS-1$
+			break;
+		case CARD_SOUTH:
+			dlg.cbM01Kennung.addItem("Q(6)+LFl"); //$NON-NLS-1$
+			dlg.cbM01Kennung.addItem("VQ(6)+LFl"); //$NON-NLS-1$
+			break;
+		case CARD_WEST:
+			dlg.cbM01Kennung.addItem("Q(9)"); //$NON-NLS-1$
+			dlg.cbM01Kennung.addItem("VQ(9)"); //$NON-NLS-1$
+			break;
+		}
+	}
+
+	public boolean isValid() {
+		return (getBuoyIndex() > 0) && (getStyleIndex() > 0);
+	}
+
+	public void setLightColour() {
+		super.setLightColour("W"); //$NON-NLS-1$
+	}
+
+	public void paintSign() {
+		if (dlg.paintlock)
+			return;
+		super.paintSign();
+
+		dlg.sM01StatusBar.setText(getErrMsg());
+
+		if (isValid()) {
+			dlg.tfM01Name.setEnabled(true);
+			dlg.tfM01Name.setText(getName());
+			dlg.cM01TopMark.setSelected(true);
+			dlg.cM01TopMark.setVisible(true);
+			dlg.cM01TopMark.setEnabled(false);
+			dlg.cM01Radar.setVisible(true);
+			dlg.cM01Racon.setVisible(true);
+			dlg.cM01Fog.setVisible(true);
+			dlg.cM01Fired.setEnabled(true);
+			dlg.cM01Fired.setVisible(true);
+			dlg.tfM01Group.setVisible(false);
+			dlg.lM01Group.setVisible(false);
+			if (!isSectored()) {
+				dlg.cbM01Colour.setVisible(false);
+				dlg.lM01Colour.setVisible(false);
+			}
+			dlg.rbM01Fired1.setVisible(false);
+			dlg.rbM01FiredN.setVisible(false);
+			dlg.lM01Height.setVisible(false);
+			dlg.tfM01Height.setVisible(false);
+			dlg.lM01Range.setVisible(false);
+			dlg.tfM01Range.setVisible(false);
+
+			if (isFired()) {
+				switch (getStyleIndex()) {
+				case CARD_BEACON:
+				case CARD_TOWER:
+				case CARD_FLOAT:
+					dlg.lM01Height.setVisible(true);
+					dlg.tfM01Height.setVisible(true);
+					dlg.lM01Range.setVisible(true);
+					dlg.tfM01Range.setVisible(true);
+					break;
+				default:
+				}
+			}
+
+			String image = "/images/Cardinal"; //$NON-NLS-1$
+			switch (getStyleIndex()) {
+			case SeaMark.CARD_PILLAR:
+				image += "_Pillar"; //$NON-NLS-1$
+				break;
+			case SeaMark.CARD_SPAR:
+				image += "_Spar"; //$NON-NLS-1$
+				break;
+			case SeaMark.CARD_BEACON:
+				image += "_Beacon"; //$NON-NLS-1$
+				break;
+			case SeaMark.CARD_TOWER:
+				image += "_Tower"; //$NON-NLS-1$
+				break;
+			case SeaMark.CARD_FLOAT:
+				image += "_Float"; //$NON-NLS-1$
+				break;
+			default:
+				return;
+			}
+
+			switch (getBuoyIndex()) {
+			case CARD_NORTH:
+				image += "_North"; //$NON-NLS-1$
+				break;
+			case CARD_EAST:
+				image += "_East"; //$NON-NLS-1$
+				break;
+			case CARD_SOUTH:
+				image += "_South"; //$NON-NLS-1$
+				break;
+			case CARD_WEST:
+				image += "_West"; //$NON-NLS-1$
+				break;
+			default:
+				return;
+			}
+
+			if (!image.equals("/images/Cardinal")) { //$NON-NLS-1$
+				image += ".png"; //$NON-NLS-1$
+				dlg.lM01Icon.setIcon(new ImageIcon(getClass().getResource(image)));
+
+			} else
+				dlg.lM01Icon.setIcon(null);
+		}
+	}
+
+	public void saveSign() {
+		Node node = getNode();
+		if (node == null) {
+			return;
+		}
+
+		String shape = ""; //$NON-NLS-1$
+
+		switch (getStyleIndex()) {
+		case CARD_PILLAR:
+			super.saveSign("buoy_cardinal"); //$NON-NLS-1$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_cardinal:shape", "pillar")); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case CARD_SPAR:
+			super.saveSign("buoy_cardinal"); //$NON-NLS-1$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_cardinal:shape", "spar")); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case CARD_BEACON:
+			super.saveSign("beacon_cardinal"); //$NON-NLS-1$
+			break;
+		case CARD_TOWER:
+			super.saveSign("beacon_cardinal"); //$NON-NLS-1$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:beacon_cardinal:shape", "tower")); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case CARD_FLOAT:
+			super.saveSign("light_float"); //$NON-NLS-1$
+			break;
+		default:
+		}
+
+		switch (getStyleIndex()) {
+		case CARD_PILLAR:
+		case CARD_SPAR:
+			switch (getBuoyIndex()) {
+			case SeaMark.CARD_NORTH:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:buoy_cardinal:category", "north")); //$NON-NLS-1$ //$NON-NLS-2$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:buoy_cardinal:colour", "black;yellow")); //$NON-NLS-1$ //$NON-NLS-2$
+				shape = "2 cones up"; //$NON-NLS-1$
+				break;
+
+			case SeaMark.CARD_EAST:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:buoy_cardinal:category", "east")); //$NON-NLS-1$ //$NON-NLS-2$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:buoy_cardinal:colour", "black;yellow;black")); //$NON-NLS-1$ //$NON-NLS-2$
+				shape = "2 cones base together"; //$NON-NLS-1$
+				break;
+
+			case SeaMark.CARD_SOUTH:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:buoy_cardinal:category", "south")); //$NON-NLS-1$ //$NON-NLS-2$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:buoy_cardinal:colour", "yellow;black")); //$NON-NLS-1$ //$NON-NLS-2$
+				shape = "2 cones down"; //$NON-NLS-1$
+				break;
+
+			case SeaMark.CARD_WEST:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:buoy_cardinal:category", "west")); //$NON-NLS-1$ //$NON-NLS-2$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:buoy_cardinal:colour", "yellow;black;yellow")); //$NON-NLS-1$ //$NON-NLS-2$
+				shape = "2 cones point together"; //$NON-NLS-1$
+				break;
+			}
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_cardinal:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case CARD_BEACON:
+		case CARD_TOWER:
+			switch (getBuoyIndex()) {
+			case SeaMark.CARD_NORTH:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:beacon_cardinal:category", "north")); //$NON-NLS-1$ //$NON-NLS-2$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:beacon_cardinal:colour", "black;yellow")); //$NON-NLS-1$ //$NON-NLS-2$
+				shape = "2 cones up"; //$NON-NLS-1$
+				break;
+
+			case SeaMark.CARD_EAST:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:beacon_cardinal:category", "east")); //$NON-NLS-1$ //$NON-NLS-2$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:beacon_cardinal:colour", "black;yellow;black")); //$NON-NLS-1$ //$NON-NLS-2$
+				shape = "2 cones base together"; //$NON-NLS-1$
+				break;
+
+			case SeaMark.CARD_SOUTH:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:beacon_cardinal:category", "south")); //$NON-NLS-1$ //$NON-NLS-2$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:beacon_cardinal:colour", "yellow;black")); //$NON-NLS-1$ //$NON-NLS-2$
+				shape = "2 cones down"; //$NON-NLS-1$
+				break;
+
+			case SeaMark.CARD_WEST:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:beacon_cardinal:category", "west")); //$NON-NLS-1$ //$NON-NLS-2$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:beacon_cardinal:colour", "yellow;black;yellow")); //$NON-NLS-1$ //$NON-NLS-2$
+				shape = "2 cones point together"; //$NON-NLS-1$
+				break;
+			}
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:beacon_cardinal:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case CARD_FLOAT:
+			switch (getBuoyIndex()) {
+			case SeaMark.CARD_NORTH:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:light_float:colour", "black;yellow")); //$NON-NLS-1$ //$NON-NLS-2$
+				shape = "2 cones up"; //$NON-NLS-1$
+				break;
+
+			case SeaMark.CARD_EAST:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:light_float:colour", "black;yellow;black")); //$NON-NLS-1$ //$NON-NLS-2$
+				shape = "2 cones base together"; //$NON-NLS-1$
+				break;
+
+			case SeaMark.CARD_SOUTH:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:light_float:colour", "yellow;black")); //$NON-NLS-1$ //$NON-NLS-2$
+				shape = "2 cones down"; //$NON-NLS-1$
+				break;
+
+			case SeaMark.CARD_WEST:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:light_float:colour", "yellow;black;yellow")); //$NON-NLS-1$ //$NON-NLS-2$
+				shape = "2 cones point together"; //$NON-NLS-1$
+				break;
+			}
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:light_float:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		}
+		saveTopMarkData(shape, "black"); //$NON-NLS-1$
+		saveLightData(); //$NON-NLS-1$
+		saveRadarFogData();
+	}
+}
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/buoys/BuoyIsol.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/buoys/BuoyIsol.java	(revision 23382)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/buoys/BuoyIsol.java	(revision 23382)
@@ -0,0 +1,249 @@
+package oseam.seamarks.buoys;
+
+import java.util.Map;
+
+import javax.swing.ImageIcon;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.command.ChangePropertyCommand;
+import org.openstreetmap.josm.data.osm.Node;
+
+import oseam.Messages;
+import oseam.dialogs.OSeaMAction;
+import oseam.seamarks.SeaMark;
+
+
+public class BuoyIsol extends Buoy {
+	public BuoyIsol(OSeaMAction dia, Node node) {
+		super(dia);
+
+		String str;
+		Map<String, String> keys;
+		keys = node.getKeys();
+		setNode(node);
+
+		resetMask();
+		dlg.cbM01TypeOfMark.setSelectedIndex(ISOLATED_DANGER);
+
+		dlg.cbM01StyleOfMark.removeAllItems();
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.01")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.04")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.06")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.setVisible(true);
+		dlg.lM01StyleOfMark.setVisible(true);
+
+		setBuoyIndex(ISOLATED_DANGER);
+		setColour(SeaMark.BLACK_RED_BLACK);
+		setLightColour("W"); //$NON-NLS-1$
+		setTopMark(true);
+		setRegion(Main.pref.get("tomsplugin.IALA").equals("B")); //$NON-NLS-1$ //$NON-NLS-2$
+
+		if (keys.containsKey("name")) //$NON-NLS-1$
+			setName(keys.get("name")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:name")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:buoy_isolated_danger:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:buoy_isolated_danger:name")); //$NON-NLS-1$
+		else if (keys.containsKey("seamark:beacon_isolated_danger:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:beacon_isolated_danger:name")); //$NON-NLS-1$
+		else if (keys.containsKey("seamark:light_float:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:light_float:name")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:buoy_isolated_danger:shape")) { //$NON-NLS-1$
+			str = keys.get("seamark:buoy_isolated_danger:shape"); //$NON-NLS-1$
+
+			if (str.equals("pillar")) //$NON-NLS-1$
+				setStyleIndex(ISOL_PILLAR);
+			else if (str.equals("spar")) //$NON-NLS-1$
+				setStyleIndex(ISOL_SPAR);
+		} else if (keys.containsKey("seamark:beacon_isolated_danger:colour")) { //$NON-NLS-1$
+			if (keys.containsKey("seamark:beacon_isolated_danger:shape")) { //$NON-NLS-1$
+				str = keys.get("seamark:beacon_isolated_danger:shape"); //$NON-NLS-1$
+
+				if (str.equals("tower")) //$NON-NLS-1$
+					setStyleIndex(ISOL_TOWER);
+				else
+					setStyleIndex(ISOL_BEACON);
+			} else
+				setStyleIndex(ISOL_BEACON);
+		} else if (keys.containsKey("seamark:type") //$NON-NLS-1$
+				&& (keys.get("seamark:type").equals("light_float"))) { //$NON-NLS-1$ //$NON-NLS-2$
+			setStyleIndex(CARD_FLOAT);
+		}
+
+		if (getStyleIndex() >= dlg.cbM01StyleOfMark.getItemCount())
+			setStyleIndex(0);
+		dlg.cbM01StyleOfMark.setSelectedIndex(getStyleIndex());
+
+		if (keys.containsKey("seamark:topmark:shape") //$NON-NLS-1$
+				|| keys.containsKey("seamark:topmark:colour")) { //$NON-NLS-1$
+			setTopMark(true);
+		}
+
+		refreshLights();
+		parseLights(keys);
+		parseFogRadar(keys);
+
+		dlg.cbM01StyleOfMark.setSelectedIndex(getStyleIndex());
+		dlg.tfM01Name.setText(getName());
+		dlg.cM01TopMark.setSelected(hasTopMark());
+	}
+
+	public void refreshLights() {
+		dlg.cbM01Kennung.removeAllItems();
+		dlg.cbM01Kennung.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
+		dlg.cbM01Kennung.addItem("Fl(2)"); //$NON-NLS-1$
+		dlg.cbM01Kennung.setSelectedIndex(0);
+	}
+
+	public boolean isValid() {
+		return (getBuoyIndex() > 0) && (getStyleIndex() > 0);
+	}
+
+	public void setLightColour() {
+		super.setLightColour("W"); //$NON-NLS-1$
+	}
+
+	public void paintSign() {
+		if (dlg.paintlock)
+			return;
+
+		super.paintSign();
+
+		dlg.sM01StatusBar.setText(getErrMsg());
+
+		if (isValid()) {
+			dlg.tfM01Name.setEnabled(true);
+			dlg.tfM01Name.setText(getName());
+			dlg.cM01TopMark.setVisible(true);
+			dlg.cM01Radar.setVisible(true);
+			dlg.cM01Racon.setVisible(true);
+			dlg.cM01Fog.setVisible(true);
+			dlg.cM01Fired.setVisible(true);
+			if (!isSectored()) {
+				dlg.cbM01Colour.setVisible(false);
+				dlg.lM01Colour.setVisible(false);
+			}
+			dlg.rbM01Fired1.setVisible(false);
+			dlg.rbM01FiredN.setVisible(false);
+			dlg.lM01Height.setVisible(false);
+			dlg.tfM01Height.setVisible(false);
+			dlg.lM01Range.setVisible(false);
+			dlg.tfM01Range.setVisible(false);
+
+			if (isFired()) {
+				switch (getStyleIndex()) {
+				case ISOL_BEACON:
+				case ISOL_TOWER:
+					dlg.lM01Height.setVisible(true);
+					dlg.tfM01Height.setVisible(true);
+					dlg.lM01Range.setVisible(true);
+					dlg.tfM01Range.setVisible(true);
+					break;
+				default:
+				}
+			}
+
+			String image = "/images/Cardinal"; //$NON-NLS-1$
+
+			switch (getStyleIndex()) {
+			case ISOL_PILLAR:
+				image += "_Pillar_Single"; //$NON-NLS-1$
+				break;
+			case ISOL_SPAR:
+				image += "_Spar_Single"; //$NON-NLS-1$
+				break;
+			case ISOL_BEACON:
+				image += "_Beacon_Single"; //$NON-NLS-1$
+				break;
+			case ISOL_TOWER:
+				image += "_Tower_Single"; //$NON-NLS-1$
+				break;
+			case ISOL_FLOAT:
+				image += "_Float_Single"; //$NON-NLS-1$
+				break;
+			default:
+			}
+
+			if (!image.equals("/images/Cardinal")) { //$NON-NLS-1$
+				image += ".png"; //$NON-NLS-1$
+				dlg.lM01Icon.setIcon(new ImageIcon(getClass().getResource(image)));
+			} else
+				dlg.lM01Icon.setIcon(null);
+		} else {
+			dlg.tfM01Name.setEnabled(false);
+			dlg.tfM01Name.setText(""); //$NON-NLS-1$
+			dlg.cM01TopMark.setVisible(false);
+			dlg.cM01Radar.setVisible(false);
+			dlg.cM01Racon.setVisible(false);
+			dlg.cM01Fog.setVisible(false);
+			dlg.cM01Fired.setVisible(false);
+		}
+	}
+
+	public void saveSign() {
+		Node node = getNode();
+
+		if (node == null) {
+			return;
+		}
+
+		switch (getStyleIndex()) {
+		case ISOL_PILLAR:
+			super.saveSign("buoy_isolated_danger"); //$NON-NLS-1$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_isolated_danger:shape", "pillar")); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case ISOL_SPAR:
+			super.saveSign("buoy_isolated_danger"); //$NON-NLS-1$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_isolated_danger:shape", "spar")); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case ISOL_BEACON:
+			super.saveSign("beacon_isolated_danger"); //$NON-NLS-1$
+			break;
+		case ISOL_TOWER:
+			super.saveSign("beacon_isolated_danger"); //$NON-NLS-1$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:beacon_isolated_danger:shape", "tower")); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case ISOL_FLOAT:
+			super.saveSign("light_float"); //$NON-NLS-1$
+			break;
+		default:
+		}
+
+		switch (getStyleIndex()) {
+		case ISOL_PILLAR:
+		case ISOL_SPAR:
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_isolated_danger:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_isolated_danger:colour", "black;red;black")); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case ISOL_BEACON:
+		case ISOL_TOWER:
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:beacon_isolated_danger:colour_pattern", //$NON-NLS-1$
+					"horizontal stripes")); //$NON-NLS-1$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:beacon_isolated_danger:colour", "black;red;black")); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case ISOL_FLOAT:
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:light_float:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:light_float:colour", "black;red;black")); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		}
+
+		saveTopMarkData("2 spheres", "black"); //$NON-NLS-1$ //$NON-NLS-2$
+		saveLightData(); //$NON-NLS-1$
+		saveRadarFogData();
+	}
+}
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/buoys/BuoyLat.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/buoys/BuoyLat.java	(revision 23382)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/buoys/BuoyLat.java	(revision 23382)
@@ -0,0 +1,1070 @@
+package oseam.seamarks.buoys;
+
+import java.util.Map;
+
+import javax.swing.ImageIcon;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.command.ChangePropertyCommand;
+import org.openstreetmap.josm.data.osm.Node;
+
+import oseam.Messages;
+import oseam.dialogs.OSeaMAction;
+
+public class BuoyLat extends Buoy {
+	public BuoyLat(OSeaMAction dia, Node node) {
+		super(dia);
+
+		String str;
+		Map<String, String> keys;
+		keys = node.getKeys();
+		setNode(node);
+
+		resetMask();
+		dlg.cbM01TypeOfMark.setSelectedIndex(LATERAL);
+
+		dlg.cbM01CatOfMark.removeAllItems();
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.152")); //$NON-NLS-1$
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.153")); //$NON-NLS-1$
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.154")); //$NON-NLS-1$
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.155")); //$NON-NLS-1$
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.156")); //$NON-NLS-1$
+
+		dlg.rbM01RegionA.setEnabled(true);
+		dlg.rbM01RegionB.setEnabled(true);
+		dlg.cbM01CatOfMark.setEnabled(true);
+		dlg.cbM01CatOfMark.setVisible(true);
+		dlg.lM01CatOfMark.setVisible(true);
+
+		dlg.cbM01StyleOfMark.removeAllItems();
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.01")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.04")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.06")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.setEnabled(true);
+
+		if (keys.containsKey("name")) //$NON-NLS-1$
+			setName(keys.get("name")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:name")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:buoy_lateral:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:buoy_lateral:name")); //$NON-NLS-1$
+		else if (keys.containsKey("seamark:beacon_lateral:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:beacon_lateral:name")); //$NON-NLS-1$
+		else if (keys.containsKey("seamark:light_float:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:light_float:name")); //$NON-NLS-1$
+
+		String cat = ""; //$NON-NLS-1$
+		String col = ""; //$NON-NLS-1$
+		String top = ""; //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:buoy_lateral:category")) //$NON-NLS-1$
+			cat = keys.get("seamark:buoy_lateral:category"); //$NON-NLS-1$
+		else if (keys.containsKey("seamark:beacon_lateral:category")) //$NON-NLS-1$
+			cat = keys.get("seamark:beacon_lateral:category"); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:buoy_lateral:colour")) //$NON-NLS-1$
+			col = keys.get("seamark:buoy_lateral:colour"); //$NON-NLS-1$
+		else if (keys.containsKey("seamark:beacon_lateral:colour")) //$NON-NLS-1$
+			col = keys.get("seamark:beacon_lateral:colour"); //$NON-NLS-1$
+		else if (keys.containsKey("seamark:light_float:colour")) //$NON-NLS-1$
+			col = keys.get("seamark:light_float:colour"); //$NON-NLS-1$
+
+		if (getStyleIndex() != LAT_PERCH) {
+			if (keys.containsKey("seamark:topmark:shape")) { //$NON-NLS-1$
+				top = keys.get("seamark:topmark:shape"); //$NON-NLS-1$
+				setTopMark(true);
+			}
+			if (keys.containsKey("seamark:topmark:colour")) { //$NON-NLS-1$
+				if (col.isEmpty()) col = keys.get("seamark:topmark:colour");
+				setTopMark(true);
+			}
+		}
+		
+		if (col.isEmpty()) {
+			if (keys.containsKey("seamark:light:colour")) //$NON-NLS-1$
+				col = keys.get("seamark:light:colour"); //$NON-NLS-1$
+		}
+
+		if (cat.isEmpty()) { //$NON-NLS-1$
+			if (col.equals("red")) { //$NON-NLS-1$
+				setColour(RED);
+				if (top.equals("cylinder")) { //$NON-NLS-1$
+					setBuoyIndex(PORT_HAND);
+					setRegion(IALA_A);
+				} else if (top.equals("cone, point up")) { //$NON-NLS-1$
+					setBuoyIndex(STARBOARD_HAND);
+					setRegion(IALA_B);
+				} else {
+					if (getRegion() == IALA_A)
+						setBuoyIndex(PORT_HAND);
+					else
+						setBuoyIndex(STARBOARD_HAND);
+				}
+			} else if (col.equals("green")) { //$NON-NLS-1$
+				setColour(GREEN);
+				if (top.equals("cone, point up")) { //$NON-NLS-1$
+					setBuoyIndex(STARBOARD_HAND);
+					setRegion(IALA_A);
+				} else if (top.equals("cylinder")) { //$NON-NLS-1$
+					setBuoyIndex(PORT_HAND);
+					setRegion(IALA_B);
+				} else {
+					if (getRegion() == IALA_A)
+						setBuoyIndex(STARBOARD_HAND);
+					else
+						setBuoyIndex(PORT_HAND);
+				}
+			} else if (col.equals("red;green;red")) { //$NON-NLS-1$
+				setColour(RED_GREEN_RED);
+				if (top.equals("cylinder")) { //$NON-NLS-1$
+					setBuoyIndex(PREF_PORT_HAND);
+					setRegion(IALA_A);
+				} else if (top.equals("cone, point up")) { //$NON-NLS-1$
+					setBuoyIndex(PREF_STARBOARD_HAND);
+					setRegion(IALA_B);
+				} else {
+					if (getRegion() == IALA_A)
+						setBuoyIndex(PREF_PORT_HAND);
+					else
+						setBuoyIndex(PREF_STARBOARD_HAND);
+				}
+			} else if (col.equals("green;red;green")) { //$NON-NLS-1$
+				setColour(GREEN_RED_GREEN);
+				if (top.equals("cone, point up")) { //$NON-NLS-1$
+					setBuoyIndex(PREF_STARBOARD_HAND);
+					setRegion(IALA_A);
+				} else if (top.equals("cylinder")) { //$NON-NLS-1$
+					setBuoyIndex(PREF_PORT_HAND);
+					setRegion(IALA_B);
+				} else {
+					if (getRegion() == IALA_A)
+						setBuoyIndex(PREF_STARBOARD_HAND);
+					else
+						setBuoyIndex(PREF_PORT_HAND);
+				}
+			}
+		} else if (cat.equals("port")) { //$NON-NLS-1$
+
+			setBuoyIndex(PORT_HAND);
+
+			if (col.equals("red")) { //$NON-NLS-1$
+				setRegion(IALA_A);
+				setColour(RED);
+			} else if (col.equals("green")) { //$NON-NLS-1$
+				setRegion(IALA_B);
+				setColour(GREEN);
+			} else {
+				if (getRegion() == IALA_A)
+					setColour(RED);
+				else
+					setColour(GREEN);
+			}
+		} else if (cat.equals("starboard")) { //$NON-NLS-1$
+
+			setBuoyIndex(STARBOARD_HAND);
+
+			if (col.equals("green")) { //$NON-NLS-1$
+				setRegion(IALA_A);
+				setColour(GREEN);
+			} else if (col.equals("red")) { //$NON-NLS-1$
+				setRegion(IALA_B);
+				setColour(RED);
+			} else {
+				if (getRegion() == IALA_A)
+					setColour(GREEN);
+				else
+					setColour(RED);
+			}
+		} else if (cat.equals("preferred_channel_port")) { //$NON-NLS-1$
+
+			setBuoyIndex(PREF_PORT_HAND);
+
+			if (col.equals("red;green;red")) { //$NON-NLS-1$
+				setRegion(IALA_A);
+				setColour(RED_GREEN_RED);
+			} else if (col.equals("green;red;green")) { //$NON-NLS-1$
+				setRegion(IALA_B);
+				setColour(GREEN_RED_GREEN);
+			} else {
+				if (getRegion() == IALA_A)
+					setColour(RED_GREEN_RED);
+				else
+					setColour(GREEN_RED_GREEN);
+			}
+
+		} else if (cat.equals("preferred_channel_starboard")) { //$NON-NLS-1$
+
+			setBuoyIndex(PREF_STARBOARD_HAND);
+
+			if (col.equals("green;red;green")) { //$NON-NLS-1$
+				setRegion(IALA_A);
+				setColour(GREEN_RED_GREEN);
+			} else if (col.equals("red;green;red")) { //$NON-NLS-1$
+				setRegion(IALA_B);
+				setColour(RED_GREEN_RED);
+			} else {
+				if (getRegion() == IALA_A)
+					setColour(GREEN_RED_GREEN);
+				else
+					setColour(RED_GREEN_RED);
+			}
+		}
+
+		if (keys.containsKey("seamark:buoy_lateral:shape")) { //$NON-NLS-1$
+			str = keys.get("seamark:buoy_lateral:shape"); //$NON-NLS-1$
+
+			switch (getBuoyIndex()) {
+			case PORT_HAND:
+				if (str.equals("can")) //$NON-NLS-1$
+					setStyleIndex(LAT_CAN);
+				else if (str.equals("pillar")) //$NON-NLS-1$
+					setStyleIndex(LAT_PILLAR);
+				else if (str.equals("spar")) //$NON-NLS-1$
+					setStyleIndex(LAT_SPAR);
+				break;
+
+			case PREF_PORT_HAND:
+				if (str.equals("can")) //$NON-NLS-1$
+					setStyleIndex(LAT_CAN);
+				else if (str.equals("pillar")) //$NON-NLS-1$
+					setStyleIndex(LAT_PILLAR);
+				else if (str.equals("spar")) //$NON-NLS-1$
+					setStyleIndex(LAT_SPAR);
+				break;
+
+			case STARBOARD_HAND:
+				if (str.equals("conical")) //$NON-NLS-1$
+					setStyleIndex(LAT_CONE);
+				else if (str.equals("pillar")) //$NON-NLS-1$
+					setStyleIndex(LAT_PILLAR);
+				else if (str.equals("spar")) //$NON-NLS-1$
+					setStyleIndex(LAT_SPAR);
+				break;
+
+			case PREF_STARBOARD_HAND:
+				if (str.equals("conical")) //$NON-NLS-1$
+					setStyleIndex(LAT_CONE);
+				else if (str.equals("pillar")) //$NON-NLS-1$
+					setStyleIndex(LAT_PILLAR);
+				else if (str.equals("spar")) //$NON-NLS-1$
+					setStyleIndex(LAT_SPAR);
+				break;
+			}
+		} else if (keys.containsKey("seamark:beacon_lateral:shape")) { //$NON-NLS-1$
+			str = keys.get("seamark:beacon_lateral:shape"); //$NON-NLS-1$
+			if (str.equals("tower")) //$NON-NLS-1$
+				setStyleIndex(LAT_TOWER);
+			else if (str.equals("perch")) //$NON-NLS-1$
+				setStyleIndex(LAT_PERCH);
+			else
+				setStyleIndex(LAT_BEACON);
+		} else if (keys.containsKey("seamark:type") //$NON-NLS-1$
+				&& (keys.get("seamark:type").equals("beacon_lateral"))) { //$NON-NLS-1$ //$NON-NLS-2$
+			setStyleIndex(LAT_BEACON);
+		} else if (keys.containsKey("seamark:type") //$NON-NLS-1$
+				&& (keys.get("seamark:type").equals("light_float"))) { //$NON-NLS-1$ //$NON-NLS-2$
+			setStyleIndex(LAT_FLOAT);
+		}
+
+		refreshStyles();
+		refreshLights();
+		parseLights(keys);
+		parseFogRadar(keys);
+		setLightColour();
+
+		dlg.cbM01CatOfMark.setSelectedIndex(getBuoyIndex());
+		dlg.cbM01StyleOfMark.setSelectedIndex(getStyleIndex());
+		dlg.tfM01Name.setText(getName());
+		dlg.cM01TopMark.setSelected(hasTopMark());
+	}
+
+	public void refreshStyles() {
+		int type = getBuoyIndex();
+		int style = getStyleIndex();
+
+		dlg.cbM01StyleOfMark.removeAllItems();
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("SmpDialogAction.213")); //$NON-NLS-1$
+
+		switch (type) {
+		case PORT_HAND:
+			dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.02")); //$NON-NLS-1$
+			dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.01")); //$NON-NLS-1$
+			dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.04")); //$NON-NLS-1$
+			dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
+			dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.06")); //$NON-NLS-1$
+			dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
+			dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.10")); //$NON-NLS-1$
+			break;
+		case STARBOARD_HAND:
+			dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.03")); //$NON-NLS-1$
+			dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.01")); //$NON-NLS-1$
+			dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.04")); //$NON-NLS-1$
+			dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
+			dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.06")); //$NON-NLS-1$
+			dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
+			dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.10")); //$NON-NLS-1$
+			break;
+		case PREF_PORT_HAND:
+			dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.02")); //$NON-NLS-1$
+			dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.01")); //$NON-NLS-1$
+			dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.04")); //$NON-NLS-1$
+			dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
+			dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.06")); //$NON-NLS-1$
+			dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
+			break;
+		case PREF_STARBOARD_HAND:
+			dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.03")); //$NON-NLS-1$
+			dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.01")); //$NON-NLS-1$
+			dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.04")); //$NON-NLS-1$
+			dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
+			dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.06")); //$NON-NLS-1$
+			dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
+			break;
+		}
+
+		if (style >= dlg.cbM01StyleOfMark.getItemCount())
+			style = 0;
+		setStyleIndex(style);
+		dlg.cbM01StyleOfMark.setSelectedIndex(style);
+		dlg.cbM01StyleOfMark.setVisible(true);
+		dlg.lM01StyleOfMark.setVisible(true);
+	}
+
+	public void refreshLights() {
+		super.refreshLights();
+	}
+
+	public boolean isValid() {
+		return (getBuoyIndex() > 0) && (getStyleIndex() > 0);
+	}
+
+	public void setLightColour() {
+		if (getRegion() == IALA_A) {
+			if (getBuoyIndex() == PORT_HAND || getBuoyIndex() == PREF_PORT_HAND)
+				super.setLightColour("R"); //$NON-NLS-1$
+			else
+				super.setLightColour("G"); //$NON-NLS-1$
+		} else {
+			if (getBuoyIndex() == PORT_HAND || getBuoyIndex() == PREF_PORT_HAND)
+				super.setLightColour("G"); //$NON-NLS-1$
+			else
+				super.setLightColour("R"); //$NON-NLS-1$
+		}
+	}
+
+	public void paintSign() {
+		if (dlg.paintlock)
+			return;
+		super.paintSign();
+
+		dlg.sM01StatusBar.setText(getErrMsg());
+
+		if (isValid()) {
+			dlg.tfM01Name.setEnabled(true);
+			dlg.tfM01Name.setText(getName());
+
+			boolean region = getRegion();
+			int style = getStyleIndex();
+
+			if (style == LAT_PERCH) {
+				dlg.cM01TopMark.setVisible(false);
+				dlg.cM01TopMark.setSelected(false);
+				dlg.cM01Radar.setVisible(false);
+				dlg.cM01Racon.setVisible(false);
+				dlg.cM01Fog.setVisible(false);
+				dlg.cM01Fired.setVisible(false);
+				dlg.cM01Fired.setSelected(false);
+			} else {
+				dlg.cM01TopMark.setEnabled(true);
+				dlg.cM01TopMark.setVisible(true);
+				dlg.cM01Radar.setVisible(true);
+				dlg.cM01Racon.setVisible(true);
+				dlg.cM01Fog.setVisible(true);
+				dlg.cM01Fired.setVisible(true);
+				dlg.cM01Fired.setEnabled(true);
+				dlg.cM01TopMark.setEnabled(true);
+			}
+			if (!isSectored()) {
+				dlg.cbM01Colour.setVisible(false);
+				dlg.lM01Colour.setVisible(false);
+			}
+			dlg.rbM01Fired1.setVisible(false);
+			dlg.rbM01FiredN.setVisible(false);
+			dlg.lM01Height.setVisible(false);
+			dlg.tfM01Height.setVisible(false);
+			dlg.lM01Range.setVisible(false);
+			dlg.tfM01Range.setVisible(false);
+
+			if (isFired()) {
+				switch (style) {
+				case LAT_BEACON:
+				case LAT_TOWER:
+				case LAT_FLOAT:
+					dlg.lM01Height.setVisible(true);
+					dlg.tfM01Height.setVisible(true);
+					dlg.lM01Range.setVisible(true);
+					dlg.tfM01Range.setVisible(true);
+					break;
+				default:
+				}
+			}
+
+			String image = "/images/Lateral"; //$NON-NLS-1$
+
+			switch (getBuoyIndex()) {
+			case PORT_HAND:
+				if (region == IALA_A)
+					switch (style) {
+					case LAT_CAN:
+						image += "_Can_Red"; //$NON-NLS-1$
+						break;
+					case LAT_PILLAR:
+						image += "_Pillar_Red"; //$NON-NLS-1$
+						break;
+					case LAT_SPAR:
+						image += "_Spar_Red"; //$NON-NLS-1$
+						break;
+					case LAT_BEACON:
+						image += "_Beacon_Red"; //$NON-NLS-1$
+						break;
+					case LAT_TOWER:
+						image += "_Tower_Red"; //$NON-NLS-1$
+						break;
+					case LAT_FLOAT:
+						image += "_Float_Red"; //$NON-NLS-1$
+						break;
+					case LAT_PERCH:
+						image += "_Perch_Port"; //$NON-NLS-1$
+						break;
+					default:
+					}
+				else
+					switch (style) {
+					case LAT_CAN:
+						image += "_Can_Green"; //$NON-NLS-1$
+						break;
+					case LAT_PILLAR:
+						image += "_Pillar_Green"; //$NON-NLS-1$
+						break;
+					case LAT_SPAR:
+						image += "_Spar_Green"; //$NON-NLS-1$
+						break;
+					case LAT_BEACON:
+						image += "_Beacon_Green"; //$NON-NLS-1$
+						break;
+					case LAT_TOWER:
+						image += "_Tower_Green"; //$NON-NLS-1$
+						break;
+					case LAT_FLOAT:
+						image += "_Float_Green"; //$NON-NLS-1$
+						break;
+					case LAT_PERCH:
+						image += "_Perch_Port"; //$NON-NLS-1$
+						break;
+					default:
+					}
+				break;
+
+			case STARBOARD_HAND:
+				if (region == IALA_A)
+					switch (style) {
+					case LAT_CONE:
+						image += "_Cone_Green"; //$NON-NLS-1$
+						break;
+					case LAT_PILLAR:
+						image += "_Pillar_Green"; //$NON-NLS-1$
+						break;
+					case LAT_SPAR:
+						image += "_Spar_Green"; //$NON-NLS-1$
+						break;
+					case LAT_BEACON:
+						image += "_Beacon_Green"; //$NON-NLS-1$
+						break;
+					case LAT_TOWER:
+						image += "_Tower_Green"; //$NON-NLS-1$
+						break;
+					case LAT_FLOAT:
+						image += "_Float_Green"; //$NON-NLS-1$
+						break;
+					case LAT_PERCH:
+						image += "_Perch_Starboard"; //$NON-NLS-1$
+						break;
+					default:
+					}
+				else
+					switch (style) {
+					case LAT_CONE:
+						image += "_Cone_Red"; //$NON-NLS-1$
+						break;
+					case LAT_PILLAR:
+						image += "_Pillar_Red"; //$NON-NLS-1$
+						break;
+					case LAT_SPAR:
+						image += "_Spar_Red"; //$NON-NLS-1$
+						break;
+					case LAT_BEACON:
+						image += "_Beacon_Red"; //$NON-NLS-1$
+						break;
+					case LAT_TOWER:
+						image += "_Tower_Red"; //$NON-NLS-1$
+						break;
+					case LAT_FLOAT:
+						image += "_Float_Red"; //$NON-NLS-1$
+						break;
+					case LAT_PERCH:
+						image += "_Perch_Starboard"; //$NON-NLS-1$
+						break;
+					default:
+					}
+				break;
+
+			case PREF_PORT_HAND:
+				if (region == IALA_A)
+					switch (style) {
+					case LAT_CAN:
+						image += "_Can_Red_Green_Red"; //$NON-NLS-1$
+						break;
+					case LAT_PILLAR:
+						image += "_Pillar_Red_Green_Red"; //$NON-NLS-1$
+						break;
+					case LAT_SPAR:
+						image += "_Spar_Red_Green_Red"; //$NON-NLS-1$
+						break;
+					case LAT_BEACON:
+						image += "_Beacon_Red_Green_Red"; //$NON-NLS-1$
+						break;
+					case LAT_TOWER:
+						image += "_Tower_Red_Green_Red"; //$NON-NLS-1$
+						break;
+					case LAT_FLOAT:
+						image += "_Float_Red_Green_Red"; //$NON-NLS-1$
+						break;
+					default:
+					}
+				else
+					switch (style) {
+					case LAT_CAN:
+						image += "_Can_Green_Red_Green"; //$NON-NLS-1$
+						break;
+					case LAT_PILLAR:
+						image += "_Pillar_Green_Red_Green"; //$NON-NLS-1$
+						break;
+					case LAT_SPAR:
+						image += "_Spar_Green_Red_Green"; //$NON-NLS-1$
+						break;
+					case LAT_BEACON:
+						image += "_Beacon_Green_Red_Green"; //$NON-NLS-1$
+						break;
+					case LAT_TOWER:
+						image += "_Tower_Green_Red_Green"; //$NON-NLS-1$
+						break;
+					case LAT_FLOAT:
+						image += "_Float_Green_Red_Green"; //$NON-NLS-1$
+						break;
+					default:
+					}
+				break;
+
+			case PREF_STARBOARD_HAND:
+				if (region == IALA_A)
+					switch (style) {
+					case LAT_CONE:
+						image += "_Cone_Green_Red_Green"; //$NON-NLS-1$
+						break;
+					case LAT_PILLAR:
+						image += "_Pillar_Green_Red_Green"; //$NON-NLS-1$
+						break;
+					case LAT_SPAR:
+						image += "_Spar_Green_Red_Green"; //$NON-NLS-1$
+						break;
+					case LAT_BEACON:
+						image += "_Beacon_Green_Red_Green"; //$NON-NLS-1$
+						break;
+					case LAT_TOWER:
+						image += "_Tower_Green_Red_Green"; //$NON-NLS-1$
+						break;
+					case LAT_FLOAT:
+						image += "_Float_Green_Red_Green"; //$NON-NLS-1$
+						break;
+					default:
+					}
+				else
+					switch (style) {
+					case LAT_CONE:
+						image += "_Cone_Red_Green_Red"; //$NON-NLS-1$
+						break;
+					case LAT_PILLAR:
+						image += "_Pillar_Red_Green_Red"; //$NON-NLS-1$
+						break;
+					case LAT_SPAR:
+						image += "_Spar_Red_Green_Red"; //$NON-NLS-1$
+						break;
+					case LAT_BEACON:
+						image += "_Beacon_Red_Green_Red"; //$NON-NLS-1$
+						break;
+					case LAT_TOWER:
+						image += "_Tower_Red_Green_Red"; //$NON-NLS-1$
+						break;
+					case LAT_FLOAT:
+						image += "_Float_Red_Green_Red"; //$NON-NLS-1$
+						break;
+					default:
+					}
+				break;
+
+			default:
+			}
+
+			if (!image.equals("/images/Lateral")) { //$NON-NLS-1$
+
+				image += ".png"; //$NON-NLS-1$
+				dlg.lM01Icon.setIcon(new ImageIcon(getClass().getResource(image)));
+
+				if (hasTopMark()) {
+					image = "";
+					switch (getBuoyIndex()) {
+					case PORT_HAND:
+					case PREF_PORT_HAND:
+						if (region == IALA_A)
+							switch (style) {
+							case LAT_CAN:
+								image = "/images/Top_Can_Red_Buoy_Small.png"; //$NON-NLS-1$
+								break;
+							case LAT_PILLAR:
+							case LAT_SPAR:
+								image = "/images/Top_Can_Red_Buoy.png"; //$NON-NLS-1$
+								break;
+							case LAT_BEACON:
+							case LAT_TOWER:
+								image = "/images/Top_Can_Red_Beacon.png"; //$NON-NLS-1$
+								break;
+							case LAT_FLOAT:
+								image = "/images/Top_Can_Red_Float.png"; //$NON-NLS-1$
+								break;
+							}
+						else
+							switch (style) {
+							case LAT_CAN:
+								image = "/images/Top_Can_Green_Buoy_Small.png"; //$NON-NLS-1$
+								break;
+							case LAT_PILLAR:
+							case LAT_SPAR:
+								image = "/images/Top_Can_Green_Buoy.png"; //$NON-NLS-1$
+								break;
+							case LAT_BEACON:
+							case LAT_TOWER:
+								image = "/images/Top_Can_Green_Beacon.png"; //$NON-NLS-1$
+								break;
+							case LAT_FLOAT:
+								image = "/images/Top_Can_Green_Float.png"; //$NON-NLS-1$
+								break;
+							}
+						break;
+
+					case STARBOARD_HAND:
+					case PREF_STARBOARD_HAND:
+						if (region == IALA_A)
+							switch (style) {
+							case LAT_CONE:
+								image = "/images/Top_Cone_Green_Buoy_Small.png"; //$NON-NLS-1$
+								break;
+							case LAT_PILLAR:
+							case LAT_SPAR:
+								image = "/images/Top_Cone_Green_Buoy.png"; //$NON-NLS-1$
+								break;
+							case LAT_BEACON:
+							case LAT_TOWER:
+								image = "/images/Top_Cone_Green_Beacon.png"; //$NON-NLS-1$
+								break;
+							case LAT_FLOAT:
+								image = "/images/Top_Cone_Green_Float.png"; //$NON-NLS-1$
+								break;
+							}
+						else
+							switch (style) {
+							case LAT_CONE:
+								image = "/images/Top_Cone_Red_Buoy_Small.png"; //$NON-NLS-1$
+								break;
+							case LAT_PILLAR:
+							case LAT_SPAR:
+								image = "/images/Top_Cone_Red_Buoy.png"; //$NON-NLS-1$
+								break;
+							case LAT_BEACON:
+							case LAT_TOWER:
+								image = "/images/Top_Cone_Red_Beacon.png"; //$NON-NLS-1$
+								break;
+							case LAT_FLOAT:
+								image = "/images/Top_Cone_Red_Float.png"; //$NON-NLS-1$
+								break;
+							}
+						break;
+					}
+					if (!image.isEmpty())
+						dlg.lM06Icon.setIcon(new ImageIcon(getClass().getResource(image)));
+				}
+			} else
+				dlg.lM01Icon.setIcon(null);
+		}
+	}
+
+	public void saveSign() {
+		Node node = getNode();
+
+		if (node == null) {
+			return;
+		}
+
+		int cat = getBuoyIndex();
+		String shape = ""; //$NON-NLS-1$
+		String colour = ""; //$NON-NLS-1$
+
+		switch (cat) {
+
+		case PORT_HAND:
+			switch (getStyleIndex()) {
+			case LAT_CAN:
+				super.saveSign("buoy_lateral"); //$NON-NLS-1$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:buoy_lateral:shape", "can")); //$NON-NLS-1$ //$NON-NLS-2$
+				break;
+			case LAT_PILLAR:
+				super.saveSign("buoy_lateral"); //$NON-NLS-1$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:buoy_lateral:shape", "pillar")); //$NON-NLS-1$ //$NON-NLS-2$
+				break;
+			case LAT_SPAR:
+				super.saveSign("buoy_lateral"); //$NON-NLS-1$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:buoy_lateral:shape", "spar")); //$NON-NLS-1$ //$NON-NLS-2$
+				break;
+			case LAT_BEACON:
+				super.saveSign("beacon_lateral"); //$NON-NLS-1$
+				break;
+			case LAT_TOWER:
+				super.saveSign("beacon_lateral"); //$NON-NLS-1$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:beacon_lateral:shape", "tower")); //$NON-NLS-1$ //$NON-NLS-2$
+				break;
+			case LAT_FLOAT:
+				super.saveSign("light_float"); //$NON-NLS-1$
+				break;
+			case LAT_PERCH:
+				super.saveSign("beacon_lateral"); //$NON-NLS-1$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:beacon_lateral:shape", "perch")); //$NON-NLS-1$ //$NON-NLS-2$
+				break;
+			default:
+			}
+			switch (getStyleIndex()) {
+			case LAT_CAN:
+			case LAT_PILLAR:
+			case LAT_SPAR:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:buoy_lateral:category", "port")); //$NON-NLS-1$ //$NON-NLS-2$
+				if (getRegion() == IALA_A) {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:buoy_lateral:colour", "red")); //$NON-NLS-1$ //$NON-NLS-2$
+					colour = "red"; //$NON-NLS-1$
+				} else {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:buoy_lateral:colour", "green")); //$NON-NLS-1$ //$NON-NLS-2$
+					colour = "green"; //$NON-NLS-1$
+				}
+				break;
+			case LAT_PERCH:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:beacon_lateral:category", "port")); //$NON-NLS-1$ //$NON-NLS-2$
+				break;
+			case LAT_BEACON:
+			case LAT_TOWER:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:beacon_lateral:category", "port")); //$NON-NLS-1$ //$NON-NLS-2$
+				if (getRegion() == IALA_A) {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:beacon_lateral:colour", "red")); //$NON-NLS-1$ //$NON-NLS-2$
+					colour = "red"; //$NON-NLS-1$
+				} else {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:beacon_lateral:colour", "green")); //$NON-NLS-1$ //$NON-NLS-2$
+					colour = "green"; //$NON-NLS-1$
+				}
+				break;
+			case LAT_FLOAT:
+				if (getRegion() == IALA_A) {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:light_float:colour", "red")); //$NON-NLS-1$ //$NON-NLS-2$
+					colour = "red"; //$NON-NLS-1$
+				} else {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:light_float:colour", "green")); //$NON-NLS-1$ //$NON-NLS-2$
+					colour = "green"; //$NON-NLS-1$
+				}
+				break;
+			}
+			shape = "cylinder"; //$NON-NLS-1$
+			break;
+
+		case PREF_PORT_HAND:
+			switch (getStyleIndex()) {
+			case LAT_CAN:
+				super.saveSign("buoy_lateral"); //$NON-NLS-1$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:buoy_lateral:shape", "can")); //$NON-NLS-1$ //$NON-NLS-2$
+				break;
+			case LAT_PILLAR:
+				super.saveSign("buoy_lateral"); //$NON-NLS-1$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:buoy_lateral:shape", "pillar")); //$NON-NLS-1$ //$NON-NLS-2$
+				break;
+			case LAT_SPAR:
+				super.saveSign("buoy_lateral"); //$NON-NLS-1$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:buoy_lateral:shape", "spar")); //$NON-NLS-1$ //$NON-NLS-2$
+				break;
+			case LAT_BEACON:
+				super.saveSign("beacon_lateral"); //$NON-NLS-1$
+				break;
+			case LAT_TOWER:
+				super.saveSign("beacon_lateral"); //$NON-NLS-1$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:beacon_lateral:shape", "tower")); //$NON-NLS-1$ //$NON-NLS-2$
+				break;
+			case LAT_FLOAT:
+				super.saveSign("light_float"); //$NON-NLS-1$
+				break;
+			default:
+			}
+			switch (getStyleIndex()) {
+			case LAT_CAN:
+			case LAT_PILLAR:
+			case LAT_SPAR:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:buoy_lateral:category", "preferred_channel_port")); //$NON-NLS-1$ //$NON-NLS-2$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:buoy_lateral:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
+				if (getRegion() == IALA_A) {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:buoy_lateral:colour", "red;green;red")); //$NON-NLS-1$ //$NON-NLS-2$
+					colour = "red"; //$NON-NLS-1$
+				} else {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:buoy_lateral:colour", "green;red;green")); //$NON-NLS-1$ //$NON-NLS-2$
+					colour = "green"; //$NON-NLS-1$
+				}
+				break;
+			case LAT_BEACON:
+			case LAT_TOWER:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:beacon_lateral:category", "preferred_channel_port")); //$NON-NLS-1$ //$NON-NLS-2$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:beacon_lateral:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
+				if (getRegion() == IALA_A) {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:beacon_lateral:colour", "red;green;red")); //$NON-NLS-1$ //$NON-NLS-2$
+					colour = "red"; //$NON-NLS-1$
+				} else {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:beacon_lateral:colour", "green;red;green")); //$NON-NLS-1$ //$NON-NLS-2$
+					colour = "green"; //$NON-NLS-1$
+				}
+				break;
+			case LAT_FLOAT:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:light_float:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
+				if (getRegion() == IALA_A) {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:light_float:colour", "red;green;red")); //$NON-NLS-1$ //$NON-NLS-2$
+					colour = "red"; //$NON-NLS-1$
+				} else {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:light_float:colour", "green;red;green")); //$NON-NLS-1$ //$NON-NLS-2$
+					colour = "green"; //$NON-NLS-1$
+				}
+				break;
+			}
+			shape = "cylinder"; //$NON-NLS-1$
+			break;
+
+		case STARBOARD_HAND:
+			switch (getStyleIndex()) {
+			case LAT_CONE:
+				super.saveSign("buoy_lateral"); //$NON-NLS-1$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:buoy_lateral:shape", "conical")); //$NON-NLS-1$ //$NON-NLS-2$
+				break;
+			case LAT_PILLAR:
+				super.saveSign("buoy_lateral"); //$NON-NLS-1$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:buoy_lateral:shape", "pillar")); //$NON-NLS-1$ //$NON-NLS-2$
+				break;
+			case LAT_SPAR:
+				super.saveSign("buoy_lateral"); //$NON-NLS-1$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:buoy_lateral:shape", "spar")); //$NON-NLS-1$ //$NON-NLS-2$
+				break;
+			case LAT_BEACON:
+				super.saveSign("beacon_lateral"); //$NON-NLS-1$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:beacon_lateral:shape", "stake")); //$NON-NLS-1$ //$NON-NLS-2$
+				break;
+			case LAT_TOWER:
+				super.saveSign("beacon_lateral"); //$NON-NLS-1$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:beacon_lateral:shape", "tower")); //$NON-NLS-1$ //$NON-NLS-2$
+				break;
+			case LAT_FLOAT:
+				super.saveSign("light_float"); //$NON-NLS-1$
+				break;
+			case LAT_PERCH:
+				super.saveSign("beacon_lateral"); //$NON-NLS-1$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:beacon_lateral:shape", "perch")); //$NON-NLS-1$ //$NON-NLS-2$
+				break;
+			default:
+			}
+			switch (getStyleIndex()) {
+			case LAT_CAN:
+			case LAT_PILLAR:
+			case LAT_SPAR:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:buoy_lateral:category", "starboard")); //$NON-NLS-1$ //$NON-NLS-2$
+				if (getRegion() == IALA_A) {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:buoy_lateral:colour", "green")); //$NON-NLS-1$ //$NON-NLS-2$
+					colour = "green"; //$NON-NLS-1$
+				} else {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:buoy_lateral:colour", "red")); //$NON-NLS-1$ //$NON-NLS-2$
+					colour = "red"; //$NON-NLS-1$
+				}
+				break;
+			case LAT_BEACON:
+			case LAT_TOWER:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:beacon_lateral:category", "starboard")); //$NON-NLS-1$ //$NON-NLS-2$
+				if (getRegion() == IALA_A) {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:beacon_lateral:colour", "green")); //$NON-NLS-1$ //$NON-NLS-2$
+					colour = "green"; //$NON-NLS-1$
+				} else {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:beacon_lateral:colour", "red")); //$NON-NLS-1$ //$NON-NLS-2$
+					colour = "red"; //$NON-NLS-1$
+				}
+				break;
+			case LAT_FLOAT:
+				if (getRegion() == IALA_A) {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:light_float:colour", "green")); //$NON-NLS-1$ //$NON-NLS-2$
+					colour = "green"; //$NON-NLS-1$
+				} else {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:light_float:colour", "red")); //$NON-NLS-1$ //$NON-NLS-2$
+					colour = "red"; //$NON-NLS-1$
+				}
+				break;
+			case LAT_PERCH:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:beacon_lateral:category", "starboard")); //$NON-NLS-1$ //$NON-NLS-2$
+				break;
+			}
+			shape = "cone, point up"; //$NON-NLS-1$
+			break;
+
+		case PREF_STARBOARD_HAND:
+			switch (getStyleIndex()) {
+			case LAT_CONE:
+				super.saveSign("buoy_lateral"); //$NON-NLS-1$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:buoy_lateral:shape", "conical")); //$NON-NLS-1$ //$NON-NLS-2$
+				break;
+			case LAT_PILLAR:
+				super.saveSign("buoy_lateral"); //$NON-NLS-1$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:buoy_lateral:shape", "pillar")); //$NON-NLS-1$ //$NON-NLS-2$
+				break;
+			case LAT_SPAR:
+				super.saveSign("buoy_lateral"); //$NON-NLS-1$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:buoy_lateral:shape", "spar")); //$NON-NLS-1$ //$NON-NLS-2$
+				break;
+			case LAT_BEACON:
+				super.saveSign("beacon_lateral"); //$NON-NLS-1$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:beacon_lateral:shape", "stake")); //$NON-NLS-1$ //$NON-NLS-2$
+				break;
+			case LAT_TOWER:
+				super.saveSign("beacon_lateral"); //$NON-NLS-1$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:beacon_lateral:shape", "tower")); //$NON-NLS-1$ //$NON-NLS-2$
+				break;
+			case LAT_FLOAT:
+				super.saveSign("light_float"); //$NON-NLS-1$
+				break;
+			default:
+			}
+			switch (getStyleIndex()) {
+			case LAT_CAN:
+			case LAT_PILLAR:
+			case LAT_SPAR:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:buoy_lateral:category", "preferred_channel_starboard")); //$NON-NLS-1$ //$NON-NLS-2$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:buoy_lateral:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
+				if (getRegion() == IALA_A) {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:buoy_lateral:colour", "green;red;green")); //$NON-NLS-1$ //$NON-NLS-2$
+					colour = "green"; //$NON-NLS-1$
+				} else {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:buoy_lateral:colour", "red;green;red")); //$NON-NLS-1$ //$NON-NLS-2$
+					colour = "red"; //$NON-NLS-1$
+				}
+				break;
+			case LAT_BEACON:
+			case LAT_TOWER:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:beacon_lateral:category", "preferred_channel_starboard")); //$NON-NLS-1$ //$NON-NLS-2$
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:beacon_lateral:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
+				if (getRegion() == IALA_A) {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:beacon_lateral:colour", "green;red;green")); //$NON-NLS-1$ //$NON-NLS-2$
+					colour = "green"; //$NON-NLS-1$
+				} else {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:beacon_lateral:colour", "red;green;red")); //$NON-NLS-1$ //$NON-NLS-2$
+					colour = "red"; //$NON-NLS-1$
+				}
+				break;
+			case LAT_FLOAT:
+				Main.main.undoRedo.add(new ChangePropertyCommand(node,
+						"seamark:light_float:colour_pattern", "horizontal stripes")); //$NON-NLS-1$ //$NON-NLS-2$
+				if (getRegion() == IALA_A) {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:light_float:colour", "green;red;green")); //$NON-NLS-1$ //$NON-NLS-2$
+					colour = "green"; //$NON-NLS-1$
+				} else {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node,
+							"seamark:light_float:colour", "red;green;red")); //$NON-NLS-1$ //$NON-NLS-2$
+					colour = "red"; //$NON-NLS-1$
+				}
+				break;
+			}
+			shape = "cone, point up"; //$NON-NLS-1$
+			break;
+
+		default:
+		}
+		saveTopMarkData(shape, colour);
+		saveLightData();
+		saveRadarFogData();
+
+		Main.pref.put("tomsplugin.IALA", getRegion() ? "B" : "A"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+	}
+}
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/buoys/BuoyNota.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/buoys/BuoyNota.java	(revision 23382)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/buoys/BuoyNota.java	(revision 23382)
@@ -0,0 +1,158 @@
+package oseam.seamarks.buoys;
+
+import java.util.Map;
+
+import javax.swing.ImageIcon;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.command.ChangePropertyCommand;
+import org.openstreetmap.josm.data.osm.Node;
+
+import oseam.Messages;
+import oseam.dialogs.OSeaMAction;
+import oseam.seamarks.SeaMark;
+
+
+public class BuoyNota extends Buoy {
+	public BuoyNota(OSeaMAction dia, Node node) {
+		super(dia);
+
+		Map<String, String> keys;
+		keys = node.getKeys();
+		setNode(node);
+
+		resetMask();
+
+		dlg.cbM01TypeOfMark.setSelectedIndex(LIGHT);
+
+		dlg.cbM01CatOfMark.setEnabled(true);
+		dlg.cbM01CatOfMark.setVisible(true);
+		dlg.lM01CatOfMark.setVisible(true);
+
+		dlg.cbM01CatOfMark.removeAllItems();
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.157")); //$NON-NLS-1$
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.206")); //$NON-NLS-1$
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.207")); //$NON-NLS-1$
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.208")); //$NON-NLS-1$
+		dlg.cbM01CatOfMark.addItem(Messages.getString("SmpDialogAction.209")); //$NON-NLS-1$
+
+		setRegion(Main.pref.get("tomsplugin.IALA").equals("B")); //$NON-NLS-1$ //$NON-NLS-2$
+
+		if (keys.containsKey("name")) //$NON-NLS-1$
+			setName(keys.get("name")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:name")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:landmark:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:landmark:name")); //$NON-NLS-1$
+		else if (keys.containsKey("seamark:light_major:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:light_major:name")); //$NON-NLS-1$
+		else if (keys.containsKey("seamark:light_minor:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:light_minor:name")); //$NON-NLS-1$
+		else if (keys.containsKey("seamark:light_vessel:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:light_vessel:name")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:type")) { //$NON-NLS-1$
+			String type = keys.get("seamark:type"); //$NON-NLS-1$
+			if (type.equals("landmark"))
+				setBuoyIndex(LIGHT_HOUSE);
+			else if (type.equals("light_major"))
+				setBuoyIndex(LIGHT_MAJOR);
+			else if (type.equals("light_minor"))
+				setBuoyIndex(LIGHT_MINOR);
+			else if (type.equals("light_vessel"))
+				setBuoyIndex(LIGHT_VESSEL);
+		}
+
+		refreshLights();
+		parseLights(keys);
+		parseFogRadar(keys);
+		setTopMark(false);
+		setFired(true);
+
+		dlg.cbM01CatOfMark.setSelectedIndex(getBuoyIndex());
+		dlg.tfM01Name.setText(getName());
+		dlg.cM01Fired.setEnabled(false);
+		dlg.cM01Fired.setSelected(true);
+	}
+
+	public boolean isValid() {
+		return (getBuoyIndex() > 0);
+	}
+
+	public void paintSign() {
+		if (dlg.paintlock)
+			return;
+		super.paintSign();
+
+		dlg.sM01StatusBar.setText(getErrMsg());
+
+		if (isValid()) {
+			dlg.cM01Radar.setVisible(true);
+			dlg.cM01Racon.setVisible(true);
+			dlg.cM01Fog.setVisible(true);
+
+			dlg.rbM01Fired1.setVisible(true);
+			dlg.rbM01FiredN.setVisible(true);
+			dlg.lM01Height.setVisible(true);
+			dlg.tfM01Height.setVisible(true);
+			dlg.lM01Range.setVisible(true);
+			dlg.tfM01Range.setVisible(true);
+
+			switch (getBuoyIndex()) {
+			case SeaMark.LIGHT_HOUSE:
+				dlg.lM01Icon.setIcon(new ImageIcon(getClass().getResource(
+						"/images/Light_House.png"))); //$NON-NLS-1$
+				break;
+
+			case SeaMark.LIGHT_MAJOR:
+				dlg.lM01Icon.setIcon(new ImageIcon(getClass().getResource(
+						"/images/Light_Major.png"))); //$NON-NLS-1$
+				break;
+
+			case SeaMark.LIGHT_MINOR:
+				dlg.lM01Icon.setIcon(new ImageIcon(getClass().getResource(
+						"/images/Light_Minor.png"))); //$NON-NLS-1$
+				break;
+
+			case SeaMark.LIGHT_VESSEL:
+				dlg.lM01Icon.setIcon(new ImageIcon(getClass().getResource(
+						"/images/Major_Float.png"))); //$NON-NLS-1$
+				break;
+
+			default:
+			}
+		}
+	}
+
+	public void saveSign() {
+		Node node = getNode();
+
+		if (node == null) {
+			return;
+		}
+
+		switch (getBuoyIndex()) {
+		case LIGHT_HOUSE:
+			super.saveSign("landmark"); //$NON-NLS-1$
+			break;
+		case LIGHT_MAJOR:
+			super.saveSign("light_major"); //$NON-NLS-1$
+			break;
+		case LIGHT_MINOR:
+			super.saveSign("light_minor"); //$NON-NLS-1$
+			break;
+		case LIGHT_VESSEL:
+			super.saveSign("light_vessel"); //$NON-NLS-1$
+			break;
+		default:
+		}
+		saveLightData(); //$NON-NLS-1$
+		saveRadarFogData();
+	}
+
+	public void setLightColour() {
+	}
+
+}
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/buoys/BuoySaw.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/buoys/BuoySaw.java	(revision 23382)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/buoys/BuoySaw.java	(revision 23382)
@@ -0,0 +1,257 @@
+package oseam.seamarks.buoys;
+
+import java.util.Map;
+
+import javax.swing.ImageIcon;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.command.ChangePropertyCommand;
+import org.openstreetmap.josm.data.osm.Node;
+
+import oseam.Messages;
+import oseam.dialogs.OSeaMAction;
+import oseam.seamarks.SeaMark;
+
+
+public class BuoySaw extends Buoy {
+	public BuoySaw(OSeaMAction dia, Node node) {
+		super(dia);
+
+		String str;
+		Map<String, String> keys;
+		keys = node.getKeys();
+		setNode(node);
+
+		resetMask();
+		dlg.cbM01TypeOfMark.setSelectedIndex(SAFE_WATER);
+
+		dlg.cbM01StyleOfMark.removeAllItems();
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.01")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.04")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.08")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.setVisible(true);
+		dlg.lM01StyleOfMark.setVisible(true);
+
+		setBuoyIndex(SAFE_WATER);
+		setColour(SeaMark.RED_WHITE);
+		setLightColour("W"); //$NON-NLS-1$
+		setRegion(Main.pref.get("tomsplugin.IALA").equals("B")); //$NON-NLS-1$ //$NON-NLS-2$
+
+		if (keys.containsKey("name")) //$NON-NLS-1$
+			setName(keys.get("name")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:name")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:buoy_safe_water:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:buoy_safe_water:name")); //$NON-NLS-1$
+		else if (keys.containsKey("seamark:beacon_safe_water:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:beacon_safe_water:name")); //$NON-NLS-1$
+		else if (keys.containsKey("seamark:light_float:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:light_float:name")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:buoy_safe_water:shape")) { //$NON-NLS-1$
+			str = keys.get("seamark:buoy_safe_water:shape"); //$NON-NLS-1$
+
+			if (str.equals("pillar")) //$NON-NLS-1$
+				setStyleIndex(SAFE_PILLAR);
+			else if (str.equals("spar")) //$NON-NLS-1$
+				setStyleIndex(SAFE_SPAR);
+			else if (str.equals("sphere")) //$NON-NLS-1$
+				setStyleIndex(SAFE_SPHERE);
+		} else if ((keys.containsKey("seamark:type")) //$NON-NLS-1$
+				&& (keys.get("seamark:type").equals("light_float"))) { //$NON-NLS-1$ //$NON-NLS-2$
+			setStyleIndex(SAFE_FLOAT);
+		} else if ((keys.containsKey("seamark:type")) //$NON-NLS-1$
+				&& (keys.get("seamark:type").equals("beacon_safe_water"))) { //$NON-NLS-1$ //$NON-NLS-2$
+			setStyleIndex(SAFE_BEACON);
+		}
+
+		if (getStyleIndex() >= dlg.cbM01StyleOfMark.getItemCount())
+			setStyleIndex(0);
+
+		if (keys.containsKey("seamark:topmark:shape") //$NON-NLS-1$
+				|| keys.containsKey("seamark:topmark:colour")) { //$NON-NLS-1$
+			setTopMark(true);
+		}
+
+		refreshLights();
+		parseLights(keys);
+		parseFogRadar(keys);
+
+		dlg.cbM01StyleOfMark.setSelectedIndex(getStyleIndex());
+		dlg.tfM01Name.setText(getName());
+		dlg.cM01TopMark.setSelected(hasTopMark());
+	}
+
+	public void refreshLights() {
+		dlg.cbM01Kennung.removeAllItems();
+		dlg.cbM01Kennung.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
+		dlg.cbM01Kennung.addItem("Iso"); //$NON-NLS-1$
+		dlg.cbM01Kennung.addItem("Oc"); //$NON-NLS-1$
+		dlg.cbM01Kennung.addItem("LFl"); //$NON-NLS-1$
+		dlg.cbM01Kennung.addItem("Mo"); //$NON-NLS-1$
+		dlg.cbM01Kennung.setSelectedIndex(0);
+	}
+
+	public boolean isValid() {
+		return (getBuoyIndex() > 0) && (getStyleIndex() > 0);
+	}
+
+	public void setLightColour() {
+		super.setLightColour("W"); //$NON-NLS-1$
+	}
+
+	public void paintSign() {
+		if (dlg.paintlock)
+			return;
+		super.paintSign();
+
+		dlg.sM01StatusBar.setText(getErrMsg());
+
+		if (isValid()) {
+			dlg.tfM01Name.setEnabled(true);
+			dlg.tfM01Name.setText(getName());
+			dlg.cM01TopMark.setEnabled(true);
+			dlg.cM01TopMark.setVisible(true);
+			dlg.cM01Radar.setVisible(true);
+			dlg.cM01Racon.setVisible(true);
+			dlg.cM01Fog.setVisible(true);
+			dlg.cM01Fired.setVisible(true);
+			dlg.cM01Fired.setEnabled(true);
+			if (!isSectored()) {
+				dlg.cbM01Colour.setVisible(false);
+				dlg.lM01Colour.setVisible(false);
+			}
+			dlg.rbM01Fired1.setVisible(false);
+			dlg.rbM01FiredN.setVisible(false);
+			dlg.lM01Height.setVisible(false);
+			dlg.tfM01Height.setVisible(false);
+			dlg.lM01Range.setVisible(false);
+			dlg.tfM01Range.setVisible(false);
+
+			if (isFired()) {
+				switch (getStyleIndex()) {
+				case SAFE_FLOAT:
+				case SAFE_BEACON:
+					dlg.lM01Height.setVisible(true);
+					dlg.tfM01Height.setVisible(true);
+					dlg.lM01Range.setVisible(true);
+					dlg.tfM01Range.setVisible(true);
+					break;
+				default:
+				}
+			}
+
+			String image = "/images/Safe_Water"; //$NON-NLS-1$
+
+			switch (getStyleIndex()) {
+			case SAFE_PILLAR:
+				image += "_Pillar"; //$NON-NLS-1$
+				break;
+			case SAFE_SPAR:
+				image += "_Spar"; //$NON-NLS-1$
+				break;
+			case SAFE_SPHERE:
+				image += "_Sphere"; //$NON-NLS-1$
+				break;
+			case SAFE_BEACON:
+				image += "_Beacon"; //$NON-NLS-1$
+				break;
+			case SAFE_FLOAT:
+				image += "_Float"; //$NON-NLS-1$
+				break;
+			default:
+			}
+
+			if (!image.equals("/images/Safe_Water")) { //$NON-NLS-1$
+				image += ".png"; //$NON-NLS-1$
+				dlg.lM01Icon.setIcon(new ImageIcon(getClass().getResource(image)));
+				if (hasTopMark()) {
+					image = "";
+					switch (getStyleIndex()) {
+					case SAFE_PILLAR:
+					case SAFE_SPAR:
+						image = "/images/Top_Sphere_Red_Buoy.png"; //$NON-NLS-1$
+						break;
+					case SAFE_SPHERE:
+						image = "/images/Top_Sphere_Red_Buoy_Small.png"; //$NON-NLS-1$
+						break;
+					case SAFE_BEACON:
+						image = "/images/Top_Sphere_Red_Beacon.png"; //$NON-NLS-1$
+						break;
+					case SAFE_FLOAT:
+						image = "/images/Top_Sphere_Red_Float.png"; //$NON-NLS-1$
+						break;
+					}
+					if (!image.isEmpty())
+						dlg.lM06Icon.setIcon(new ImageIcon(getClass().getResource(image)));
+				}
+			} else
+				dlg.lM01Icon.setIcon(null);
+		}
+	}
+
+	public void saveSign() {
+		Node node = getNode();
+
+		if (node == null) {
+			return;
+		}
+
+		switch (getStyleIndex()) {
+		case SAFE_PILLAR:
+			super.saveSign("buoy_safe_water"); //$NON-NLS-1$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_safe_water:shape", "pillar")); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case SAFE_SPAR:
+			super.saveSign("buoy_safe_water"); //$NON-NLS-1$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_safe_water:shape", "spar")); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case SAFE_SPHERE:
+			super.saveSign("buoy_safe_water"); //$NON-NLS-1$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_safe_water:shape", "sphere")); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case SAFE_BEACON:
+			super.saveSign("beacon_safe_water"); //$NON-NLS-1$
+			break;
+		case SAFE_FLOAT:
+			super.saveSign("light_float"); //$NON-NLS-1$
+			break;
+		default:
+		}
+
+		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")); //$NON-NLS-1$ //$NON-NLS-2$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_safe_water:colour", "red;white")); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case SAFE_BEACON:
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:beacon_safe_water:colour_pattern", "vertical stripes")); //$NON-NLS-1$ //$NON-NLS-2$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:beacon_safe_water:colour", "red;white")); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case SAFE_FLOAT:
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:light_float:colour_pattern", "vertical stripes")); //$NON-NLS-1$ //$NON-NLS-2$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:light_float:colour", "red;white")); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		default:
+		}
+		saveTopMarkData("sphere", "red"); //$NON-NLS-1$ //$NON-NLS-2$
+		saveLightData(); //$NON-NLS-1$
+		saveRadarFogData();
+	}
+}
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/buoys/BuoySpec.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/buoys/BuoySpec.java	(revision 23382)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/buoys/BuoySpec.java	(revision 23382)
@@ -0,0 +1,415 @@
+package oseam.seamarks.buoys;
+
+import java.util.Map;
+
+import javax.swing.ImageIcon;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.command.ChangePropertyCommand;
+import org.openstreetmap.josm.data.osm.Node;
+
+import oseam.Messages;
+import oseam.dialogs.OSeaMAction;
+import oseam.seamarks.SeaMark;
+
+
+public class BuoySpec extends Buoy {
+	public BuoySpec(OSeaMAction dia, Node node) {
+		super(dia);
+
+		String str;
+		Map<String, String> keys;
+		keys = node.getKeys();
+		setNode(node);
+
+		resetMask();
+		dlg.cbM01TypeOfMark.setSelectedIndex(SPECIAL_PURPOSE);
+
+		dlg.cbM01StyleOfMark.removeAllItems();
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.01")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.02")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.03")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.04")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.05")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.06")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.08")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.09")); //$NON-NLS-1$
+		dlg.cbM01StyleOfMark.setVisible(true);
+		dlg.lM01StyleOfMark.setVisible(true);
+
+		dlg.cbM01TopMark.removeAllItems();
+		dlg.cbM01TopMark.addItem(Messages.getString("SmpDialogAction.212"));
+		dlg.cbM01TopMark.addItem(Messages.getString("SmpDialogAction.210")); //$NON-NLS-1$
+		dlg.cbM01TopMark.addItem(Messages.getString("SmpDialogAction.211")); //$NON-NLS-1$
+		dlg.cbM01TopMark.addItem(Messages.getString("SmpDialogAction.214")); //$NON-NLS-1$
+		dlg.cbM01TopMark.addItem(Messages.getString("SmpDialogAction.215")); //$NON-NLS-1$
+
+		dlg.cM01TopMark.setEnabled(true);
+
+		setBuoyIndex(SPECIAL_PURPOSE);
+		setColour(SeaMark.YELLOW);
+		setLightColour("W"); //$NON-NLS-1$
+		setRegion(Main.pref.get("tomsplugin.IALA").equals("B")); //$NON-NLS-1$ //$NON-NLS-2$
+
+		if (keys.containsKey("name")) //$NON-NLS-1$
+			setName(keys.get("name")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:name")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:buoy_special_purpose:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:buoy_special_purpose:name")); //$NON-NLS-1$
+		else if (keys.containsKey("seamark:beacon_special_purpose:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:beacon_special_purpose:name")); //$NON-NLS-1$
+		else if (keys.containsKey("seamark:light_float:name")) //$NON-NLS-1$
+			setName(keys.get("seamark:light_float:name")); //$NON-NLS-1$
+
+		if (keys.containsKey("seamark:buoy_special_purpose:shape")) { //$NON-NLS-1$
+			str = keys.get("seamark:buoy_special_purpose:shape"); //$NON-NLS-1$
+
+			if (str.equals("pillar")) //$NON-NLS-1$
+				setStyleIndex(SPEC_PILLAR);
+			else if (str.equals("can")) //$NON-NLS-1$
+				setStyleIndex(SPEC_CAN);
+			else if (str.equals("conical")) //$NON-NLS-1$
+				setStyleIndex(SPEC_CONE);
+			else if (str.equals("spar")) //$NON-NLS-1$
+				setStyleIndex(SPEC_SPAR);
+			else if (str.equals("sphere")) //$NON-NLS-1$
+				setStyleIndex(SPEC_SPHERE);
+			else if (str.equals("barrel")) //$NON-NLS-1$
+				setStyleIndex(SPEC_BARREL);
+		}
+
+		if (keys.containsKey("seamark:beacon_special_purpose:shape")) { //$NON-NLS-1$
+			str = keys.get("seamark:beacon_special_purpose:shape"); //$NON-NLS-1$
+			if (str.equals("tower")) //$NON-NLS-1$
+				setStyleIndex(SPEC_TOWER);
+			else
+				setStyleIndex(SPEC_BEACON);
+		}
+
+		if (keys.containsKey("seamark:light_float:colour")) {
+			setStyleIndex(SPEC_FLOAT);
+		}
+
+		if ((keys.containsKey("seamark:type") && keys.get("seamark:type").equals( //$NON-NLS-1$ //$NON-NLS-2$
+				"beacon_special_purpose")) //$NON-NLS-1$
+				|| keys.containsKey("seamark:beacon_special_purpose:colour") //$NON-NLS-1$
+				|| keys.containsKey("seamark:beacon_special_purpose:shape")) { //$NON-NLS-1$
+			if (keys.containsKey("seamark:beacon_special_purpose:shape") //$NON-NLS-1$
+					&& keys.get("seamark:beacon_special_purpose:shape").equals("tower")) //$NON-NLS-1$ //$NON-NLS-2$
+				setStyleIndex(SPEC_TOWER);
+			else
+				setStyleIndex(SPEC_BEACON);
+		} else if (keys.containsKey("seamark:light_float:colour") //$NON-NLS-1$
+				&& keys.get("seamark:light_float:colour").equals("yellow")) //$NON-NLS-1$ //$NON-NLS-2$
+			setStyleIndex(SPEC_FLOAT);
+
+		if (getStyleIndex() >= dlg.cbM01StyleOfMark.getItemCount())
+			setStyleIndex(0);
+
+		keys = node.getKeys();
+		if (keys.containsKey("seamark:topmark:shape")) { //$NON-NLS-1$
+			str = keys.get("seamark:topmark:shape"); //$NON-NLS-1$
+			setTopMark(true);
+			if (str.equals("x-shape")) { //$NON-NLS-1$
+				if (keys.containsKey("seamark:topmark:colour")) { //$NON-NLS-1$
+					if (keys.get("seamark:topmark:colour").equals("red"))
+						setTopMarkIndex(TOP_RED_X);
+					else
+						setTopMarkIndex(TOP_YELLOW_X);
+				}
+			} else if (str.equals("cone, point up")) { //$NON-NLS-1$
+					setTopMarkIndex(TOP_YELLOW_CONE);
+			} else if (str.equals("cylinder")) { //$NON-NLS-1$
+				setTopMarkIndex(TOP_YELLOW_CAN);
+			}
+		}
+
+		refreshLights();
+		parseLights(keys);
+		parseFogRadar(keys);
+
+		dlg.cbM01StyleOfMark.setSelectedIndex(getStyleIndex());
+		dlg.tfM01Name.setText(getName());
+		dlg.cM01TopMark.setSelected(hasTopMark());
+	}
+
+	public void refreshLights() {
+		super.refreshLights();
+
+		switch (getStyleIndex()) {
+		case SPEC_BARREL:
+			dlg.cM01Fired.setSelected(false);
+			dlg.cM01Fired.setEnabled(false);
+			dlg.cM01TopMark.setEnabled(true);
+			break;
+		default:
+			dlg.cM01Fired.setEnabled(true);
+			dlg.cM01TopMark.setEnabled(true);
+		}
+	}
+
+	public boolean isValid() {
+		return (getBuoyIndex() > 0) && (getStyleIndex() > 0);
+	}
+
+	public void setLightColour() {
+		super.setLightColour("W"); //$NON-NLS-1$
+	}
+
+	public void paintSign() {
+		if (dlg.paintlock)
+			return;
+		super.paintSign();
+
+		dlg.sM01StatusBar.setText(getErrMsg());
+
+		if (isValid()) {
+			dlg.tfM01Name.setEnabled(true);
+			dlg.tfM01Name.setText(getName());
+			dlg.cM01Radar.setVisible(true);
+			dlg.cM01Racon.setVisible(true);
+			dlg.cM01TopMark.setEnabled(true);
+			dlg.cM01TopMark.setVisible(true);
+			if (hasTopMark()) {
+				dlg.cbM01TopMark.setEnabled(true);
+				dlg.cbM01TopMark.setVisible(true);
+			} else {
+				dlg.cbM01TopMark.setVisible(false);
+			}
+			dlg.cM01Fog.setVisible(true);
+			dlg.cM01Fired.setVisible(true);
+			dlg.cM01Fired.setEnabled(true);
+			if (!isSectored()) {
+				dlg.cbM01Colour.setVisible(false);
+				dlg.lM01Colour.setVisible(false);
+			}
+			dlg.rbM01Fired1.setVisible(false);
+			dlg.rbM01FiredN.setVisible(false);
+			dlg.lM01Height.setVisible(false);
+			dlg.tfM01Height.setVisible(false);
+			dlg.lM01Range.setVisible(false);
+			dlg.tfM01Range.setVisible(false);
+
+			if (isFired()) {
+				switch (getStyleIndex()) {
+				case SPEC_FLOAT:
+				case SPEC_BEACON:
+				case SPEC_TOWER:
+					dlg.lM01Height.setVisible(true);
+					dlg.tfM01Height.setVisible(true);
+					dlg.lM01Range.setVisible(true);
+					dlg.tfM01Range.setVisible(true);
+					break;
+				default:
+				}
+			}
+
+			String image = "/images/Special_Purpose"; //$NON-NLS-1$
+
+			switch (getStyleIndex()) {
+			case SPEC_PILLAR:
+				image += "_Pillar"; //$NON-NLS-1$
+				break;
+			case SPEC_CAN:
+				image += "_Can"; //$NON-NLS-1$
+				break;
+			case SPEC_CONE:
+				image += "_Cone"; //$NON-NLS-1$
+				break;
+			case SPEC_SPAR:
+				image += "_Spar"; //$NON-NLS-1$
+				break;
+			case SPEC_SPHERE:
+				image += "_Sphere"; //$NON-NLS-1$
+				break;
+			case SPEC_BARREL:
+				image += "_Barrel"; //$NON-NLS-1$
+				break;
+			case SPEC_FLOAT:
+				image += "_Float"; //$NON-NLS-1$
+				break;
+			case SPEC_BEACON:
+				image += "_Beacon"; //$NON-NLS-1$
+				break;
+			case SPEC_TOWER:
+				image += "_Tower"; //$NON-NLS-1$
+				break;
+			default:
+			}
+
+			if (!image.equals("/images/Special_Purpose")) { //$NON-NLS-1$
+				image += ".png"; //$NON-NLS-1$
+				dlg.lM01Icon.setIcon(new ImageIcon(getClass().getResource(image)));
+				if (hasTopMark()) {
+					image = "";
+					switch (getStyleIndex()) {
+					case SPEC_PILLAR:
+					case SPEC_SPAR:
+						switch (getTopMarkIndex()) {
+						case TOP_YELLOW_X:
+							image = "/images/Top_X_Yellow_Buoy.png"; //$NON-NLS-1$
+							break;
+						case TOP_RED_X:
+							image = "/images/Top_X_Red_Buoy.png"; //$NON-NLS-1$
+							break;
+						case TOP_YELLOW_CAN:
+							image = "/images/Top_Can_Yellow_Buoy.png"; //$NON-NLS-1$
+							break;
+						case TOP_YELLOW_CONE:
+							image = "/images/Top_Cone_Yellow_Buoy.png"; //$NON-NLS-1$
+							break;
+						}
+						break;
+					case SPEC_CAN:
+					case SPEC_CONE:
+					case SPEC_SPHERE:
+					case SPEC_BARREL:
+						switch (getTopMarkIndex()) {
+						case TOP_YELLOW_X:
+							image = "/images/Top_X_Yellow_Buoy_Small.png"; //$NON-NLS-1$
+							break;
+						case TOP_RED_X:
+							image = "/images/Top_X_Red_Buoy_Small.png"; //$NON-NLS-1$
+							break;
+						case TOP_YELLOW_CAN:
+							image = "/images/Top_Can_Yellow_Buoy_Small.png"; //$NON-NLS-1$
+							break;
+						case TOP_YELLOW_CONE:
+							image = "/images/Top_Cone_Yellow_Buoy_Small.png"; //$NON-NLS-1$
+							break;
+						}
+						break;
+					case SPEC_BEACON:
+					case SPEC_TOWER:
+						switch (getTopMarkIndex()) {
+						case TOP_YELLOW_X:
+							image = "/images/Top_X_Yellow_Beacon.png"; //$NON-NLS-1$
+							break;
+						case TOP_RED_X:
+							image = "/images/Top_X_Red_Beacon.png"; //$NON-NLS-1$
+							break;
+						case TOP_YELLOW_CAN:
+							image = "/images/Top_Can_Yellow_Beacon.png"; //$NON-NLS-1$
+							break;
+						case TOP_YELLOW_CONE:
+							image = "/images/Top_Cone_Yellow_Beacon.png"; //$NON-NLS-1$
+							break;
+						}
+						break;
+					case SPEC_FLOAT:
+						switch (getTopMarkIndex()) {
+						case TOP_YELLOW_X:
+							image = "/images/Top_X_Yellow_Float.png"; //$NON-NLS-1$
+							break;
+						case TOP_RED_X:
+							image = "/images/Top_X_Red_Float.png"; //$NON-NLS-1$
+							break;
+						case TOP_YELLOW_CAN:
+							image = "/images/Top_Can_Yellow_Float.png"; //$NON-NLS-1$
+							break;
+						case TOP_YELLOW_CONE:
+							image = "/images/Top_Cone_Yellow_Float.png"; //$NON-NLS-1$
+							break;
+						}
+						break;
+					}
+					if (!image.isEmpty())
+						dlg.lM06Icon.setIcon(new ImageIcon(getClass().getResource(image)));
+				}
+			} else
+				dlg.lM01Icon.setIcon(null);
+		}
+	}
+
+	public void saveSign() {
+		Node node = getNode();
+
+		if (node == null) {
+			return;
+		}
+
+		switch (getStyleIndex()) {
+		case SPEC_PILLAR:
+			super.saveSign("buoy_special_purpose"); //$NON-NLS-1$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_special_purpose:shape", "pillar")); //$NON-NLS-1$ //$NON-NLS-2$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_special_purpose:colour", "yellow")); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case SPEC_SPAR:
+			super.saveSign("buoy_special_purpose"); //$NON-NLS-1$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_special_purpose:shape", "spar")); //$NON-NLS-1$ //$NON-NLS-2$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_special_purpose:colour", "yellow")); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case SPEC_CAN:
+			super.saveSign("buoy_special_purpose"); //$NON-NLS-1$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_special_purpose:shape", "can")); //$NON-NLS-1$ //$NON-NLS-2$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_special_purpose:colour", "yellow")); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case SPEC_CONE:
+			super.saveSign("buoy_special_purpose"); //$NON-NLS-1$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_special_purpose:shape", "conical")); //$NON-NLS-1$ //$NON-NLS-2$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_special_purpose:colour", "yellow")); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case SPEC_SPHERE:
+			super.saveSign("buoy_special_purpose"); //$NON-NLS-1$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_special_purpose:shape", "sphere")); //$NON-NLS-1$ //$NON-NLS-2$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_special_purpose:colour", "yellow")); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case SPEC_BARREL:
+			super.saveSign("buoy_special_purpose"); //$NON-NLS-1$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_special_purpose:shape", "barrel")); //$NON-NLS-1$ //$NON-NLS-2$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:buoy_special_purpose:colour", "yellow")); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case SPEC_FLOAT:
+			super.saveSign("light_float"); //$NON-NLS-1$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:light_float:colour", "yellow")); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case SPEC_BEACON:
+			super.saveSign("beacon_special_purpose"); //$NON-NLS-1$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:beacon_special_purpose:colour", "yellow")); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case SPEC_TOWER:
+			super.saveSign("beacon_special_purpose"); //$NON-NLS-1$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:beacon_special_purpose:shape", "tower")); //$NON-NLS-1$ //$NON-NLS-2$
+			Main.main.undoRedo.add(new ChangePropertyCommand(node,
+					"seamark:beacon_special_purpose:colour", "yellow")); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		default:
+		}
+		switch (getTopMarkIndex()) {
+		case TOP_YELLOW_X:
+			saveTopMarkData("x-shape", "yellow"); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case TOP_RED_X:
+			saveTopMarkData("x-shape", "red"); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case TOP_YELLOW_CAN:
+			saveTopMarkData("cylinder", "yellow"); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		case TOP_YELLOW_CONE:
+			saveTopMarkData("cone, point up", "yellow"); //$NON-NLS-1$ //$NON-NLS-2$
+			break;
+		}
+		saveLightData(); //$NON-NLS-1$
+		saveRadarFogData();
+	}
+}
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/buoys/BuoyUkn.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/buoys/BuoyUkn.java	(revision 23382)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/buoys/BuoyUkn.java	(revision 23382)
@@ -0,0 +1,30 @@
+package oseam.seamarks.buoys;
+
+import oseam.dialogs.OSeaMAction;
+
+public class BuoyUkn extends Buoy {
+	public BuoyUkn(OSeaMAction dia, String Msg) {
+		super(dia);
+		resetMask();
+		dlg.cbM01TypeOfMark.setSelectedIndex(0);
+		setErrMsg(Msg);
+	}
+
+	public void paintSign() {
+		if (dlg.paintlock)
+			return;
+		super.paintSign();
+
+		if (getErrMsg() != null)
+			dlg.sM01StatusBar.setText(getErrMsg());
+
+		setErrMsg(null);
+	}
+
+	public void setLightColour() {
+		super.setLightColour("");
+	}
+
+	public void saveSign() {
+	}
+}
Index: applications/editors/josm/plugins/smed/src/smed/Smed.java
===================================================================
--- applications/editors/josm/plugins/smed/src/smed/Smed.java	(revision 23380)
+++ applications/editors/josm/plugins/smed/src/smed/Smed.java	(revision 23382)
@@ -22,4 +22,5 @@
 import org.openstreetmap.josm.plugins.PluginInformation;
 
+import smed.io.SmedFile;
 import smed.plug.SmedPluginApp;
 import smed.plug.ifc.SmedPluggable;
@@ -47,4 +48,5 @@
 
         File[] jars = splugDir.listFiles(new JARFileFilter());
+        SmedFile.init();
 
         // build smed_ifc.jar from smed.jar
@@ -80,4 +82,6 @@
                         inp.close();
                         pfos.close();
+                        
+                        SmedFile.createMF(eName);
                     }
                 }
@@ -130,5 +134,5 @@
             ex.printStackTrace();
         }
-
+        
         SmedTab = new SmedTabAction();
         item = Main.main.menu.toolsMenu.add(SmedTab);
Index: applications/editors/josm/plugins/smed/src/smed/SmedFile.java
===================================================================
--- applications/editors/josm/plugins/smed/src/smed/SmedFile.java	(revision 23380)
+++ 	(revision )
@@ -1,35 +1,0 @@
-package smed;
-
-import java.io.File;
-
-public class SmedFile extends File{
-
-    /**
-     * 
-     */
-    private static final long serialVersionUID = 1L;
-
-    public SmedFile(String pathname) {
-        super(pathname);
-    }
-
-    public boolean needUpdate(File[] jars, String name) {
-        
-        for(File j : jars) {
-            String jName = j.getName();
-            
-            if(jName.length() > 15) { // < 16 isn'nt a SmedFile
-
-                if (jName.substring(16).equals(name.substring(16))) {
-                    if(jName.substring(0, 15).compareTo(name.substring(0, 15)) < 0) { // obsolet
-                        j.delete();
-                        return true;            
-                    } else return false;    // no update needed
-                }
-            }
-        }
-
-        // nothing found -> extract
-        return true;
-    }
-}
Index: applications/editors/josm/plugins/smed/src/smed/io/SmedFile.java
===================================================================
--- applications/editors/josm/plugins/smed/src/smed/io/SmedFile.java	(revision 23382)
+++ applications/editors/josm/plugins/smed/src/smed/io/SmedFile.java	(revision 23382)
@@ -0,0 +1,247 @@
+package smed.io;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+import java.util.jar.Attributes;
+import java.util.jar.JarFile;
+import java.util.jar.JarOutputStream;
+import java.util.jar.Manifest;
+import java.util.zip.ZipEntry;
+
+import smed.plug.ifc.SmedPluggable;
+import smed.plug.util.JARFileFilter;
+
+public class SmedFile extends File{
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 1L;
+    private static File plugDir = null;
+    private static String pathname = null;
+    private static File[] plugJars = null; 
+
+    public SmedFile(String pathname) {
+        super(pathname);
+        this.pathname = pathname;
+        plugDir = new File(pathname);
+        plugJars = plugDir.listFiles(new JARFileFilter());
+    }
+
+    /**
+     * show if plugin need update
+     * 
+     * @param jars
+     * @param name
+     * @return boolean true/false
+     */
+    public boolean needUpdate(File[] jars, String name) {
+        for(File j : jars) {
+            String jName = j.getName();
+            
+            if(jName.length() > 15) { // < 16 isn'nt a SmedFile
+
+                if (jName.substring(16).equals(name.substring(16))) {
+                    if(jName.substring(0, 15).compareTo(name.substring(0, 15)) < 0) { // obsolet
+                        j.delete();
+                        return true;            
+                    } else return false;    // no update needed
+                }
+            }
+        }
+
+        // nothing found -> extract
+        return true;
+    }
+
+    
+    
+    /**
+     * show if plugin is visible
+     * 
+     * @param name
+     * @return boolean true/false
+     */
+	public boolean isVisible(String name) { return getAttributeState("visible", name); }
+	
+	/**
+	 * show if plugin is deleted
+	 * 
+	 * @param name
+	 * @return boolean true/false
+	 */
+	public boolean isDeleted(String name) { return getAttributeState("deleted", name); }
+	
+	public boolean getAttributeState(String attribute, String name) {		
+		File f = getFile(plugJars, name, true);
+		
+		if(f == null) return false;
+		else {
+			String str;
+			JarFile test;
+			try {
+				test = new JarFile(pathname + "/.ini/MF" + f.getName().substring(16));
+				Manifest mf = test.getManifest();
+				str = mf.getMainAttributes().getValue(attribute);
+				
+				if(str == null || !str.equals("yes")) return false;
+
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+			
+			return true;
+		}
+
+	}
+
+	/**
+	 * search file in files
+	 *  
+	 * @param
+	 * @return if found -> File, if not found -> null
+	 */
+	private static File getFile(File[] files, String name, Boolean isSmed) {
+		for(int i = 0; i < files.length; i++) {
+			String fileName = files[i].getName();
+			
+			if(isSmed) {
+				if(fileName.length() > 15) { // < 16 isn'nt a SmedFile
+					if (fileName.substring(16).equals("_" + name)) return files[i];
+				}
+			} else if(fileName.equals(name)) return files[i];
+		}
+		return null;
+	}
+
+	/**
+	 * set the state "visible" of the plugin (name)
+	 * 
+	 * @param name
+	 * @param isVisible
+	 */
+	public void setVisible(String name, boolean isVisible) { setAttr("visible", name, isVisible); }
+	
+	/**
+	 * set the state "deleted" of the plugin (name)
+	 * 
+	 * @param name
+	 * @param isDeleted 
+	 */
+	public void setDeleted(String name, boolean isDeleted) { setAttr("deleted", name, isDeleted); }
+
+
+	private void setAttr(String attribute, String name, boolean b) {		
+		File f = getFile(plugJars,name,true);
+		if(f == null) return;
+		else {
+			try {
+				JarFile file = new JarFile(pathname + "/.ini/MF" + f.getName().substring(16));
+				
+				Manifest mf = file.getManifest();
+				Attributes attr = mf.getMainAttributes();
+				if(b) attr.putValue(attribute,"yes");
+				else attr.putValue(attribute,"no");
+				
+				FileOutputStream fos = new FileOutputStream(pathname + "/.ini/MF" + f.getName().substring(16));
+				JarOutputStream jos = new JarOutputStream(fos,mf);
+				jos.close();
+				fos.flush();
+				fos.close();
+
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+		}
+	}
+
+	/**
+	 * copies the manifests from the plugin.jar to
+	 * .ini/mf_plugin.jar. Necessary, because you
+	 * can't modified the original jars under windows,
+	 * (because under windows, they are used)
+	 */
+	private static void copyMFs(File[] plugInis) {
+		for(int i = 0; i < plugJars.length; i++) {
+			String source = plugJars[i].getName();
+			String dest;
+			
+			if(source.length() > 15) { // < 16 isn'nt a SmedFile
+				dest = "MF" + source.substring(16);
+
+				if(getFile(plugInis, dest, false) == null) {
+					try {
+						JarFile file = new JarFile(pathname + "/" + source);
+						Manifest mf = file.getManifest();
+						Attributes attr = mf.getMainAttributes();
+						attr.putValue("visible","yes");
+						attr.putValue("deleted","no");
+
+						FileOutputStream fos = new FileOutputStream(pathname + "/.ini/" + dest);
+						JarOutputStream jos = new JarOutputStream(fos,mf);
+						
+						jos.close();
+						fos.flush();
+						fos.close();
+					} catch (IOException e) {
+						e.printStackTrace();
+					}	
+				}
+			
+			}
+		}
+		
+	}
+
+	public static void init() {
+		File splugDirIni = new File(pathname + "/.ini");
+		
+		if(!splugDirIni.exists()) splugDirIni.mkdir();
+		File[] plugInis = splugDirIni.listFiles(new JARFileFilter());
+		
+		copyMFs(plugInis);
+		
+		SmedFile smedDir = new SmedFile(pathname);
+		
+		for(int i = 0; i < plugJars.length; i++) {
+			File file = plugJars[i];
+			
+			if(file.getName().length() > 16) { // < 16 isn'nt a SmedFile
+				String name = file.getName().substring(17);
+				
+				if(smedDir.isDeleted(name)) {
+					File fileMF = new File(pathname + "/.ini/MF_" + name);
+					
+					fileMF.delete();
+					file.delete();
+				}
+			}
+		}
+	}
+
+	public static void createMF(String name) {
+		String dest;
+		if(name.length() > 17) { // < 17 isn'nt a SmedFile
+			dest = "MF_" + name.substring(17);
+			try {
+				JarFile file = new JarFile(pathname + "/" + name);
+				Manifest mf = file.getManifest();
+				Attributes attr = mf.getMainAttributes();
+				attr.putValue("visible","yes");
+				attr.putValue("deleted","no");
+				
+				FileOutputStream fos = new FileOutputStream(pathname + "/.ini/" + dest);
+				JarOutputStream jos = new JarOutputStream(fos,mf);
+				
+				jos.close();
+				fos.flush();
+				fos.close();
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+		}
+	}
+
+}
Index: applications/editors/josm/plugins/smed/src/smed/menu/SmedMenuBar.java
===================================================================
--- applications/editors/josm/plugins/smed/src/smed/menu/SmedMenuBar.java	(revision 23380)
+++ applications/editors/josm/plugins/smed/src/smed/menu/SmedMenuBar.java	(revision 23382)
@@ -38,14 +38,6 @@
 
         menuItem.addActionListener(new java.awt.event.ActionListener() {
-        	
-			public void actionPerformed(java.awt.event.ActionEvent e) {
-				DefaultListModel myModel = new DefaultListModel();
-				plugins = SmedTabbedPane.getPlugins();
-
-				for(SmedPluggable p : plugins) myModel.addElement (p.getName());
-				
-				new TabManager(myModel);
-			}
-		});
+			public void actionPerformed(java.awt.event.ActionEvent e) { new TabManager(); } 
+			});
 
 
Index: applications/editors/josm/plugins/smed/src/smed/menu/file/TabManager.java
===================================================================
--- applications/editors/josm/plugins/smed/src/smed/menu/file/TabManager.java	(revision 23380)
+++ applications/editors/josm/plugins/smed/src/smed/menu/file/TabManager.java	(revision 23382)
@@ -3,6 +3,9 @@
 
 import javax.swing.DefaultListModel;
+import javax.swing.Icon;
+import javax.swing.JComponent;
 import javax.swing.JDialog;
 import javax.swing.JScrollPane;
+import javax.swing.JTabbedPane;
 
 import javax.swing.JPanel;
@@ -13,4 +16,6 @@
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.io.IOException;
 import java.util.List;
 
@@ -18,4 +23,7 @@
 import javax.swing.JTextField;
 
+import org.openstreetmap.josm.Main;
+
+import smed.io.SmedFile;
 import smed.jide.swing.CheckBoxList;
 import smed.jide.swing.CheckBoxListSelectionModel;
@@ -33,4 +41,5 @@
 	private CheckBoxListSelectionModel selModel;
 	private List<SmedPluggable> plugins = null;
+	private SmedFile splugDir = null;
 	private int modelSize = 0;
 
@@ -52,11 +61,21 @@
 	private JTextField tabTextFieldRename = null;
 
-	public TabManager(DefaultListModel model) {
-		this.model = model;
+	public TabManager() {
+		model = new DefaultListModel(); //model;
 		plugins = SmedTabbedPane.getPlugins();
+		String pluginDirName = Main.pref.getPluginsDirectory().getAbsolutePath();
+		splugDir = new SmedFile(pluginDirName + "/splug");
+		
+		for(SmedPluggable p : plugins){
+			if(splugDir.isVisible(p.getFileName()) && !splugDir.isDeleted(p.getFileName())) model.addElement (p.getName());
+			else if(splugDir.isDeleted(p.getFileName())) model.addElement("delete - " + p.getName());
+			else model.addElement("invisible - " + p.getName());
+		}
+		
 		modelSize = model.getSize();
 		getTabManagerDialog().setVisible(true);
 	}
 
+	
 	/**
 	 * This method initializes tabManagerDialog	
@@ -200,5 +219,5 @@
 			tabButtonLoad = new JButton();
 			tabButtonLoad.setBounds(new Rectangle(186, 328, 104, 30));
-			tabButtonLoad.setFont(new Font("Dialog", Font.BOLD, 12));
+			tabButtonLoad.setFont(new Font("Dialog", Font.PLAIN, 12));
 			tabButtonLoad.setText("Load");
 			tabButtonLoad.addActionListener(this);
@@ -217,5 +236,5 @@
 			tabButtonSave = new JButton();
 			tabButtonSave.setBounds(new Rectangle(293, 328, 104, 30));
-			tabButtonSave.setFont(new Font("Dialog", Font.BOLD, 12));
+			tabButtonSave.setFont(new Font("Dialog", Font.PLAIN, 12));
 			tabButtonSave.setText("Save");
 			tabButtonSave.addActionListener(this);
@@ -234,4 +253,5 @@
 			tabButtonDelete = new JButton();
 			tabButtonDelete.setBounds(new Rectangle(186, 362, 104, 30));
+			tabButtonDelete.setFont(new Font("Dialog", Font.PLAIN, 12));
 			tabButtonDelete.setText("Delete");
 			tabButtonDelete.addActionListener(this);
@@ -250,4 +270,5 @@
 			tabButtonVisible = new JButton();
 			tabButtonVisible.setBounds(new Rectangle(293, 362, 104, 30));
+			tabButtonVisible.setFont(new Font("Dialog", Font.PLAIN, 12));
 			tabButtonVisible.setText("invisible");
 			tabButtonVisible.addActionListener(this);
@@ -309,4 +330,34 @@
 		
 		if(cmd.equals("ok")) {
+			int i = 0;
+			JTabbedPane tabbedPane = SmedTabbedPane.getTabbedPane();
+			Icon icon = null;
+			
+			for(SmedPluggable p : plugins) {
+				String str = model.get(i).toString();
+
+				if(str.length() > 9 && str.substring(0,9).equals("invisible")) { 
+					splugDir.setVisible(p.getFileName(),false);
+				} else splugDir.setVisible(p.getFileName(),true);
+				
+				if(str.length() > 6 && str.substring(0,6).equals("delete")) {
+					splugDir.setDeleted(p.getFileName(),true);
+				} else splugDir.setDeleted(p.getFileName(),false);
+				
+				i++;
+			}
+			
+			tabbedPane.removeAll();
+ 
+			JComponent panel = null;
+			
+			for(SmedPluggable p : plugins) {
+				if(splugDir.isVisible(p.getFileName()) && !splugDir.isDeleted(p.getFileName())) {
+        			panel = p.getComponent();
+        			
+        			tabbedPane.addTab(p.getName(),icon, panel, p.getInfo());
+        		}
+			}
+
 			System.out.println("Aufraeumarbeiten beginnen");
 			tabManagerDialog.setVisible(false);
@@ -331,23 +382,16 @@
 		}
 		
-		if(cmd.equals("invisible")) {
-			for(int i = 0; i < modelSize ; i++) {
-				if(selModel.isSelectedIndex(i)) model.set(i,"invisible");				
-			}
-		}
-		
-		if(cmd.equals("delete")) {
-			for(int i = 0; i < modelSize ; i++) {
-				if(selModel.isSelectedIndex(i)) model.set(i,"");				
-			}
-		}
-		
-		if(cmd.equals("undo")) {
-			int i = 0;
-			
-			for(SmedPluggable p : plugins) model.set(i++,p.getName());
-			selModel.removeSelectionInterval(0, modelSize - 1);
-		}
-
+		if(cmd.equals("invisible")) cmd("invisible - ");
+		if(cmd.equals("delete")) cmd ("delete - ");
+		if(cmd.equals("undo"))  cmd("");
+	}
+
+	private void cmd(String s) {
+		int i = 0;
+		
+		for(SmedPluggable p : plugins) { 
+			if(selModel.isSelectedIndex(i)) model.set(i,s + p.getName());
+			i++;
+		}
 	}
 
Index: applications/editors/josm/plugins/smed/src/smed/plug/ifc/SmedPluggable.java
===================================================================
--- applications/editors/josm/plugins/smed/src/smed/plug/ifc/SmedPluggable.java	(revision 23380)
+++ applications/editors/josm/plugins/smed/src/smed/plug/ifc/SmedPluggable.java	(revision 23382)
@@ -9,4 +9,5 @@
     boolean stop();
     String getName();
+    String getFileName();
     String getInfo();
     JComponent getComponent();
Index: applications/editors/josm/plugins/smed/src/smed/tabs/SmedTabAction.java
===================================================================
--- applications/editors/josm/plugins/smed/src/smed/tabs/SmedTabAction.java	(revision 23380)
+++ applications/editors/josm/plugins/smed/src/smed/tabs/SmedTabAction.java	(revision 23382)
@@ -50,7 +50,7 @@
         JFrame frame = new JFrame("TabbedPaneDemo");
         frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
+        frame.setResizable(false);
+        frame.setAlwaysOnTop(true);
 
-        smedMenu.plugins = smedTabs.plugins;
-        
         //Add content to the window.
         frame.setJMenuBar(smedMenu);
Index: applications/editors/josm/plugins/smed/src/smed/tabs/SmedTabbedPane.java
===================================================================
--- applications/editors/josm/plugins/smed/src/smed/tabs/SmedTabbedPane.java	(revision 23380)
+++ applications/editors/josm/plugins/smed/src/smed/tabs/SmedTabbedPane.java	(revision 23382)
@@ -1,4 +1,5 @@
 package smed.tabs;
 
+import java.awt.Dimension;
 import java.awt.GridLayout;
 import java.awt.event.KeyEvent;
@@ -14,4 +15,5 @@
 import org.openstreetmap.josm.Main;
 
+import smed.io.SmedFile;
 import smed.plug.ifc.SmedPluggable;
 import smed.plug.util.SmedPluginLoader;
@@ -25,4 +27,5 @@
 
 	static private List<SmedPluggable> plugins = null;
+	static private JTabbedPane tabbedPane = null;
 	
     public SmedTabbedPane() {
@@ -30,35 +33,42 @@
 
         String pluginDirName = Main.pref.getPluginsDirectory().getAbsolutePath();
+        
 		try {
             plugins = SmedPluginLoader.loadPlugins(new File(pluginDirName + "/splug"));
 
+            if(plugins != null) {
+            	Icon icon = null;
+            	tabbedPane = new JTabbedPane();
+            	
+            	JComponent panel;
+            	int i = 0;
+            	SmedFile splugDir = new SmedFile(pluginDirName + "/splug");
+            
+            	for(SmedPluggable p : plugins) {
+            		if(splugDir.isVisible(p.getFileName())) {
+            			panel = p.getComponent();
+            			
+            			tabbedPane.addTab(p.getName(),icon, panel, p.getInfo());
+            			tabbedPane.setMnemonicAt(i, KeyEvent.VK_1 + i);
+                    	
+            			i++;
+            		} else splugDir.setVisible(p.getFileName(),false);
+            	}
+            	
+            	//Add the tabbed pane to this panel.
+            	add(tabbedPane);
+
+            	tabbedPane.setPreferredSize(new Dimension(400, 400));
+            	
+            	//The following line enables to use scrolling tabs.
+            	tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
+        	}
         } catch (IOException e) {
             e.printStackTrace();
-        }
+        } 
 
-        if(plugins != null) {
-            Icon icon = null;
-            JTabbedPane tabbedPane = new JTabbedPane();
-
-            JComponent panel;
-            int i = 0;
-            for(SmedPluggable p : plugins) {
-                panel = p.getComponent();
-                tabbedPane.addTab(p.getName(),icon, panel, p.getInfo());
-                tabbedPane.setMnemonicAt(i, KeyEvent.VK_1 + i);
-
-                i++;
-            }
-
-            //Add the tabbed pane to this panel.
-            add(tabbedPane);
-
-            //The following line enables to use scrolling tabs.
-            tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
-        }
-    }
+    } 
     
-    public static List<SmedPluggable> getPlugins() {
-		return plugins;
-    }
+    public static List<SmedPluggable> getPlugins() { return plugins; }
+    public static JTabbedPane getTabbedPane() { return tabbedPane; }
 }
Index: applications/editors/josm/plugins/smed_about/build.xml
===================================================================
--- applications/editors/josm/plugins/smed_about/build.xml	(revision 23380)
+++ applications/editors/josm/plugins/smed_about/build.xml	(revision 23382)
@@ -134,5 +134,5 @@
     -->
 			<manifest>
-				<attribute name="Author" value="Werner, Malcolm"/>
+				<attribute name="Author" value="Werner"/>
 				<attribute name="Plugin-Class" value="smed.Smed"/>
 				<attribute name="Plugin-Date" value="${version.entry.commit.date}"/>
@@ -188,5 +188,5 @@
     -->
 			<manifest>
-				<attribute name="Author" value="Werner, Malcolm"/>
+				<attribute name="Author" value="Werner"/>
 				<attribute name="Plugin-Class" value="smed_ex.impl.SmedExImpl"/>
 				<attribute name="Plugin-Date" value="${version.entry.commit.date}"/>
Index: applications/editors/josm/plugins/smed_about/src/smed_about/SmedAbout.java
===================================================================
--- applications/editors/josm/plugins/smed_about/src/smed_about/SmedAbout.java	(revision 23380)
+++ applications/editors/josm/plugins/smed_about/src/smed_about/SmedAbout.java	(revision 23382)
@@ -12,4 +12,6 @@
 public class SmedAbout implements SmedPluggable{
 
+	private boolean visible = true;
+	
     private JPanel jPanel = null;  //  @jve:decl-index=0:visual-constraint="43,24"
     private JLabel jLabel = null;
@@ -78,3 +80,5 @@
     }
 
+	@Override
+	public String getFileName() { return "smed_about.jar"; }
 }
Index: applications/editors/josm/plugins/smed_ex/build.xml
===================================================================
--- applications/editors/josm/plugins/smed_ex/build.xml	(revision 23380)
+++ applications/editors/josm/plugins/smed_ex/build.xml	(revision 23382)
@@ -135,5 +135,5 @@
     -->
 			<manifest>
-				<attribute name="Author" value="Werner, Malcolm"/>
+				<attribute name="Author" value="Werner"/>
 				<attribute name="Plugin-Class" value="smed.Smed"/>
 				<attribute name="Plugin-Date" value="${version.entry.commit.date}"/>
@@ -188,5 +188,5 @@
     -->
 			<manifest>
-				<attribute name="Author" value="Werner, Malcolm"/>
+				<attribute name="Author" value="Werner"/>
 				<attribute name="Plugin-Class" value="smed_ex.impl.SmedExImpl"/>
 				<attribute name="Plugin-Date" value="${version.entry.commit.date}"/>
Index: applications/editors/josm/plugins/smed_ex/src/smed_ex/SmedEx.java
===================================================================
--- applications/editors/josm/plugins/smed_ex/src/smed_ex/SmedEx.java	(revision 23380)
+++ applications/editors/josm/plugins/smed_ex/src/smed_ex/SmedEx.java	(revision 23382)
@@ -16,4 +16,6 @@
 public class SmedEx implements SmedPluggable {
 
+	private boolean visible = true;
+	
     private JPanel jPanel = null;  //  @jve:decl-index=0:visual-constraint="78,30"
     private JButton jButton = null;
@@ -93,3 +95,5 @@
     }
 
+	@Override
+	public String getFileName() { return "smed_ex.jar"; }
 }
