Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelChan.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelChan.java	(revision 26924)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelChan.java	(revision 26925)
@@ -2,4 +2,5 @@
 
 import javax.swing.*;
+
 import java.awt.*;
 import java.awt.event.*;
@@ -90,7 +91,4 @@
 			if (safeWaterButton.isSelected()) {
 				dlg.mark.setCategory(Cat.UNKNOWN);
-				dlg.mark.setColour(Ent.BODY, Col.RED);
-				dlg.mark.addColour(Ent.BODY, Col.WHITE);
-				dlg.mark.setPattern(Ent.BODY, Pat.VERT);
 				if (panelSaw.shapes.containsKey(shp)) {
 					panelSaw.shapes.get(shp).doClick();
@@ -107,15 +105,26 @@
 		}
 	};
+	public JToggleButton topmarkButton = new JToggleButton(new ImageIcon(getClass().getResource("/images/ChanTopButton.png")));
+	private ActionListener alTop = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			if (topmarkButton.isSelected()) {
+				topmarkButton.setBorderPainted(true);
+			} else {
+//				dlg.panelMain.panelTop.clearSelections();
+				topmarkButton.setBorderPainted(false);
+			}
+		}
+	};
 
 	public PanelChan(OSeaMAction dia) {
 		dlg = dia;
 		panelPort = new PanelPort(dlg);
-		panelPort.setBounds(new Rectangle(55, 0, 180, 160));
+		panelPort.setBounds(new Rectangle(55, 0, 70, 160));
 		panelPort.setVisible(false);
 		panelStbd = new PanelStbd(dlg);
-		panelStbd.setBounds(new Rectangle(55, 0, 180, 160));
+		panelStbd.setBounds(new Rectangle(55, 0, 70, 160));
 		panelStbd.setVisible(false);
 		panelSaw = new PanelSaw(dlg);
-		panelSaw.setBounds(new Rectangle(55, 0, 180, 160));
+		panelSaw.setBounds(new Rectangle(55, 0, 70, 160));
 		panelSaw.setVisible(false);
 		this.setLayout(null);
@@ -128,7 +137,16 @@
 		this.add(getCatButton(prefStbdButton, 0, 96, 52, 32, "PrefStbd"), null);
 		this.add(getCatButton(safeWaterButton, 0, 128, 52, 32, "SafeWater"), null);
+
+		topmarkButton.setBounds(new Rectangle(130, 0, 34, 32));
+		topmarkButton.setBorder(BorderFactory.createLoweredBevelBorder());
+		topmarkButton.addActionListener(alTop);
+		topmarkButton.setVisible(false);
+		this.add(topmarkButton);
 	}
 
 	public void clearSelections() {
+		topmarkButton.setSelected(false);
+		topmarkButton.setVisible(false);
+		alTop.actionPerformed(null);
 		catButtons.clearSelection();
 		alCat.actionPerformed(null);
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelChr.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelChr.java	(revision 26924)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelChr.java	(revision 26925)
@@ -39,5 +39,5 @@
 		public void actionPerformed(java.awt.event.ActionEvent e) {
 			if (noneButton.isSelected()) {
-				if (dlg.panelMain.panelLit.panelCol.offButton.isSelected()) {
+				if (dlg.panelMain.panelLit.panelCol.delButton.isSelected()) {
 					dlg.panelMain.lightIcon.setIcon(null);
 				}
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelCol.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelCol.java	(revision 26924)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelCol.java	(revision 26925)
@@ -19,5 +19,5 @@
 	private Ent ent;
 	private ButtonGroup colourButtons = new ButtonGroup();
-	public JRadioButton offButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/OffButton.png")));
+	public JRadioButton delButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/OffButton.png")));
 	public JRadioButton addButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/AddButton.png")));
 	public JRadioButton whiteButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/WhiteButton.png")));
@@ -44,6 +44,6 @@
 							dlg.mark.setColour(ent, col);
 						} else {
-							if (button == offButton) {
-								if (stackCol.size() != 0) {
+							if (button == delButton) {
+								if (stackCol.size() > 1) {
 									JRadioButton btnI = stackCol.get(stackIdx);
 									dlg.mark.subColour(ent, stackIdx);
@@ -52,9 +52,12 @@
 									stack.remove(btnI);
 									stackCol.remove(stackIdx);
-									if ((stackCol.size() == stackIdx) && (stackIdx != 0))
+									if (stackCol.size() == stackIdx)
 										stackIdx--;
+								} else {
+									dlg.mark.setColour(Ent.BODY, Col.UNKNOWN);
 								}
 							} else if (button == addButton) {
-								if (stackCol.size() != 0) stackIdx++;
+								if (stackCol.size() != 0)
+									stackIdx++;
 								dlg.mark.addColour(ent, stackIdx, col);
 								stackCol.add(stackIdx, new JRadioButton(new ImageIcon(getClass().getResource("/images/ColourButton.png"))));
@@ -67,18 +70,14 @@
 								dlg.mark.setColour(ent, stackIdx, col);
 							}
-							if (stackCol.size() != 0) {
-								int height = 60 / stackCol.size();
-								for (int i = 0; stackCol.size() > i; i++) {
-									JRadioButton btnI = stackCol.get(i);
-									btnI.setBounds(2, (2 + (i * height)), 30, height);
-									btnI.setBackground(dlg.mark.ColMAP.get(dlg.mark.getColour(ent, i)));
-									if (stackIdx == i) {
-										btnI.setBorderPainted(true);
-									} else {
-										btnI.setBorderPainted(false);
-									}
+							int height = 60 / stackCol.size();
+							for (int i = 0; stackCol.size() > i; i++) {
+								JRadioButton btnI = stackCol.get(i);
+								btnI.setBounds(2, (2 + (i * height)), 30, height);
+								btnI.setBackground(dlg.mark.ColMAP.get(dlg.mark.getColour(ent, i)));
+								if (stackIdx == i) {
+									btnI.setBorderPainted(true);
+								} else {
+									btnI.setBorderPainted(false);
 								}
-							} else {
-								stack.repaint();
 							}
 						}
@@ -113,5 +112,5 @@
 		ent = entity;
 		this.setLayout(null);
-		this.add(getColButton(offButton, 0, 0, 34, 16, Messages.getString("RemColour"), Col.UNKNOWN), null);
+		this.add(getColButton(delButton, 0, 0, 34, 16, Messages.getString("RemColour"), Col.UNKNOWN), null);
 		this.add(getColButton(whiteButton, 0, 16, 34, 16, Messages.getString("White"), Col.WHITE), null);
 		this.add(getColButton(redButton, 0, 32, 34, 16, Messages.getString("Red"), Col.RED), null);
@@ -135,9 +134,11 @@
 			stack.setLayout(null);
 			this.add(stack);
-			if (dlg.mark != null) {
-				for (int i = 0; dlg.mark.getColour(ent, i) != Col.UNKNOWN; i++) {
-					stackCol.add(new JRadioButton());
-				}
-			}
+		}
+	}
+
+	public void trimStack(int max) {
+		while (stackCol.size() > max) {
+			stackCol.get(stackCol.size() - 1).setSelected(true);
+			delButton.doClick();
 		}
 	}
@@ -145,5 +146,11 @@
 	public void clearSelections() {
 		colourButtons.clearSelection();
-		offButton.doClick();
+		if (stackCol.size() == 0) {
+			addButton.doClick();
+		}
+		do {
+			delButton.doClick();
+		} while (stackCol.size() > 1);
+		alStack.actionPerformed(null);
 	}
 
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelHaz.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelHaz.java	(revision 26924)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelHaz.java	(revision 26925)
@@ -3,5 +3,7 @@
 import java.awt.event.*;
 import java.awt.*;
+
 import javax.swing.*;
+
 import java.util.*;
 
@@ -120,4 +122,14 @@
 		}
 	};
+	public JToggleButton topmarkButton = new JToggleButton(new ImageIcon(getClass().getResource("/images/HazTopButton.png")));
+	private ActionListener alTop = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			if (topmarkButton.isSelected()) {
+				topmarkButton.setBorderPainted(true);
+			} else {
+				topmarkButton.setBorderPainted(false);
+			}
+		}
+	};
 
 	public PanelHaz(OSeaMAction dia) {
@@ -138,7 +150,14 @@
 		this.add(getShapeButton(beaconButton, 90, 32, 34, 32, "Beacon", Shp.BEACON, Obj.BCNCAR, Obj.BCNISD), null);
 		this.add(getShapeButton(towerButton, 90, 64, 34, 32, "Tower", Shp.TOWER, Obj.BCNCAR, Obj.BCNISD), null);
+
+		topmarkButton.setBounds(new Rectangle(130, 0, 34, 32));
+		topmarkButton.setBorder(BorderFactory.createLoweredBevelBorder());
+		topmarkButton.addActionListener(alTop);
+		this.add(topmarkButton);
 	}
 
 	public void clearSelections() {
+		topmarkButton.setSelected(false);
+		alTop.actionPerformed(null);
 		catButtons.clearSelection();
 		alCat.actionPerformed(null);
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMain.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMain.java	(revision 26924)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMain.java	(revision 26925)
@@ -225,8 +225,6 @@
 		alName = new ActionListener() {
 			public void actionPerformed(java.awt.event.ActionEvent e) {
-				if (dlg.mark == null)
-					return;
-				else
-					dlg.mark.setName(nameBox.getText().trim());
+				if (dlg.mark != null)
+					dlg.mark.setName(nameBox.getText());
 			}
 		};
@@ -285,8 +283,10 @@
 
 	public void clearSelections() {
+		panelMore.clearSelections();
 		typeButtons.clearSelection();
+		alType.actionPerformed(null);
 		moreButton.setVisible(false);
-		alType.actionPerformed(null);
 		nameBox.setText("");
+		alName.actionPerformed(null);
 		clearType();
 	}
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMore.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMore.java	(revision 26924)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMore.java	(revision 26925)
@@ -21,8 +21,6 @@
 	private ActionListener alInfo = new ActionListener() {
 		public void actionPerformed(java.awt.event.ActionEvent e) {
-			if (dlg.mark == null)
-				return;
-			else
-				dlg.mark.setInfo(infoBox.getText().trim());
+			if (dlg.mark != null)
+				dlg.mark.setInfo(infoBox.getText());
 		}
 	};
@@ -31,8 +29,6 @@
 	private ActionListener alSource = new ActionListener() {
 		public void actionPerformed(java.awt.event.ActionEvent e) {
-			if (dlg.mark == null)
-				return;
-			else
-				dlg.mark.setSource(sourceBox.getText().trim());
+			if (dlg.mark != null)
+				dlg.mark.setSource(sourceBox.getText());
 		}
 	};
@@ -41,6 +37,6 @@
 	private ActionListener alElev = new ActionListener() {
 		public void actionPerformed(java.awt.event.ActionEvent e) {
-			if (dlg.mark == null)
-				return;
+			if (dlg.mark != null)
+				dlg.mark.setElevation(elevBox.getText());
 		}
 	};
@@ -49,6 +45,6 @@
 	private ActionListener alHeight = new ActionListener() {
 		public void actionPerformed(java.awt.event.ActionEvent e) {
-			if (dlg.mark == null)
-				return;
+			if (dlg.mark != null)
+				dlg.mark.setHeight(heightBox.getText());
 		}
 	};
@@ -199,5 +195,5 @@
 		dlg = dia;
 		this.setLayout(null);
-		panelPat = new PanelPat(dlg);
+		panelPat = new PanelPat(dlg, Ent.BODY);
 		panelPat.setBounds(new Rectangle(0, 0, 110, 160));
 		this.add(panelPat, null);
@@ -310,4 +306,20 @@
 	public void clearSelections() {
 		panelPat.clearSelections();
+		heightBox.setText("");
+		alHeight.actionPerformed(null);
+		elevBox.setText("");
+		alElev.actionPerformed(null);
+		sourceBox.setText("");
+		alSource.actionPerformed(null);
+		infoBox.setText("");
+		alInfo.actionPerformed(null);
+		statusBox.setSelectedIndex(0);
+		alStatus.actionPerformed(null);
+		constrBox.setSelectedIndex(0);
+		alConstr.actionPerformed(null);
+		visBox.setSelectedIndex(0);
+		alVis.actionPerformed(null);
+		reflBox.setSelectedIndex(0);
+		alRefl.actionPerformed(null);
 	}
 
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPat.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPat.java	(revision 26924)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPat.java	(revision 26925)
@@ -10,5 +10,5 @@
 import oseam.Messages;
 import oseam.dialogs.OSeaMAction;
-import oseam.seamarks.SeaMark.*	;
+import oseam.seamarks.SeaMark.*;
 
 public class PanelPat extends JPanel {
@@ -28,21 +28,37 @@
 	private ActionListener alPat = new ActionListener() {
 		public void actionPerformed(java.awt.event.ActionEvent e) {
-			for (Pat pat : patterns.keySet()) {
-				JRadioButton button = patterns.get(pat);
-				if (button.isSelected()) {
-					dlg.mark.setPattern(Ent.BODY, pat);
-					button.setBorderPainted(true);
-				} else
-					button.setBorderPainted(false);
+			if (dlg.mark != null) {
+				for (Pat pat : patterns.keySet()) {
+					JRadioButton button = patterns.get(pat);
+					if (button.isSelected()) {
+						dlg.mark.setPattern(Ent.BODY, pat);
+						button.setBorderPainted(true);
+					} else
+						button.setBorderPainted(false);
+				}
+				switch (dlg.mark.getPattern(Ent.BODY)) {
+				case NONE:
+					panelCol.trimStack(1);
+					break;
+				case HORIZ:
+				case VERT:
+				case DIAG:
+					break;
+				case SQUARE:
+					panelCol.trimStack(4);
+					break;
+				case BORDER:
+					panelCol.trimStack(2);
+					break;
+				}
+				dlg.mark.paintSign();
 			}
-			if (dlg.mark != null)
-				dlg.mark.paintSign();
 		}
 	};
 
-	public PanelPat(OSeaMAction dia) {
+	public PanelPat(OSeaMAction dia, Ent entity) {
 		dlg = dia;
 		this.setLayout(null);
-		panelCol = new PanelCol(dlg, alType, Ent.BODY);
+		panelCol = new PanelCol(dlg, alType, entity);
 		panelCol.setBounds(new Rectangle(0, 0, 72, 160));
 		this.add(panelCol, null);
@@ -53,8 +69,9 @@
 		this.add(getPatButton(squareButton, 76, 104, 27, 27, "SquarePat", Pat.SQUARE), null);
 		this.add(getPatButton(borderButton, 76, 130, 27, 27, "BorderPat", Pat.BORDER), null);
-		
+
 	}
 
 	public void clearSelections() {
+		panelCol.clearSelections();
 		patButtons.clearSelection();
 		alPat.actionPerformed(null);
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPort.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPort.java	(revision 26924)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPort.java	(revision 26925)
@@ -37,8 +37,63 @@
 			}
 			if (dlg.mark != null) {
-				if ((dlg.mark.getObject() != Obj.UNKNOWN) && (dlg.mark.getShape() != Shp.UNKNOWN))
+				if ((dlg.mark.getObject() != Obj.UNKNOWN) && (dlg.mark.getShape() != Shp.UNKNOWN)) {
 					dlg.panelMain.moreButton.setVisible(true);
-				else
+					dlg.panelMain.panelChan.topmarkButton.setVisible(true);
+					dlg.panelMain.panelMore.panelPat.panelCol.clearSelections();
+					if (dlg.mark.getCategory() == Cat.LAM_PORT) {
+						switch (dlg.mark.getRegion()) {
+						case A:
+							dlg.panelMain.panelMore.panelPat.noneButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.redButton.doClick();
+							break;
+						case B:
+							dlg.panelMain.panelMore.panelPat.noneButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.greenButton.doClick();
+							break;
+						case C:
+							dlg.panelMain.panelMore.panelPat.horizButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.redButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.addButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.whiteButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.addButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.redButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.addButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.whiteButton.doClick();
+							break;
+						}
+					} else {
+						switch (dlg.mark.getRegion()) {
+						case A:
+							dlg.panelMain.panelMore.panelPat.horizButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.redButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.addButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.greenButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.addButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.redButton.doClick();
+							break;
+						case B:
+							dlg.panelMain.panelMore.panelPat.horizButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.greenButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.addButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.redButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.addButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.greenButton.doClick();
+							break;
+						case C:
+							dlg.panelMain.panelMore.panelPat.horizButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.redButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.addButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.greenButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.addButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.redButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.addButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.greenButton.doClick();
+							break;
+						}
+					}
+				} else {
 					dlg.panelMain.moreButton.setVisible(false);
+					dlg.panelMain.panelChan.topmarkButton.setVisible(false);
+				}
 				dlg.mark.paintSign();
 			}
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSaw.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSaw.java	(revision 26924)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSaw.java	(revision 26925)
@@ -33,8 +33,15 @@
 			}
 			if (dlg.mark != null) {
-				if ((dlg.mark.getObject() != Obj.UNKNOWN) && (dlg.mark.getShape() != Shp.UNKNOWN))
+				if ((dlg.mark.getObject() != Obj.UNKNOWN) && (dlg.mark.getShape() != Shp.UNKNOWN)) {
 					dlg.panelMain.moreButton.setVisible(true);
-				else
+					dlg.panelMain.panelChan.topmarkButton.setVisible(true);
+					dlg.panelMain.panelMore.panelPat.panelCol.clearSelections();
+					dlg.panelMain.panelMore.panelPat.vertButton.doClick();
+					dlg.panelMain.panelMore.panelPat.panelCol.redButton.doClick();
+					dlg.panelMain.panelMore.panelPat.panelCol.addButton.doClick();
+					dlg.panelMain.panelMore.panelPat.panelCol.whiteButton.doClick();
+				} else {
 					dlg.panelMain.moreButton.setVisible(false);
+				}
 				dlg.mark.paintSign();
 			}
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSpec.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSpec.java	(revision 26924)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSpec.java	(revision 26925)
@@ -51,6 +51,6 @@
 					dlg.mark.setShape(shp);
 					dlg.mark.setObject(objects.get(shp));
-					if ((button == cairnButton) && !(dlg.panelMain.panelMore.panelPat.panelCol.offButton.isSelected()))
-						dlg.panelMain.panelMore.panelPat.panelCol.offButton.doClick();
+					if ((button == cairnButton) && !(dlg.panelMain.panelMore.panelPat.panelCol.delButton.isSelected()))
+						dlg.panelMain.panelMore.panelPat.panelCol.delButton.doClick();
 					button.setBorderPainted(true);
 				} else
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelStbd.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelStbd.java	(revision 26924)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelStbd.java	(revision 26925)
@@ -37,8 +37,63 @@
 			}
 			if (dlg.mark != null) {
-				if ((dlg.mark.getObject() != Obj.UNKNOWN) && (dlg.mark.getShape() != Shp.UNKNOWN))
+				if ((dlg.mark.getObject() != Obj.UNKNOWN) && (dlg.mark.getShape() != Shp.UNKNOWN)) {
 					dlg.panelMain.moreButton.setVisible(true);
-				else
+					dlg.panelMain.panelChan.topmarkButton.setVisible(true);
+					dlg.panelMain.panelMore.panelPat.panelCol.clearSelections();
+					if (dlg.mark.getCategory() == Cat.LAM_PORT) {
+						switch (dlg.mark.getRegion()) {
+						case A:
+							dlg.panelMain.panelMore.panelPat.noneButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.greenButton.doClick();
+							break;
+						case B:
+							dlg.panelMain.panelMore.panelPat.noneButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.redButton.doClick();
+							break;
+						case C:
+							dlg.panelMain.panelMore.panelPat.horizButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.greenButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.addButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.whiteButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.addButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.greenButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.addButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.whiteButton.doClick();
+							break;
+						}
+					} else {
+						switch (dlg.mark.getRegion()) {
+						case A:
+							dlg.panelMain.panelMore.panelPat.horizButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.greenButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.addButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.redButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.addButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.greenButton.doClick();
+							break;
+						case B:
+							dlg.panelMain.panelMore.panelPat.horizButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.redButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.addButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.greenButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.addButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.redButton.doClick();
+							break;
+						case C:
+							dlg.panelMain.panelMore.panelPat.horizButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.redButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.addButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.greenButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.addButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.redButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.addButton.doClick();
+							dlg.panelMain.panelMore.panelPat.panelCol.greenButton.doClick();
+							break;
+						}
+					}
+				} else {
 					dlg.panelMain.moreButton.setVisible(false);
+					dlg.panelMain.panelChan.topmarkButton.setVisible(false);
+				}
 				dlg.mark.paintSign();
 			}
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelTop.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelTop.java	(revision 26924)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelTop.java	(revision 26925)
@@ -13,5 +13,5 @@
 
 	private OSeaMAction dlg;
-	public PanelCol panelCol = null;
+	public PanelPat panelPat = null;
 	private ButtonGroup topButtons = new ButtonGroup();
 	public JRadioButton noTopButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/NoneButton.png")));
@@ -60,25 +60,25 @@
 	public PanelTop(OSeaMAction dia) {
 		dlg = dia;
-		panelCol = new PanelCol(dlg, alTop, Ent.TOPMARK);
-		panelCol.setBounds(new Rectangle(0, 0, 34, 160));
 		this.setLayout(null);
-		this.add(panelCol, null);
-		this.add(getTopButton(noTopButton, 40, 5, 27, 27, "NoTop", Top.NONE), null);
-		this.add(getTopButton(canTopButton, 70, 5, 27, 27, "CanTop", Top.CAN), null);
-		this.add(getTopButton(coneTopButton, 100, 5, 27, 27, "ConeTop", Top.CONE), null);
-		this.add(getTopButton(sphereTopButton, 130, 5, 27, 27, "SphereTop", Top.SPHERE), null);
-		this.add(getTopButton(XTopButton, 160, 5, 27, 27, "XTop", Top.X_SHAPE), null);
-		this.add(getTopButton(northTopButton, 40, 35, 27, 27, "NorthTop", Top.NORTH), null);
-		this.add(getTopButton(southTopButton, 70, 35, 27, 27, "SouthTop", Top.SOUTH), null);
-		this.add(getTopButton(eastTopButton, 100, 35, 27, 27, "EastTop", Top.EAST), null);
-		this.add(getTopButton(westTopButton, 130, 35, 27, 27, "WestTop", Top.WEST), null);
-		this.add(getTopButton(spheres2TopButton, 160, 35, 27, 27, "Spheres2Top", Top.SPHERES2), null);
-		this.add(getDayButton(boardDayButton, 40, 65, 27, 27, "BoardDay", Day.BOARD), null);
-		this.add(getDayButton(diamondDayButton, 70, 65, 27, 27, "DiamondDay", Day.DIAMOND), null);
-		this.add(getDayButton(triangleDayButton, 100, 65, 27, 27, "TriangleDay", Day.TRIANGLE), null);
-		this.add(getDayButton(triangleInvDayButton, 130, 65, 27, 27, "TriangleInvDay", Day.TRIANGLE_INV), null);
-		this.add(getDayButton(squareDayButton, 160, 65, 27, 27, "SquareDay", Day.SQUARE), null);
-		this.add(getDayButton(circleDayButton, 160, 95, 27, 27, "CircleDay", Day.CIRCLE), null);
-		this.add(getMoorButton(mooringTopButton, 40, 95, 27, 27, "MooringTop"), null);
+		panelPat = new PanelPat(dlg, Ent.TOPMARK);
+		panelPat.setBounds(new Rectangle(0, 0, 110, 160));
+		this.add(panelPat, null);
+		this.add(getTopButton(noTopButton, 110, 5, 27, 27, "NoTop", Top.NONE), null);
+		this.add(getTopButton(canTopButton, 140, 5, 27, 27, "CanTop", Top.CAN), null);
+		this.add(getTopButton(coneTopButton, 170, 5, 27, 27, "ConeTop", Top.CONE), null);
+		this.add(getTopButton(sphereTopButton, 200, 5, 27, 27, "SphereTop", Top.SPHERE), null);
+		this.add(getTopButton(XTopButton, 230, 5, 27, 27, "XTop", Top.X_SHAPE), null);
+		this.add(getTopButton(northTopButton, 110, 35, 27, 27, "NorthTop", Top.NORTH), null);
+		this.add(getTopButton(southTopButton, 140, 35, 27, 27, "SouthTop", Top.SOUTH), null);
+		this.add(getTopButton(eastTopButton, 170, 35, 27, 27, "EastTop", Top.EAST), null);
+		this.add(getTopButton(westTopButton, 200, 35, 27, 27, "WestTop", Top.WEST), null);
+		this.add(getTopButton(spheres2TopButton, 230, 35, 27, 27, "Spheres2Top", Top.SPHERES2), null);
+		this.add(getDayButton(boardDayButton, 110, 65, 27, 27, "BoardDay", Day.BOARD), null);
+		this.add(getDayButton(diamondDayButton, 140, 65, 27, 27, "DiamondDay", Day.DIAMOND), null);
+		this.add(getDayButton(triangleDayButton, 170, 65, 27, 27, "TriangleDay", Day.TRIANGLE), null);
+		this.add(getDayButton(triangleInvDayButton, 200, 65, 27, 27, "TriangleInvDay", Day.TRIANGLE_INV), null);
+		this.add(getDayButton(squareDayButton, 230, 65, 27, 27, "SquareDay", Day.SQUARE), null);
+		this.add(getDayButton(circleDayButton, 230, 95, 27, 27, "CircleDay", Day.CIRCLE), null);
+		this.add(getMoorButton(mooringTopButton, 110, 95, 27, 27, "MooringTop"), null);
 	}
 
@@ -86,5 +86,5 @@
 		topButtons.clearSelection();
 		alTop.actionPerformed(null);
-		panelCol.clearSelections();
+		panelPat.clearSelections();
 	}
 
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 26924)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java	(revision 26925)
@@ -23,4 +23,15 @@
 	}
 
+	public String validDecimal(String str) {
+		str = str.trim().replace(',', '.');
+		if ((!str.isEmpty()) && (!str.matches("^[+-]??\\d+(\\.\\d+)??$"))) {
+			dlg.manager.showVisualMessage("Not a valid decimal string");
+			return "";
+		} else {
+			dlg.manager.showVisualMessage("");
+			return str;
+		}
+	}
+	
 	public enum Reg {
 		A, B, C
@@ -44,5 +55,5 @@
 
 	public void setName(String nam) {
-		name = nam;
+		name = nam.trim();
 	}
 
@@ -725,5 +736,5 @@
 	
 	public void setInfo(String str) {
-		information = str;
+		information = str.trim();
 	}
 	
@@ -735,5 +746,25 @@
 	
 	public void setSource(String str) {
-		source = str;
+		source = str.trim();
+	}
+	
+	public String elevation = "";
+	
+	public String getElevation() {
+		return elevation;
+	}
+	
+	public void setElevation(String str) {
+		elevation = validDecimal(str);
+	}
+	
+	public String height = "";
+	
+	public String getHeight() {
+		return height;
+	}
+	
+	public void setHeight(String str) {
+		height = validDecimal(str);
 	}
 	
