Index: /applications/editors/josm/plugins/toms/src/toms/dialogs/SmpDialogAction.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/dialogs/SmpDialogAction.java	(revision 22978)
+++ /applications/editors/josm/plugins/toms/src/toms/dialogs/SmpDialogAction.java	(revision 22979)
@@ -62,12 +62,12 @@
 	 * lokale Variable, private
 	 */
-	private SmpDialogAction dia = null; // Variable für den Handle von
+	private SmpDialogAction dia = null; // Variable fÃ¼r den Handle von
 																			// SmpDialogAction
-	private Buoy buoy = null; // Variable für Objekte des Typs "Tonne" //
+	private Buoy buoy = null; // Variable fÃ¼r Objekte des Typs "Tonne" //
 														// @jve:decl-index=0:
 	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 JMenuItem SmpItem = null; // Info Ã¼ber item in der Werkzeugleiste
 	private String smt = ""; // value vom key "seamark:type" // @jve:decl-index=0:
 	private String smb = ""; // value vom key "seamark" // @jve:decl-index=0:
@@ -77,5 +77,5 @@
 	private String UserHome = ""; // @jve:decl-index=0:
 
-	// SelectionChangedListner der in die Eventqueue von josm eingehängt wird
+	// SelectionChangedListner der in die Eventqueue von josm eingehÃ¤ngt wird
 	private SelectionChangedListener SmpListener = new SelectionChangedListener() {
 		public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
@@ -116,30 +116,33 @@
 	public JLabel lM01Icon02 = null;
 	public JLabel lM01FireMark = null;
+	private JLabel lM01TypeOfMark = null;
+	public JComboBox cbM01TypeOfMark = null;
+	private JLabel lM01CatOfMark = null;
+	public JComboBox cbM01CatOfMark = null;
+	private JLabel lM01StyleOfMark = null;
+	public JComboBox cbM01StyleOfMark = null;
 	private JLabel lM01Name = null;
 	public JTextField tfM01Name = null;
-	private JLabel lM01StyleOfMark = null;
-	private JLabel lM01CatOfMark = null;
-	private JLabel lM01TypeOfMark = null;
 	private JLabel lM01Props02 = null;
-	public JComboBox cbM01TypeOfMark = null;
-	public JComboBox cbM01CatOfMark = null;
-	public JComboBox cbM01StyleOfMark = null;
 	public JCheckBox cM01TopMark = null;
 	public JComboBox cbM01TopMark = null;
-	private JCheckBox cM01Radar = null;
-	private JCheckBox cM01Racon = null;
-	private JComboBox cbM01Racon = null;
-	private JTextField tfM01Racon = null;
+	public JCheckBox cM01Radar = null;
+	public JCheckBox cM01Racon = null;
+	public JComboBox cbM01Racon = null;
+	public JTextField tfM01Racon = null;
 	private JLabel lM01Racon = null;
-	private JCheckBox cM01Fog = null;
-	private JComboBox cbM01Fog = null;
+	public JCheckBox cM01Fog = null;
+	public JComboBox cbM01Fog = null;
 	private JLabel lM01FogGroup = null;
-	private JTextField tfM01FogGroup = null;
+	public JTextField tfM01FogGroup = null;
 	private JLabel lM01FogPeriod = null;
-	private JTextField tfM01FogPeriod = null;
+	public JTextField tfM01FogPeriod = null;
 	public JCheckBox cM01Fired = null;
 	public ButtonGroup bgM01Fired = null;
 	public JRadioButton rbM01Fired1 = null;
 	public JRadioButton rbM01FiredN = null;
+	private JLabel lM01Kennung = null;
+	public JComboBox cbM01Kennung = null;
+	private JLabel lM01Sector = null;
 	public JComboBox cbM01Sector = null;
 	private JLabel lM01Group = null;
@@ -147,13 +150,15 @@
 	private JLabel lM01RepeatTime = null;
 	public JTextField tfM01RepeatTime = null;
-	private JLabel lM01Kennung = null;
-	public JComboBox cbM01Kennung = null;
 	private JLabel lM01Height = null;
+	private JLabel lM01Bearing = null;
+	public JTextField tfM01Bearing = null;
+	public JTextField tfM02Bearing = null;
+	public JTextField tfM01Radius = null;
 	public JTextField tfM01Height = null;
 	private JLabel lM01Range = null;
 	public JTextField tfM01Range = null;
 	public JButton bM01Save = null;
-	private JButton bM01Close = null;
-	private JCheckBox cM01IconVisible = null;
+	public JButton bM01Close = null;
+	public JCheckBox cM01IconVisible = null;
 	public JTextField sM01StatusBar = null;
 
@@ -253,9 +258,9 @@
 		SmpItem.setEnabled(false);
 
-		// Ausprobe: Möglichkeit der Benachrichtigung, wenn etwas neu
+		// 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
+		// EinhÃ¤ngen des Listeners in die Eventqueue von josm
 		DataSet.selListeners.add(SmpListener);
 		// DataSet.addSelectionListener(SmpListener);
@@ -348,5 +353,4 @@
 
 		cbM01TypeOfMark.setEnabled(true);
-		cbM01StyleOfMark.setEnabled(true);
 
 		// Soweit das Vorspiel. Ab hier beginnt das Parsen
@@ -481,4 +485,5 @@
 					SmpItem.setEnabled(true);
 				}
+
 				public void windowActivated(WindowEvent arg0) {
 					parseSeaMark();
@@ -494,15 +499,15 @@
 
 			lM01Icon01 = new JLabel();
-			lM01Icon01.setBounds(new Rectangle(200, 20, 160, 200));
+			lM01Icon01.setBounds(new Rectangle(210, 30, 160, 200));
 			lM01Icon01.setIcon(null);
 			lM01Icon01.setText("");
 
 			lM01Icon02 = new JLabel();
-			lM01Icon02.setBounds(new Rectangle(200, 20, 160, 200));
+			lM01Icon02.setBounds(new Rectangle(210, 30, 160, 200));
 			lM01Icon02.setIcon(null);
 			lM01Icon02.setText("");
 
 			lM01FireMark = new JLabel();
-			lM01FireMark.setBounds(new Rectangle(310, 70, 80, 20));
+			lM01FireMark.setBounds(new Rectangle(305, 90, 90, 20));
 			lM01FireMark.setFont(new Font("Dialog", Font.PLAIN, 12));
 			lM01FireMark.setText("");
@@ -563,7 +568,12 @@
 
 			lM01Kennung = new JLabel();
-			lM01Kennung.setBounds(new Rectangle(35, 270, 60, 20));
+			lM01Kennung.setBounds(new Rectangle(240, 245, 60, 20));
 			lM01Kennung.setFont(new Font("Dialog", Font.PLAIN, 12));
 			lM01Kennung.setText("Character:");
+
+			lM01Sector = new JLabel();
+			lM01Sector.setBounds(new Rectangle(80, 270, 180, 20));
+			lM01Sector.setFont(new Font("Dialog", Font.PLAIN, 12));
+			lM01Sector.setText("Sector:");
 
 			lM01Group = new JLabel();
@@ -576,4 +586,9 @@
 			lM01RepeatTime.setFont(new Font("Dialog", Font.PLAIN, 12));
 			lM01RepeatTime.setText("Period:          s");
+
+			lM01Bearing = new JLabel();
+			lM01Bearing.setBounds(new Rectangle(35, 295, 180, 20));
+			lM01Bearing.setFont(new Font("Dialog", Font.PLAIN, 12));
+			lM01Bearing.setText("         ¼-        ¼, r:");
 
 			lM01Height = new JLabel();
@@ -596,5 +611,5 @@
 			bgM01Region.add(rbM01RegionA);
 			bgM01Region.add(rbM01RegionB);
-			
+
 			ActionListener alM01Region = new ActionListener() {
 				public void actionPerformed(java.awt.event.ActionEvent e) {
@@ -610,14 +625,14 @@
 
 			rbM01Fired1 = new JRadioButton("Single", true);
-			rbM01Fired1.setBounds(new Rectangle(100, 240, 80, 30));
+			rbM01Fired1.setBounds(new Rectangle(80, 240, 65, 30));
 			rbM01FiredN = new JRadioButton("Sectored", false);
-			rbM01FiredN.setBounds(new Rectangle(190, 240, 100, 30));
+			rbM01FiredN.setBounds(new Rectangle(145, 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.paintSign();
+					buoy.paintSign();
 				}
 			};
@@ -659,11 +674,16 @@
 			pM01SeaMap.add(rbM01Fired1, null);
 			pM01SeaMap.add(rbM01FiredN, null);
-			pM01SeaMap.add(getCbM01Sector(), null);
 			pM01SeaMap.add(getTfM01RepeatTime(), null);
 			pM01SeaMap.add(lM01RepeatTime, null);
 			pM01SeaMap.add(getCbM01Kennung(), null);
 			pM01SeaMap.add(lM01Kennung, null);
+			pM01SeaMap.add(getCbM01Sector(), null);
 			pM01SeaMap.add(lM01Group, null);
 			pM01SeaMap.add(getTfM01Group(), null);
+			pM01SeaMap.add(lM01Sector, 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);
@@ -686,17 +706,11 @@
 
 			// Inhalt der ComboBox
-			cbM01TypeOfMark.addItem("Not set");
-			cbM01TypeOfMark.addItem("Port");
-			cbM01TypeOfMark.addItem("Starboard");
-			cbM01TypeOfMark.addItem("Preferred Port");
-			cbM01TypeOfMark.addItem("Preferred Starboard");
-			cbM01TypeOfMark.addItem("Safe Water");
-			cbM01TypeOfMark.addItem("Cardinal North");
-			cbM01TypeOfMark.addItem("Cardinal East");
-			cbM01TypeOfMark.addItem("Cardinal South");
-			cbM01TypeOfMark.addItem("Cardinal West");
+			cbM01TypeOfMark.addItem("* Select Seamark *");
+			cbM01TypeOfMark.addItem("Lateral Mark");
+			cbM01TypeOfMark.addItem("Cardinal Mark");
+			cbM01TypeOfMark.addItem("Safe Water Mark");
 			cbM01TypeOfMark.addItem("Isolated Danger");
 			cbM01TypeOfMark.addItem("Special Purpose");
-			// cbM01TypeOfMark.addItem("Light");
+			cbM01TypeOfMark.addItem("Light");
 
 			cbM01TypeOfMark.setBounds(new Rectangle(50, 25, 150, 25));
@@ -707,5 +721,4 @@
 			cbM01TypeOfMark.addActionListener(new ActionListener() {
 				public void actionPerformed(java.awt.event.ActionEvent e) {
-					Node n;
 					int type = cbM01TypeOfMark.getSelectedIndex();
 
@@ -714,13 +727,12 @@
 						return;
 					}
-					if ((type == 0) || (type == buoy.getBuoyIndex()))
-						return;
-
-					n = buoy.getNode();
+
+					Node n = buoy.getNode();
 					if (n == null)
 						return;
+
 					switch (type) {
 
-					case SeaMark.UNKNOWN_CAT:
+					case SeaMark.UNKNOWN_TYPE:
 						if (!(buoy instanceof BuoyUkn))
 							buoy = new BuoyUkn(dia, "Seamark not set");
@@ -728,10 +740,28 @@
 						break;
 
-					case SeaMark.PORT_HAND:
-					case SeaMark.STARBOARD_HAND:
-					case SeaMark.PREF_PORT_HAND:
-					case SeaMark.PREF_STARBOARD_HAND:
-						if (!(buoy instanceof BuoyLat))
-							buoy = new BuoyLat(dia, n);
+					case SeaMark.LATERAL:
+						if (!(buoy instanceof BuoyLat)) {
+							buoy.setBuoyIndex(0);
+							cbM01CatOfMark.removeAllItems();
+							cbM01CatOfMark.addItem("*Select Category*");
+							cbM01CatOfMark.addItem("Port");
+							cbM01CatOfMark.addItem("Starboard");
+							cbM01CatOfMark.addItem("Preferred Port");
+							cbM01CatOfMark.addItem("Preferred Starboard");
+							cbM01CatOfMark.setEnabled(true);
+						}
+						break;
+
+					case SeaMark.CARDINAL:
+						if (!(buoy instanceof BuoyCard)) {
+							buoy.setBuoyIndex(0);
+							cbM01CatOfMark.removeAllItems();
+							cbM01CatOfMark.addItem("*Select Category*");
+							cbM01CatOfMark.addItem("North");
+							cbM01CatOfMark.addItem("East");
+							cbM01CatOfMark.addItem("South");
+							cbM01CatOfMark.addItem("West");
+							cbM01CatOfMark.setEnabled(true);
+						}
 						break;
 
@@ -739,12 +769,5 @@
 						if (!(buoy instanceof BuoySaw))
 							buoy = new BuoySaw(dia, n);
-						break;
-
-					case SeaMark.CARD_NORTH:
-					case SeaMark.CARD_EAST:
-					case SeaMark.CARD_SOUTH:
-					case SeaMark.CARD_WEST:
-						if (!(buoy instanceof BuoyCard))
-							buoy = new BuoyCard(dia, n);
+						buoy.setBuoyIndex(type);
 						break;
 
@@ -752,4 +775,5 @@
 						if (!(buoy instanceof BuoyIsol))
 							buoy = new BuoyIsol(dia, n);
+						buoy.setBuoyIndex(type);
 						break;
 
@@ -757,19 +781,15 @@
 						if (!(buoy instanceof BuoySpec))
 							buoy = new BuoySpec(dia, n);
+						buoy.setBuoyIndex(type);
 						break;
-					default:
-						if (!(buoy instanceof BuoyUkn))
-							buoy = new BuoyUkn(dia, "Not Implemented");
 					}
 
-					buoy.setBuoyIndex(type);
 					buoy.refreshStyles();
 					buoy.refreshLights();
+					buoy.setLightColour();
 					buoy.paintSign();
 				}
 			});
-
-		}
-
+		}
 		return cbM01TypeOfMark;
 	}
@@ -778,10 +798,36 @@
 		if (cbM01CatOfMark == null) {
 			cbM01CatOfMark = new JComboBox();
-			cbM01CatOfMark.setBounds(new Rectangle(80, 55, 120, 25));
+			cbM01CatOfMark.setBounds(new Rectangle(75, 55, 125, 25));
 			cbM01CatOfMark.setFont(new Font("Dialog", Font.PLAIN, 12));
-			cbM01CatOfMark.setEnabled(true);
 			cbM01CatOfMark.addActionListener(new ActionListener() {
 				public void actionPerformed(ActionEvent e) {
 					int cat = cbM01CatOfMark.getSelectedIndex();
+
+					if (buoy == null) {
+						buoy = new BuoyUkn(dia, "Seamark not set");
+						return;
+					}
+					if (cat == 0)
+						return;
+
+					Node n = buoy.getNode();
+					if (n == null)
+						return;
+
+					if (cbM01TypeOfMark.getSelectedIndex() == SeaMark.LATERAL) {
+						if (!(buoy instanceof BuoyLat))
+							buoy = new BuoyLat(dia, n);
+						buoy.setBuoyIndex(cat);
+					}
+					if (cbM01TypeOfMark.getSelectedIndex() == SeaMark.CARDINAL) {
+						if (!(buoy instanceof BuoyCard))
+							buoy = new BuoyCard(dia, n);
+						buoy.setBuoyIndex(cat);
+					}
+
+					buoy.refreshStyles();
+					buoy.refreshLights();
+					buoy.setLightColour();
+					buoy.paintSign();
 				}
 			});
@@ -795,5 +841,4 @@
 			cbM01StyleOfMark.setBounds(new Rectangle(50, 85, 150, 25));
 			cbM01StyleOfMark.setFont(new Font("Dialog", Font.PLAIN, 12));
-			cbM01StyleOfMark.setEnabled(true);
 			cbM01StyleOfMark.addActionListener(new ActionListener() {
 				public void actionPerformed(ActionEvent e) {
@@ -847,5 +892,4 @@
 			cbM01TopMark.setBounds(new Rectangle(100, 170, 70, 20));
 			cbM01TopMark.setFont(new Font("Dialog", Font.PLAIN, 12));
-			cbM01TopMark.setEnabled(true);
 			cbM01TopMark.addActionListener(new ActionListener() {
 				public void actionPerformed(ActionEvent e) {
@@ -862,5 +906,4 @@
 			cM01Radar.setBounds(new Rectangle(10, 195, 120, 20));
 			cM01Radar.setFont(new Font("Dialog", Font.PLAIN, 12));
-			cM01Radar.setEnabled(false);
 			cM01Radar.setText("Radar Reflector");
 		}
@@ -873,5 +916,4 @@
 			cM01Racon.setBounds(new Rectangle(130, 195, 110, 20));
 			cM01Racon.setFont(new Font("Dialog", Font.PLAIN, 12));
-			cM01Racon.setEnabled(false);
 			cM01Racon.setText("Radar Beacon");
 		}
@@ -884,5 +926,4 @@
 			cbM01Racon.setBounds(new Rectangle(240, 195, 80, 20));
 			cbM01Racon.setFont(new Font("Dialog", Font.PLAIN, 12));
-			cbM01Racon.setEnabled(true);
 			cbM01Racon.addActionListener(new ActionListener() {
 				public void actionPerformed(ActionEvent e) {
@@ -912,5 +953,4 @@
 			cM01Fog.setBounds(new Rectangle(10, 220, 90, 20));
 			cM01Fog.setFont(new Font("Dialog", Font.PLAIN, 12));
-			cM01Fog.setEnabled(false);
 			cM01Fog.setText("Fog Signal");
 		}
@@ -923,5 +963,4 @@
 			cbM01Fog.setBounds(new Rectangle(100, 220, 70, 20));
 			cbM01Fog.setFont(new Font("Dialog", Font.PLAIN, 12));
-			cbM01Fog.setEnabled(true);
 			cbM01Fog.addActionListener(new ActionListener() {
 				public void actionPerformed(ActionEvent e) {
@@ -965,5 +1004,4 @@
 			cM01Fired.setFont(new Font("Dialog", Font.PLAIN, 12));
 			cM01Fired.setText("Lighted");
-			cM01Fired.setEnabled(false);
 			cM01Fired.addItemListener(new ItemListener() {
 				public void itemStateChanged(ItemEvent e) {
@@ -971,7 +1009,6 @@
 						return;
 					}
-
 					buoy.setFired(cM01Fired.isSelected());
-
+					buoy.setLightColour();
 					buoy.paintSign();
 				}
@@ -985,5 +1022,5 @@
 		if (cbM01Kennung == null) {
 			cbM01Kennung = new JComboBox();
-			cbM01Kennung.setBounds(new Rectangle(100, 270, 70, 20));
+			cbM01Kennung.setBounds(new Rectangle(305, 245, 70, 20));
 			cbM01Kennung.addActionListener(new ActionListener() {
 				public void actionPerformed(ActionEvent e) {
@@ -1001,8 +1038,13 @@
 					i1 = it.indexOf("(");
 					i2 = it.indexOf(")", i1);
+					tfM01Group.setText("");
+					tfM01Group.setEnabled(false);
 					if (i1 >= 0) {
 						c = it.substring(0, i1);
-						if (i1 >= 0)
+						if (i1 >= 0) {
 							g = it.substring(i1 + 1, i2);
+							if (g.equals(""))
+								tfM01Group.setEnabled(true);
+						}
 					}
 					if (it.contains("+")) {
@@ -1018,5 +1060,4 @@
 					buoy.setLightChar(c);
 					buoy.setLightGroup(g);
-					// buoy.setLightColour();
 					buoy.paintSign();
 				}
@@ -1029,7 +1070,16 @@
 		if (cbM01Sector == null) {
 			cbM01Sector = new JComboBox();
-			cbM01Sector.setBounds(new Rectangle(300, 245, 50, 20));
+			cbM01Sector.setBounds(new Rectangle(120, 270, 50, 20));
 			cbM01Sector.setFont(new Font("Dialog", Font.PLAIN, 12));
-			cbM01Sector.setEnabled(true);
+			cbM01Sector.addItem("0");
+			cbM01Sector.addItem("1");
+			cbM01Sector.addItem("2");
+			cbM01Sector.addItem("3");
+			cbM01Sector.addItem("4");
+			cbM01Sector.addItem("5");
+			cbM01Sector.addItem("6");
+			cbM01Sector.addItem("7");
+			cbM01Sector.addItem("8");
+			cbM01Sector.addItem("9");
 			cbM01Sector.addActionListener(new ActionListener() {
 				public void actionPerformed(ActionEvent e) {
@@ -1073,9 +1123,48 @@
 			tfM01Group.addFocusListener(new FocusAdapter() {
 				public void focusLost(FocusEvent e) {
-					buoy.setName(tfM01Group.getText());
+					buoy.setLightGroup(tfM01Group.getText());
 				}
 			});
 		}
 		return tfM01Group;
+	}
+
+	private JTextField getTfM01Bearing() {
+		if (tfM01Bearing == null) {
+			tfM01Bearing = new JTextField();
+			tfM01Bearing.setBounds(new Rectangle(40, 295, 30, 20));
+			tfM01Bearing.addFocusListener(new FocusAdapter() {
+				public void focusLost(FocusEvent e) {
+					buoy.setName(tfM01Bearing.getText());
+				}
+			});
+		}
+		return tfM01Bearing;
+	}
+
+	private JTextField getTfM02Bearing() {
+		if (tfM02Bearing == null) {
+			tfM02Bearing = new JTextField();
+			tfM02Bearing.setBounds(new Rectangle(85, 295, 30, 20));
+			tfM02Bearing.addFocusListener(new FocusAdapter() {
+				public void focusLost(FocusEvent e) {
+					buoy.setName(tfM02Bearing.getText());
+				}
+			});
+		}
+		return tfM02Bearing;
+	}
+
+	private JTextField getTfM01Radius() {
+		if (tfM01Radius == null) {
+			tfM01Radius = new JTextField();
+			tfM01Radius.setBounds(new Rectangle(140, 295, 30, 20));
+			tfM01Radius.addFocusListener(new FocusAdapter() {
+				public void focusLost(FocusEvent e) {
+					buoy.setName(tfM01Radius.getText());
+				}
+			});
+		}
+		return tfM01Radius;
 	}
 
@@ -1136,4 +1225,5 @@
 			bM01Save.setBounds(new Rectangle(120, 325, 80, 20));
 			bM01Save.setText("Save");
+			bM01Save.setEnabled(false);
 
 			bM01Save.addActionListener(new ActionListener() {
@@ -1204,5 +1294,5 @@
 		return cM01IconVisible;
 	}
-	
+
 	private JTextField getSM01StatusBar() {
 		if (sM01StatusBar == null) {
Index: /applications/editors/josm/plugins/toms/src/toms/seamarks/SeaMark.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/seamarks/SeaMark.java	(revision 22978)
+++ /applications/editors/josm/plugins/toms/src/toms/seamarks/SeaMark.java	(revision 22979)
@@ -39,4 +39,15 @@
 	 * 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;
@@ -44,12 +55,8 @@
 	public final static int PREF_PORT_HAND = 3;
 	public final static int PREF_STARBOARD_HAND = 4;
-	public final static int SAFE_WATER = 5;
-	public final static int CARD_NORTH = 6;
-	public final static int CARD_EAST = 7;
-	public final static int CARD_SOUTH = 8;
-	public final static int CARD_WEST = 9;
-	public final static int ISOLATED_DANGER = 10;
-	public final static int SPECIAL_PURPOSE = 11;
-	public final static int LIGHT = 12;
+	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;
 
 	/**
Index: /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java	(revision 22978)
+++ /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java	(revision 22979)
@@ -216,10 +216,4 @@
 	public void paintSign() {
 		
-		dlg.cbM01TypeOfMark.setEnabled(true);
-		dlg.cbM01StyleOfMark.setEnabled(true);
-
-		dlg.cbM01TypeOfMark.setSelectedIndex(getBuoyIndex());
-		dlg.cbM01StyleOfMark.setSelectedIndex(getStyleIndex());
-
 		dlg.cM01TopMark.setSelected(hasTopMark());
 		dlg.cM01Fired.setSelected(isFired());
@@ -264,6 +258,4 @@
 		}
 
-		dlg.bM01Save.setEnabled(true);
-
 		dlg.lM01Icon01.setIcon(null);
 		dlg.lM01Icon02.setIcon(null);
@@ -331,3 +323,63 @@
 	}
 
+	public void resetMask() {
+		setRegion(Main.pref.get("tomsplugin.IALA").equals("B"));
+
+		dlg.lM01Icon01.setIcon(null);
+		dlg.lM01Icon02.setIcon(null);
+
+		dlg.rbM01RegionA.setEnabled(false);
+		dlg.rbM01RegionB.setEnabled(false);
+		dlg.cbM01StyleOfMark.removeAllItems();
+		dlg.cbM01StyleOfMark.setEnabled(false);
+		dlg.tfM01Name.setText("");
+		dlg.tfM01Name.setEnabled(false);
+		setName("");
+		dlg.cM01TopMark.setSelected(false);
+		dlg.cM01TopMark.setEnabled(false);
+		dlg.cbM01TopMark.removeAllItems();
+		dlg.cbM01TopMark.setEnabled(false);
+		setTopMark(false);
+		dlg.cM01Radar.setSelected(false);
+		dlg.cM01Radar.setEnabled(false);
+		dlg.cM01Racon.setSelected(false);
+		dlg.cM01Racon.setEnabled(false);
+		dlg.cbM01Racon.removeAllItems();
+		dlg.cbM01Racon.setEnabled(false);
+		dlg.tfM01Racon.setText("");
+		dlg.tfM01Racon.setEnabled(false);
+		dlg.cM01Fog.setSelected(false);
+		dlg.cM01Fog.setEnabled(false);
+		dlg.cbM01Fog.removeAllItems();
+		dlg.cbM01Fog.setEnabled(false);
+		dlg.tfM01FogGroup.setText("");
+		dlg.tfM01FogGroup.setEnabled(false);
+		dlg.tfM01FogPeriod.setText("");
+		dlg.tfM01FogPeriod.setEnabled(false);
+		dlg.cM01Fired.setSelected(false);
+		dlg.cM01Fired.setEnabled(false);
+		setFired(false);
+		dlg.rbM01Fired1.setEnabled(false);
+		dlg.rbM01FiredN.setEnabled(false);
+		dlg.cbM01Kennung.removeAllItems();
+		dlg.cbM01Kennung.setEnabled(false);
+		dlg.cbM01Sector.setEnabled(false);
+		dlg.tfM01Group.setText("");
+		dlg.tfM01Group.setEnabled(false);
+		dlg.tfM01RepeatTime.setText("");
+		dlg.tfM01RepeatTime.setEnabled(false);
+		dlg.tfM01Bearing.setText("");
+		dlg.tfM01Bearing.setEnabled(false);
+		dlg.tfM02Bearing.setText("");
+		dlg.tfM02Bearing.setEnabled(false);
+		dlg.tfM01Radius.setText("");
+		dlg.tfM01Radius.setEnabled(false);
+		dlg.tfM01Height.setText("");
+		dlg.tfM01Height.setEnabled(false);
+		dlg.tfM01Range.setText("");
+		dlg.tfM01Range.setEnabled(false);
+
+		dlg.bM01Save.setEnabled(false);
+	}
+
 }
Index: /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyCard.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyCard.java	(revision 22978)
+++ /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyCard.java	(revision 22979)
@@ -24,4 +24,6 @@
 		keys = node.getKeys();
 		setNode(node);
+		
+		resetMask();
 
 		dlg.cbM01StyleOfMark.removeAllItems();
@@ -32,7 +34,5 @@
 		dlg.cbM01StyleOfMark.addItem("Tower");
 		dlg.cbM01StyleOfMark.addItem("Float");
-
-		dlg.cM01Fired.setSelected(false);
-		dlg.cM01TopMark.setSelected(false);
+		dlg.cbM01StyleOfMark.setEnabled(true);
 
 		setRegion(Main.pref.get("tomsplugin.IALA").equals("B"));
@@ -245,5 +245,5 @@
 			
 			if (isFired()) {
-				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource("/images/Light_White_240.png")));
+				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource("/images/Light_White_120.png")));
 
 				if (getLightChar() != "") {
Index: /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyIsol.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyIsol.java	(revision 22978)
+++ /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyIsol.java	(revision 22979)
@@ -23,4 +23,6 @@
 		keys = node.getKeys();
 		setNode(node);
+		
+		resetMask();
 
 		dlg.cbM01StyleOfMark.removeAllItems();
@@ -31,4 +33,5 @@
 		dlg.cbM01StyleOfMark.addItem("Tower");
 		dlg.cbM01StyleOfMark.addItem("Float");
+		dlg.cbM01StyleOfMark.setEnabled(true);
 
 		dlg.cbM01Kennung.removeAllItems();
@@ -36,7 +39,5 @@
 		dlg.cbM01Kennung.addItem("Fl(2)");
 
-		dlg.cM01Fired.setSelected(false);
 		dlg.cM01TopMark.setSelected(true);
-		dlg.cM01TopMark.setEnabled(false);
 
 		setColour(SeaMark.BLACK_RED_BLACK);
@@ -139,5 +140,5 @@
 			dlg.lM01Icon01.setIcon(new ImageIcon(getClass().getResource(image)));
 			if (isFired()) {
-				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource("/images/Light_White_240.png")));
+				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource("/images/Light_White_120.png")));
 				if (getLightChar() != "") {
 					String c;
Index: /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyLat.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyLat.java	(revision 22978)
+++ /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyLat.java	(revision 22979)
@@ -13,5 +13,4 @@
 
 import toms.dialogs.SmpDialogAction;
-import toms.seamarks.SeaMark;
 
 public class BuoyLat extends Buoy {
@@ -23,26 +22,29 @@
 		keys = node.getKeys();
 		setNode(node);
+		
+		resetMask();
+
+		dlg.rbM01RegionA.setEnabled(true);
+		dlg.rbM01RegionB.setEnabled(true);
+
+		dlg.cbM01StyleOfMark.removeAllItems();
+		dlg.cbM01StyleOfMark.addItem("Not set");
+		dlg.cbM01StyleOfMark.addItem("Pillar Buoy");
+		dlg.cbM01StyleOfMark.addItem("Spar Buoy");
+		dlg.cbM01StyleOfMark.addItem("Beacon");
+		dlg.cbM01StyleOfMark.addItem("Tower");
+		dlg.cbM01StyleOfMark.addItem("Float");
+		dlg.cbM01StyleOfMark.setEnabled(true);
 
 		dlg.cbM01Kennung.removeAllItems();
 		dlg.cbM01Kennung.addItem("Not set");
 		dlg.cbM01Kennung.addItem("Fl");
-		dlg.cbM01Kennung.addItem("Fl(2)");
-		dlg.cbM01Kennung.addItem("Fl(3)");
-		dlg.cbM01Kennung.addItem("Fl(4)");
-		dlg.cbM01Kennung.addItem("Fl(5)");
-		dlg.cbM01Kennung.addItem("Oc(2)");
-		dlg.cbM01Kennung.addItem("Oc(3)");
+		dlg.cbM01Kennung.addItem("Fl()");
+		dlg.cbM01Kennung.addItem("Oc");
+		dlg.cbM01Kennung.addItem("Oc()");
 		dlg.cbM01Kennung.addItem("Q");
 		dlg.cbM01Kennung.addItem("IQ");
+		dlg.cbM01Kennung.addItem("Mo()");
 		dlg.cbM01Kennung.setSelectedIndex(0);
-
-		setStyleIndex(0);
-		setLightColour();
-		setFired(false);
-		setTopMark(false);
-		setRegion(Main.pref.get("tomsplugin.IALA").equals("B"));
-
-		dlg.cM01Fired.setSelected(false);
-		dlg.cM01TopMark.setSelected(false);
 
 		if (keys.containsKey("name"))
@@ -287,5 +289,5 @@
 
 		dlg.cbM01StyleOfMark.removeAllItems();
-		dlg.cbM01StyleOfMark.addItem("Not set");
+		dlg.cbM01StyleOfMark.addItem("*Select Shape*");
 
 		switch (type) {
@@ -582,8 +584,8 @@
 				if (getLightColour().equals("R"))
 					dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Light_Red_240.png")));
+							"/images/Light_Red_120.png")));
 				else
 					dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource(
-							"/images/Light_Green_240.png")));
+							"/images/Light_Green_120.png")));
 			if (getLightChar() != "") {
 				String c;
Index: /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyNota.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyNota.java	(revision 22978)
+++ /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyNota.java	(revision 22979)
@@ -18,4 +18,6 @@
 	public BuoyNota(SmpDialogAction dia, int type) {
 		super(dia);
+		
+		resetMask();
 
 		dlg.cbM01Kennung.removeAllItems();
Index: /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySaw.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySaw.java	(revision 22978)
+++ /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySaw.java	(revision 22979)
@@ -23,4 +23,6 @@
 		keys = node.getKeys();
 		setNode(node);
+		
+		resetMask();
 
 		dlg.cbM01StyleOfMark.removeAllItems();
@@ -38,7 +40,4 @@
 		dlg.cbM01Kennung.addItem("LFl");
 		dlg.cbM01Kennung.addItem("Mo()");
-
-		dlg.cM01Fired.setSelected(false);
-		dlg.cM01TopMark.setSelected(false);
 
 		setColour(SeaMark.RED_WHITE);
@@ -141,5 +140,5 @@
 
 			if (isFired()) {
-				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource("/images/Light_White_240.png")));
+				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource("/images/Light_White_120.png")));
 				if (getLightChar() != "") {
 					String c;
Index: /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySpec.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySpec.java	(revision 22978)
+++ /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySpec.java	(revision 22979)
@@ -23,4 +23,6 @@
 		keys = node.getKeys();
 		setNode(node);
+		
+		resetMask();
 
 		dlg.cbM01StyleOfMark.removeAllItems();
@@ -47,7 +49,4 @@
 		dlg.cbM01Kennung.setSelectedIndex(0);
 
-		dlg.cM01Fired.setSelected(false);
-		dlg.cM01TopMark.setSelected(false);
-		dlg.cM01Fired.setEnabled(false);
 		dlg.cM01TopMark.setEnabled(true);
 
@@ -181,5 +180,5 @@
 
 			if (isFired()) {
-				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource("/images/Light_White_240.png")));
+				dlg.lM01Icon02.setIcon(new ImageIcon(getClass().getResource("/images/Light_White_120.png")));
 				if (getLightChar() != "") {
 					String c;
Index: /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyUkn.java
===================================================================
--- /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyUkn.java	(revision 22978)
+++ /applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyUkn.java	(revision 22979)
@@ -3,4 +3,6 @@
 
 package toms.seamarks.buoys;
+
+import javax.swing.ImageIcon;
 
 import org.openstreetmap.josm.Main;
@@ -11,23 +13,9 @@
 	public BuoyUkn(SmpDialogAction dia, String Msg) {
 		super(dia);
-
-		dlg.cbM01StyleOfMark.removeAllItems();
-		dlg.cbM01StyleOfMark.addItem("Not set");
-
-		if (dlg.cbM01Kennung != null) {
-			dlg.cbM01Kennung.removeAllItems();
-			dlg.cbM01Kennung.addItem("Not set");
-		}
-
-		dlg.cM01Fired.setSelected(false);
-		dlg.cM01TopMark.setSelected(false);
-
+		resetMask();
+		dlg.cbM01CatOfMark.removeAllItems();
+		dlg.cbM01CatOfMark.setEnabled(false);
+		dlg.tfM01Name.setText(getName());
 		setErrMsg(Msg);
-		setName("");
-		setTopMark(false);
-		setFired(false);
-		setValid(false);
-		setBuoyIndex(0);
-		setRegion(Main.pref.get("tomsplugin.IALA").equals("B"));
 	}
 
@@ -35,19 +23,8 @@
 		super.paintSign();
 
-		dlg.lM01Icon01.setIcon(null);
-		dlg.lM01Icon02.setIcon(null);
 		if (getErrMsg() != null)
 			dlg.sM01StatusBar.setText(getErrMsg());
 
 		setErrMsg(null);
-
-		dlg.tfM01Name.setText(getName());
-		dlg.tfM01Name.setEnabled(false);
-
-		dlg.cM01Fired.setEnabled(false);
-		dlg.cM01TopMark.setEnabled(false);
-
-		dlg.bM01Save.setEnabled(false);
-
 	}
 
