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 27053)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelChan.java	(revision 27054)
@@ -103,7 +103,5 @@
 				safeWaterButton.setBorderPainted(false);
 			}
-			if (dlg.mark.isValid()) {
-				dlg.panelMain.moreButton.setVisible(true);
-				dlg.panelMain.saveButton.setEnabled(true);
+			if (dlg.mark.testValid()) {
 				topmarkButton.setVisible(true);
 			}
@@ -238,12 +236,8 @@
 		topmarkButton.setBorderPainted(dlg.mark.getTopmark() != Top.NONE);
 		topmarkButton.setSelected(dlg.mark.getTopmark() != Top.NONE);
-		if (dlg.mark.isValid()) {
+		if (dlg.mark.testValid()) {
 			topmarkButton.setVisible(true);
-			dlg.panelMain.moreButton.setVisible(true);
-			dlg.panelMain.saveButton.setEnabled(true);
 		} else {
 			topmarkButton.setVisible(false);
-			dlg.panelMain.moreButton.setVisible(false);
-			dlg.panelMain.saveButton.setEnabled(false);
 		}
 		panelPort.syncPanel();
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 27053)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelCol.java	(revision 27054)
@@ -40,5 +40,4 @@
 				JRadioButton button = colours.get(col);
 				if (button.isSelected()) {
-					if (dlg.mark != null) {
 						if (ent == Ent.LIGHT) {
 							dlg.mark.setLightAtt(Att.COL, 0, col);
@@ -60,5 +59,4 @@
 						}
 						dlg.mark.paintSign();
-					}
 				} else {
 					button.setBorderPainted(false);
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 27053)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelHaz.java	(revision 27054)
@@ -98,21 +98,8 @@
 					button.setBorderPainted(false);
 			}
-			if (dlg.mark != null) {
-				if ((dlg.mark.getObject() != Obj.UNKNOWN) && (dlg.mark.getShape() != Shp.UNKNOWN)) {
-					topmarkButton.setVisible(true);
-					dlg.panelMain.moreButton.setVisible(true);
-					dlg.panelMain.saveButton.setEnabled(true);
-					dlg.panelMain.topButton.setEnabled(true);
-					dlg.panelMain.fogButton.setEnabled(true);
-					dlg.panelMain.radButton.setEnabled(true);
-					dlg.panelMain.litButton.setEnabled(true);
-				} else {
-					topmarkButton.setVisible(false);
-					dlg.panelMain.moreButton.setVisible(false);
-					dlg.panelMain.topButton.setEnabled(false);
-					dlg.panelMain.fogButton.setEnabled(false);
-					dlg.panelMain.radButton.setEnabled(false);
-					dlg.panelMain.litButton.setEnabled(false);
-				}
+			if (dlg.mark.testValid()) {
+				topmarkButton.setVisible(true);
+			} else {
+				topmarkButton.setVisible(false);
 			}
 			dlg.mark.paintSign();
@@ -186,11 +173,8 @@
 		for (Shp shp : shapes.keySet()) {
 			JRadioButton button = shapes.get(shp);
-			if (dlg.mark.getShape() == shp) {
-				button.setBorderPainted(true);
-			} else
-				button.setBorderPainted(false);
+			button.setBorderPainted(dlg.mark.getShape() == shp);
 		}
 		topmarkButton.setBorderPainted(dlg.mark.getTopmark() != Top.NONE);
-		topmarkButton.setVisible(dlg.mark.isValid());
+		topmarkButton.setVisible(dlg.mark.testValid());
 	}
 
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLights.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLights.java	(revision 27053)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLights.java	(revision 27054)
@@ -75,4 +75,6 @@
 				warningCatBox.setVisible(false);
 			}
+			dlg.mark.testValid();
+			dlg.mark.paintSign();
 		}
 	};
@@ -152,4 +154,5 @@
 			button.setBorderPainted(dlg.mark.getObject() == obj);
 		}
+		dlg.mark.testValid();
 	}
 	
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 27053)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMain.java	(revision 27054)
@@ -88,4 +88,6 @@
 			if (chanButton.isSelected()) {
 				chanButton.setBorderPainted(true);
+				dlg.mark.clearSign();
+				panelChan.syncPanel();
 				panelChan.setVisible(true);
 			} else {
@@ -95,4 +97,6 @@
 			if (hazButton.isSelected()) {
 				hazButton.setBorderPainted(true);
+				dlg.mark.clearSign();
+				panelHaz.syncPanel();
 				panelHaz.setVisible(true);
 			} else {
@@ -102,4 +106,6 @@
 			if (specButton.isSelected()) {
 				specButton.setBorderPainted(true);
+				dlg.mark.clearSign();
+				panelSpec.syncPanel();
 				panelSpec.setVisible(true);
 			} else {
@@ -109,4 +115,6 @@
 			if (lightsButton.isSelected()) {
 				lightsButton.setBorderPainted(true);
+				dlg.mark.clearSign();
+				panelLights.syncPanel();
 				panelLights.setVisible(true);
 			} else {
@@ -333,13 +341,4 @@
 			lightsButton.setEnabled(true);
 			nameBox.setText(dlg.mark.getName());
-			if (dlg.mark.isValid()) {
-				moreButton.setVisible(true);
-				moreButton.setEnabled(true);
-				topButton.setEnabled(true);
-				fogButton.setEnabled(true);
-				radButton.setEnabled(true);
-				litButton.setEnabled(true);
-				saveButton.setEnabled(true);
-			}
 			switch (SeaMark.GrpMAP.get(dlg.mark.getObject())) {
 			case LAT:
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 27053)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPat.java	(revision 27054)
@@ -28,28 +28,26 @@
 	private ActionListener alPat = new ActionListener() {
 		public void actionPerformed(java.awt.event.ActionEvent e) {
-			if (dlg.mark != null) {
-				for (Pat pat : patterns.keySet()) {
-					JRadioButton button = patterns.get(pat);
-					if (button.isSelected()) {
-						dlg.mark.setPattern(ent, pat);
-						button.setBorderPainted(true);
-					} else
-						button.setBorderPainted(false);
-				}
-				switch (dlg.mark.getPattern(ent)) {
-				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;
-				}
+			for (Pat pat : patterns.keySet()) {
+				JRadioButton button = patterns.get(pat);
+				if (button.isSelected()) {
+					dlg.mark.setPattern(ent, pat);
+					button.setBorderPainted(true);
+				} else
+					button.setBorderPainted(false);
+			}
+			switch (dlg.mark.getPattern(ent)) {
+			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;
 			}
 		}
@@ -82,5 +80,5 @@
 		panelCol.syncPanel();
 	}
-	
+
 	private JRadioButton getPatButton(JRadioButton button, int x, int y, int w, int h, String tip, Pat pat) {
 		button.setBounds(new Rectangle(x, y, w, h));
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 27053)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPort.java	(revision 27054)
@@ -37,12 +37,6 @@
 					button.setBorderPainted(false);
 			}
-			if (dlg.mark.isValid()) {
-				dlg.panelMain.moreButton.setVisible(true);
+			if (dlg.mark.testValid()) {
 				dlg.panelMain.panelChan.topmarkButton.setVisible(true);
-				dlg.panelMain.topButton.setEnabled(true);
-				dlg.panelMain.fogButton.setEnabled(true);
-				dlg.panelMain.radButton.setEnabled(true);
-				dlg.panelMain.litButton.setEnabled(true);
-				dlg.panelMain.saveButton.setEnabled(true);
 				if (dlg.mark.getCategory() == Cat.LAM_PORT) {
 					switch (dlg.mark.getRegion()) {
@@ -86,11 +80,5 @@
 				dlg.panelMain.panelMore.syncPanel();
 			} else {
-				dlg.panelMain.moreButton.setVisible(false);
 				dlg.panelMain.panelChan.topmarkButton.setVisible(false);
-				dlg.panelMain.topButton.setEnabled(false);
-				dlg.panelMain.fogButton.setEnabled(false);
-				dlg.panelMain.radButton.setEnabled(false);
-				dlg.panelMain.litButton.setEnabled(false);
-				dlg.panelMain.saveButton.setEnabled(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 27053)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSaw.java	(revision 27054)
@@ -33,22 +33,11 @@
 					button.setBorderPainted(false);
 			}
-			if (dlg.mark.isValid()) {
-				dlg.panelMain.moreButton.setVisible(true);
+			if (dlg.mark.testValid()) {
 				dlg.panelMain.panelChan.topmarkButton.setVisible(true);
-				dlg.panelMain.topButton.setEnabled(true);
-				dlg.panelMain.fogButton.setEnabled(true);
-				dlg.panelMain.radButton.setEnabled(true);
-				dlg.panelMain.litButton.setEnabled(true);
-				dlg.panelMain.saveButton.setEnabled(true);
 				dlg.mark.setObjPattern(Pat.VERT);
 				dlg.mark.setObjColour(Col.RED);
 				dlg.mark.addObjColour(Col.WHITE);
 			} else {
-				dlg.panelMain.moreButton.setVisible(false);
-				dlg.panelMain.topButton.setEnabled(false);
-				dlg.panelMain.fogButton.setEnabled(false);
-				dlg.panelMain.radButton.setEnabled(false);
-				dlg.panelMain.litButton.setEnabled(false);
-				dlg.panelMain.saveButton.setEnabled(false);
+				dlg.panelMain.panelChan.topmarkButton.setVisible(false);
 			}
 			dlg.panelMain.panelMore.syncPanel();
@@ -75,4 +64,5 @@
 				button.setBorderPainted(false);
 		}
+		dlg.mark.testValid();
 	}
 	
Index: /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSectors.java
===================================================================
--- /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSectors.java	(revision 27053)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSectors.java	(revision 27054)
@@ -64,4 +64,5 @@
 		table = new JTable(model);
 		table.setBounds(0, 0, 860, 34);
+		table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
 		panel.add(new JScrollPane(table));
 		this.getContentPane().add(panel);
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 27053)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSpec.java	(revision 27054)
@@ -62,7 +62,8 @@
 					button.setBorderPainted(false);
 			}
+			dlg.mark.testValid();
 			dlg.panelMain.panelMore.syncPanel();
-			dlg.mark.paintSign()
-;		}
+			dlg.mark.paintSign();
+		}
 	};
 
@@ -125,4 +126,5 @@
 				categoryBox.setSelectedIndex(item);
 		}
+		dlg.mark.testValid();
 	}
 
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 27053)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelStbd.java	(revision 27054)
@@ -37,12 +37,6 @@
 					button.setBorderPainted(false);
 			}
-			if (dlg.mark.isValid()) {
-				dlg.panelMain.moreButton.setVisible(true);
+			if (dlg.mark.testValid()) {
 				dlg.panelMain.panelChan.topmarkButton.setVisible(true);
-				dlg.panelMain.topButton.setEnabled(true);
-				dlg.panelMain.fogButton.setEnabled(true);
-				dlg.panelMain.radButton.setEnabled(true);
-				dlg.panelMain.litButton.setEnabled(true);
-				dlg.panelMain.saveButton.setEnabled(true);
 				if (dlg.mark.getCategory() == Cat.LAM_STBD) {
 					switch (dlg.mark.getRegion()) {
@@ -86,11 +80,5 @@
 				dlg.panelMain.panelMore.syncPanel();
 			} else {
-				dlg.panelMain.moreButton.setVisible(false);
 				dlg.panelMain.panelChan.topmarkButton.setVisible(false);
-				dlg.panelMain.topButton.setEnabled(false);
-				dlg.panelMain.fogButton.setEnabled(false);
-				dlg.panelMain.radButton.setEnabled(false);
-				dlg.panelMain.litButton.setEnabled(false);
-				dlg.panelMain.saveButton.setEnabled(false);
 			}
 			dlg.mark.paintSign();
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 27053)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java	(revision 27054)
@@ -19,4 +19,23 @@
 	}
 
+	public void clearSign() {
+		setObject(Obj.UNKNOWN);
+		setCategory(Cat.NONE);
+		setShape(Shp.UNKNOWN);
+		setColour(Ent.BODY, Col.UNKNOWN);
+		setPattern(Ent.BODY, Pat.NONE);
+		setColour(Ent.TOPMARK, Col.UNKNOWN);
+		setPattern(Ent.TOPMARK, Pat.NONE);
+		dlg.panelMain.moreButton.setVisible(false);
+		dlg.panelMain.saveButton.setEnabled(false);
+		dlg.panelMain.topButton.setEnabled(false);
+		dlg.panelMain.fogButton.setEnabled(false);
+		dlg.panelMain.radButton.setEnabled(false);
+		dlg.panelMain.litButton.setEnabled(false);
+		dlg.panelMain.panelMore.syncPanel();
+		dlg.panelMain.panelMore.setVisible(false);
+		paintSign();
+	}
+	
 	public String validDecimal(String str) {
 		str = str.trim().replace(',', '.');
@@ -130,5 +149,5 @@
 		EntMAP.put(Obj.FLTISD, Ent.FLOAT);
 		EntMAP.put(Obj.FLTSPP, Ent.FLOAT);
-		EntMAP.put(Obj.LITVES, Ent.LIGHT);
+		EntMAP.put(Obj.LITVES, Ent.FLOAT);
 		EntMAP.put(Obj.LNDMRK, Ent.LIGHT);
 		EntMAP.put(Obj.MORFAC, Ent.MOORING);
@@ -960,5 +979,6 @@
 	}
 
-	public boolean isValid() {
+	public boolean testValid() {
+		boolean tmp = false;
 		dlg.manager.showVisualMessage("");
 		switch (getObject()) {
@@ -968,5 +988,5 @@
 		case BOYLAT:
 			if ((getCategory() != Cat.NONE) && (getShape() != Shp.UNKNOWN))
-				return true;
+				tmp = true;
 			break;
 		case BCNISD:
@@ -977,5 +997,5 @@
 		case BOYSPP:
 			if (getShape() != Shp.UNKNOWN)
-				return true;
+				tmp = true;
 			break;
 		case FLTCAR:
@@ -985,5 +1005,5 @@
 		case FLTSPP:
 			if (getObjColour(0) != Col.UNKNOWN)
-				return true;
+				tmp = true;
 			break;
 		case LITMAJ:
@@ -995,11 +1015,26 @@
 		case SISTAW:
 		case SISTAT:
+			tmp = true;
+			break;
+		}
+		if (tmp) {
+			dlg.panelMain.moreButton.setVisible(true);
+			dlg.panelMain.saveButton.setEnabled(true);
+			Ent ent = EntMAP.get(getObject());
+			if ((ent == Ent.BUOY) || (ent == Ent.BEACON) || (ent == Ent.FLOAT))
+				dlg.panelMain.topButton.setEnabled(true);
+			dlg.panelMain.fogButton.setEnabled(true);
+			dlg.panelMain.radButton.setEnabled(true);
+			dlg.panelMain.litButton.setEnabled(true);
 			return true;
-		default:
+		} else {
+			dlg.panelMain.moreButton.setVisible(false);
+			dlg.panelMain.topButton.setEnabled(false);
+			dlg.panelMain.fogButton.setEnabled(false);
+			dlg.panelMain.radButton.setEnabled(false);
+			dlg.panelMain.litButton.setEnabled(false);
 			dlg.manager.showVisualMessage("Seamark not recognised");
 			return false;
 		}
-		dlg.manager.showVisualMessage("Seamark not recognised");
-		return false;
 	}
 
