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 26969)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/dialogs/OSeaMAction.java	(revision 26970)
@@ -41,5 +41,4 @@
 					} else {
 						manager.showVisualMessage(Messages.getString("OneNode"));
-						panelMain.clearSelections();
 					}
 				}
@@ -49,5 +48,4 @@
 				mark = null;
 				manager.showVisualMessage(Messages.getString("SelectNode"));
-				panelMain.clearSelections();
 			}
 		}
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 26969)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelChan.java	(revision 26970)
@@ -17,5 +17,5 @@
 	public PanelStbd panelStbd = null;
 	public PanelSaw panelSaw = null;
-	private ButtonGroup catButtons = new ButtonGroup();
+	public ButtonGroup catButtons = new ButtonGroup();
 	public JRadioButton portButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PortButton.png")));
 	public JRadioButton stbdButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/StbdButton.png")));
@@ -33,14 +33,6 @@
 					panelPort.shapes.get(shp).doClick();
 				} else {
-					panelPort.clearSelections();
-					dlg.mark.setShape(Shp.UNKNOWN);
-				}
-				portButton.setBorderPainted(true);
-				panelPort.setVisible(true);
-				panelPort.perchButton.setVisible(true);
-				panelPort.stakeButton.setVisible(true);
-			} else {
-				portButton.setBorderPainted(false);
-				panelPort.setVisible(false);
+					dlg.mark.setShape(Shp.UNKNOWN);
+				}
 			}
 			if (prefPortButton.isSelected()) {
@@ -49,13 +41,6 @@
 					panelPort.shapes.get(shp).doClick();
 				} else {
-					panelPort.clearSelections();
-					dlg.mark.setShape(Shp.UNKNOWN);
-				}
-				prefPortButton.setBorderPainted(true);
-				panelPort.setVisible(true);
-			} else {
-				prefPortButton.setBorderPainted(false);
-				if (!portButton.isSelected())
-					panelPort.setVisible(false);
+					dlg.mark.setShape(Shp.UNKNOWN);
+				}
 			}
 			if (stbdButton.isSelected()) {
@@ -64,14 +49,6 @@
 					panelStbd.shapes.get(shp).doClick();
 				} else {
-					panelStbd.clearSelections();
-					dlg.mark.setShape(Shp.UNKNOWN);
-				}
-				stbdButton.setBorderPainted(true);
-				panelStbd.setVisible(true);
-				panelStbd.perchButton.setVisible(true);
-				panelStbd.stakeButton.setVisible(true);
-			} else {
-				stbdButton.setBorderPainted(false);
-				panelStbd.setVisible(false);
+					dlg.mark.setShape(Shp.UNKNOWN);
+				}
 			}
 			if (prefStbdButton.isSelected()) {
@@ -80,13 +57,6 @@
 					panelStbd.shapes.get(shp).doClick();
 				} else {
-					panelStbd.clearSelections();
-					dlg.mark.setShape(Shp.UNKNOWN);
-				}
-				prefStbdButton.setBorderPainted(true);
-				panelStbd.setVisible(true);
-			} else {
-				prefStbdButton.setBorderPainted(false);
-				if (!stbdButton.isSelected())
-					panelStbd.setVisible(false);
+					dlg.mark.setShape(Shp.UNKNOWN);
+				}
 			}
 			if (safeWaterButton.isSelected()) {
@@ -95,13 +65,8 @@
 					panelSaw.shapes.get(shp).doClick();
 				} else {
-					panelSaw.clearSelections();
-					dlg.mark.setShape(Shp.UNKNOWN);
-				}
-				safeWaterButton.setBorderPainted(true);
-				panelSaw.setVisible(true);
-			} else {
-				safeWaterButton.setBorderPainted(false);
-				panelSaw.setVisible(false);
-			}
+					dlg.mark.setShape(Shp.UNKNOWN);
+				}
+			}
+			syncButtons();
 		}
 	};
@@ -110,5 +75,4 @@
 		public void actionPerformed(java.awt.event.ActionEvent e) {
 			if (dlg.mark != null) {
-				dlg.panelMain.panelTop.clearSelections();
 				if (topmarkButton.isSelected()) {
 					if (SeaMark.GrpMAP.get(dlg.mark.getObject()) == Grp.SAW) {
@@ -195,14 +159,48 @@
 		this.add(topmarkButton);
 	}
-
-	public void clearSelections() {
-		topmarkButton.setSelected(false);
-		topmarkButton.setVisible(false);
-		alTop.actionPerformed(null);
-		catButtons.clearSelection();
-		alCat.actionPerformed(null);
-		panelPort.clearSelections();
-		panelStbd.clearSelections();
-		panelSaw.clearSelections();
+	
+	public void syncButtons() {
+		if (portButton.isSelected()) {
+			portButton.setBorderPainted(true);
+			panelPort.setVisible(true);
+			panelPort.perchButton.setVisible(true);
+			panelPort.stakeButton.setVisible(true);
+		} else {
+			portButton.setBorderPainted(false);
+			panelPort.setVisible(false);
+		}
+		if (prefPortButton.isSelected()) {
+			prefPortButton.setBorderPainted(true);
+			panelPort.setVisible(true);
+		} else {
+			prefPortButton.setBorderPainted(false);
+			if (!portButton.isSelected())
+				panelPort.setVisible(false);
+		}
+		if (stbdButton.isSelected()) {
+			stbdButton.setBorderPainted(true);
+			panelStbd.setVisible(true);
+			panelStbd.perchButton.setVisible(true);
+			panelStbd.stakeButton.setVisible(true);
+		} else {
+			stbdButton.setBorderPainted(false);
+			panelStbd.setVisible(false);
+		}
+		if (prefStbdButton.isSelected()) {
+			prefStbdButton.setBorderPainted(true);
+			panelStbd.setVisible(true);
+		} else {
+			prefStbdButton.setBorderPainted(false);
+			if (!stbdButton.isSelected())
+				panelStbd.setVisible(false);
+		}
+		if (safeWaterButton.isSelected()) {
+			safeWaterButton.setBorderPainted(true);
+			panelSaw.setVisible(true);
+		} else {
+			safeWaterButton.setBorderPainted(false);
+			panelSaw.setVisible(false);
+		}
+
 	}
 
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 26969)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelChr.java	(revision 26970)
@@ -126,12 +126,4 @@
 	}
 
-	public void clearSelections() {
-		for (Chr chr : buttons.keySet()) {
-			JToggleButton button = buttons.get(chr);
-			button.setSelected(false);
-		}
-		noneButton.doClick();
-	}
-
 	public void enableAll(boolean state) {
 		for (JToggleButton button : buttons.values()) {
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 26969)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelCol.java	(revision 26970)
@@ -72,5 +72,5 @@
 								dlg.mark.setColour(ent, stackIdx, col);
 							}
-							int height = 60 / stackCol.size();
+							int height = stackCol.size() == 0 ? 60 : 60 / stackCol.size();
 							for (int i = 0; stackCol.size() > i; i++) {
 								JRadioButton btnI = stackCol.get(i);
@@ -145,18 +145,9 @@
 	}
 
-	public void clearSelections() {
-		colourButtons.clearSelection();
-		if (stackCol.size() == 0) {
-			addButton.doClick();
-		}
-		do {
-			delButton.doClick();
-		} while (stackCol.size() > 1);
-		alStack.actionPerformed(null);
-	}
+	public void syncButtons() {
+		if (ent != Ent.LIGHT) {
+			for (stackIdx = 0; dlg.mark.getColour(ent, stackIdx) != Col.UNKNOWN; stackIdx++) {
 
-	public void enableAll(boolean state) {
-		for (JRadioButton button : colours.values()) {
-			button.setEnabled(state);
+			}
 		}
 	}
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelFog.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelFog.java	(revision 26969)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelFog.java	(revision 26970)
@@ -18,7 +18,3 @@
 	}
 
-	public void clearSelections() {
-
-	}
-
 }
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 26969)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelHaz.java	(revision 26970)
@@ -15,5 +15,5 @@
 
 	private OSeaMAction dlg;
-	private ButtonGroup catButtons = new ButtonGroup();
+	public ButtonGroup catButtons = new ButtonGroup();
 	public JRadioButton northButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/CardNButton.png")));
 	public JRadioButton southButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/CardSButton.png")));
@@ -26,5 +26,4 @@
 			if (dlg.mark != null) {
 				shp = dlg.mark.getShape();
-				dlg.panelMain.panelMore.panelPat.clearSelections();
 				dlg.panelMain.panelMore.panelPat.horizButton.doClick();
 				if (northButton.isSelected()) {
@@ -142,5 +141,4 @@
 		public void actionPerformed(java.awt.event.ActionEvent e) {
 			if (dlg.mark != null) {
-				dlg.panelMain.panelTop.clearSelections();
 				if (topmarkButton.isSelected()) {
 					dlg.panelMain.panelTop.panelPat.noneButton.doClick();
@@ -195,12 +193,10 @@
 	}
 
-	public void clearSelections() {
-		topmarkButton.setSelected(false);
-		topmarkButton.setVisible(false);
-		alTop.actionPerformed(null);
-		catButtons.clearSelection();
-		alCat.actionPerformed(null);
-		shapeButtons.clearSelection();
-		alShape.actionPerformed(null);
+	public void syncButtons() {
+		northButton.setBorderPainted(northButton.isSelected());
+		southButton.setBorderPainted(southButton.isSelected());
+		eastButton.setBorderPainted(eastButton.isSelected());
+		westButton.setBorderPainted(westButton.isSelected());
+		isolButton.setBorderPainted(isolButton.isSelected());
 	}
 
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 26969)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLights.java	(revision 26970)
@@ -153,28 +153,4 @@
 	}
 	
-	public void updateSelections() {
-		if (dlg.mark != null) {
-			if (dlg.mark.getObject() == Obj.UNKNOWN) {
-				clearSelections();
-			} else {
-				objects.get(dlg.mark.getObject()).doClick();
-				if (dlg.mark.getObject() == Obj.SISTAT) {
-					trafficCatBox.setSelectedIndex(trafficCats.get(dlg.mark.getCategory()));
-				}
-				if (dlg.mark.getObject() == Obj.SISTAW) {
-					warningCatBox.setSelectedIndex(warningCats.get(dlg.mark.getCategory()));
-				}
-			}
-			checkValidity();
-		}
-	}
-
-	public void clearSelections() {
-		warningCatBox.setSelectedIndex(0);
-		trafficCatBox.setSelectedIndex(0);
-		objButtons.clearSelection();
-		alObj.actionPerformed(null);
-	}
-
 	private void addTCItem(String str, Cat cat) {
 		trafficCats.put(cat, trafficCatBox.getItemCount());
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLit.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLit.java	(revision 26969)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLit.java	(revision 26970)
@@ -225,7 +225,3 @@
 	}
 
-	public void clearSelections() {
-
-	}
-
 }
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 26969)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMain.java	(revision 26970)
@@ -9,4 +9,5 @@
 import oseam.Messages;
 import oseam.dialogs.OSeaMAction;
+import oseam.seamarks.SeaMark.*;
 
 public class PanelMain extends JPanel {
@@ -114,7 +115,6 @@
 		alType = new ActionListener() {
 			public void actionPerformed(java.awt.event.ActionEvent e) {
-				if (dlg.node == null) {
+				if (dlg.node == null)
 					typeButtons.clearSelection();
-				}
 				if (chanButton.isSelected()) {
 					chanButton.setBorderPainted(true);
@@ -123,5 +123,4 @@
 					chanButton.setBorderPainted(false);
 					panelChan.setVisible(false);
-					panelChan.clearSelections();
 				}
 				if (hazButton.isSelected()) {
@@ -131,23 +130,18 @@
 					hazButton.setBorderPainted(false);
 					panelHaz.setVisible(false);
-					panelHaz.clearSelections();
 				}
 				if (specButton.isSelected()) {
 					specButton.setBorderPainted(true);
 					panelSpec.setVisible(true);
-					panelSpec.updateSelections();
 				} else {
 					specButton.setBorderPainted(false);
 					panelSpec.setVisible(false);
-					panelSpec.clearSelections();
 				}
 				if (lightsButton.isSelected()) {
 					lightsButton.setBorderPainted(true);
 					panelLights.setVisible(true);
-					panelLights.updateSelections();
 				} else {
 					lightsButton.setBorderPainted(false);
 					panelLights.setVisible(false);
-					panelLights.clearSelections();
 				}
 			}
@@ -277,58 +271,31 @@
 		moreButton.addActionListener(alMore);
 
-		this.clearSelections();
-
 	}
 
-	public void clearSelections() {
-//		panelMore.clearSelections();
-		panelMore.setVisible(false);
-		moreButton.setVisible(false);
-		typeButtons.clearSelection();
+	public void syncButtons() {
+		if (dlg.mark == null) {
+			topButton.setEnabled(false);
+			fogButton.setEnabled(false);
+			radButton.setEnabled(false);
+			litButton.setEnabled(false);
+			moreButton.setVisible(false);
+		} else {
+			if (dlg.mark.isValid()) {
+				topButton.setEnabled(true);
+				fogButton.setEnabled(true);
+				radButton.setEnabled(true);
+				litButton.setEnabled(true);
+				moreButton.setVisible(true);
+			} else {
+				topButton.setEnabled(false);
+				fogButton.setEnabled(false);
+				radButton.setEnabled(false);
+				litButton.setEnabled(false);
+				moreButton.setVisible(false);
+			}
+		}
+		nameBox.setText(dlg.mark.getName());
 		alType.actionPerformed(null);
-		nameBox.setText("");
-		alName.actionPerformed(null);
-		clearType();
-	}
-
-	public void clearType() {
-		topButton.setEnabled(false);
-		fogButton.setEnabled(false);
-		radButton.setEnabled(false);
-		litButton.setEnabled(false);
-		miscButtons.clearSelection();
 		alMisc.actionPerformed(null);
-//		panelChan.clearSelections();
-//		panelHaz.clearSelections();
-//		panelSpec.clearSelections();
-//		panelLights.clearSelections();
-//		panelTop.clearSelections();
-//		panelFog.clearSelections();
-//		panelRadar.clearSelections();
-//		panelLit.clearSelections();
-		panelChan = new PanelChan(dlg);
-//		panelChan.setBounds(new Rectangle(65, 0, 180, 160));
-		panelHaz = new PanelHaz(dlg);
-//		panelHaz.setBounds(new Rectangle(65, 0, 180, 160));
-		panelSpec = new PanelSpec(dlg);
-//		panelSpec.setBounds(new Rectangle(65, 0, 180, 160));
-		panelLights = new PanelLights(dlg);
-//		panelLights.setBounds(new Rectangle(65, 0, 180, 160));
-		panelMore = new PanelMore(dlg);
-//		panelMore.setBounds(new Rectangle(40, 165, 360, 160));
-		panelTop = new PanelTop(dlg);
-//		panelTop.setBounds(new Rectangle(40, 165, 360, 160));
-		panelFog = new PanelFog(dlg);
-//		panelFog.setBounds(new Rectangle(40, 165, 360, 160));
-		panelRadar = new PanelRadar(dlg);
-//		panelRadar.setBounds(new Rectangle(40, 165, 360, 160));
-		panelLit = new PanelLit(dlg);
-//		panelLit.setBounds(new Rectangle(40, 165, 360, 160));
-
-		shapeIcon.setIcon(null);
-		lightIcon.setIcon(null);
-		topIcon.setIcon(null);
-		radarIcon.setIcon(null);
-		fogIcon.setIcon(null);
 	}
 
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 26969)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMore.java	(revision 26970)
@@ -301,24 +301,4 @@
 		}
 
-	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);
-	}
-
 	private void addStsItem(String str, Sts sts) {
 		statuses.put(sts, statusBox.getItemCount());
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 26969)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPat.java	(revision 26970)
@@ -72,10 +72,4 @@
 	}
 
-	public void clearSelections() {
-		panelCol.clearSelections();
-		patButtons.clearSelection();
-		alPat.actionPerformed(null);
-	}
-
 	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 26969)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPort.java	(revision 26970)
@@ -44,5 +44,4 @@
 					dlg.panelMain.radButton.setEnabled(true);
 					dlg.panelMain.litButton.setEnabled(true);
-					dlg.panelMain.panelMore.panelPat.panelCol.clearSelections();
 					if (dlg.mark.getCategory() == Cat.LAM_PORT) {
 						switch (dlg.mark.getRegion()) {
@@ -122,9 +121,4 @@
 	}
 
-	public void clearSelections() {
-		shapeButtons.clearSelection();
-		alShape.actionPerformed(null);
-	}
-
 	private JRadioButton getShapeButton(JRadioButton button, int x, int y, int w, int h, String tip, Shp shp, Obj obj) {
 		button.setBounds(new Rectangle(x, y, w, h));
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelRadar.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelRadar.java	(revision 26969)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelRadar.java	(revision 26970)
@@ -17,7 +17,3 @@
 	}
 
-	public void clearSelections() {
-
-	}
-
 }
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 26969)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSaw.java	(revision 26970)
@@ -40,5 +40,4 @@
 					dlg.panelMain.radButton.setEnabled(true);
 					dlg.panelMain.litButton.setEnabled(true);
-					dlg.panelMain.panelMore.panelPat.panelCol.clearSelections();
 					dlg.panelMain.panelMore.panelPat.vertButton.doClick();
 					dlg.panelMain.panelMore.panelPat.panelCol.redButton.doClick();
@@ -66,9 +65,4 @@
 	}
 
-	public void clearSelections() {
-		shapeButtons.clearSelection();
-		alShape.actionPerformed(null);
-	}
-
 	private JRadioButton getShapeButton(JRadioButton button, int x, int y, int w, int h, String tip, Shp shp, Obj obj) {
 		button.setBounds(new Rectangle(x, y, w, h));
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 26969)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSpec.java	(revision 26970)
@@ -121,31 +121,8 @@
 		}
 	}
-	
-	public void updateSelections() {
-		if (dlg.mark != null) {
-			if (dlg.mark.getObject() == Obj.UNKNOWN) {
-				clearSelections();
-				dlg.panelMain.panelMore.panelPat.panelCol.yellowButton.doClick();
-			} else {
-				dlg.panelMain.panelMore.panelPat.panelCol.colours.get(dlg.mark.getColour(Ent.BODY, 0)).doClick();
-			}
-			if (shapes.containsKey(dlg.mark.getShape())) {
-				shapes.get(dlg.mark.getShape()).doClick();
-			} else {
-				shapeButtons.clearSelection();
-				alShape.actionPerformed(null);
-			}
-		} else
-			clearSelections();
-	}
 
 	private void addCatItem(String str, Cat cat) {
 		categories.put(cat, categoryBox.getItemCount());
 		categoryBox.addItem(str);
-	}
-
-	public void clearSelections() {
-		shapeButtons.clearSelection();
-		alShape.actionPerformed(null);
 	}
 
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 26969)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelStbd.java	(revision 26970)
@@ -44,5 +44,4 @@
 					dlg.panelMain.radButton.setEnabled(true);
 					dlg.panelMain.litButton.setEnabled(true);
-					dlg.panelMain.panelMore.panelPat.panelCol.clearSelections();
 					if (dlg.mark.getCategory() == Cat.LAM_PORT) {
 						switch (dlg.mark.getRegion()) {
@@ -122,9 +121,4 @@
 	}
 
-	public void clearSelections() {
-		shapeButtons.clearSelection();
-		alShape.actionPerformed(null);
-	}
-
 	private JRadioButton getShapeButton(JRadioButton button, int x, int y, int w, int h, String tip, Shp shp, Obj obj) {
 		button.setBounds(new Rectangle(x, y, w, h));
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 26969)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelTop.java	(revision 26970)
@@ -74,9 +74,4 @@
 	}
 
-	public void clearSelections() {
-		noTopButton.doClick();
-		panelPat.clearSelections();
-	}
-
 	public void enableAll(boolean state) {
 		for (JRadioButton button : tops.values()) {
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 26969)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java	(revision 26970)
@@ -721,4 +721,44 @@
 	}
 	
+	public boolean isValid() {
+		switch (getObject()) {
+		case BCNCAR:
+		case BCNLAT:
+		case BOYCAR:
+		case BOYLAT:
+			if ((getCategory() != Cat.UNKNOWN) && (getShape() != Shp.UNKNOWN))
+				return true;
+			break;
+		case BCNISD:
+		case BCNSAW:
+		case BCNSPP:
+		case BOYISD:
+		case BOYSAW:
+		case BOYSPP:
+			if (getShape() != Shp.UNKNOWN)
+				return true;
+			break;
+		case FLTCAR:
+		case FLTISD:
+		case FLTLAT:
+		case FLTSAW:
+		case FLTSPP:
+			if (getColour(Ent.BODY, 0) != Col.UNKNOWN)
+				return true;
+			break;
+		case LITMAJ:
+		case LITMIN:
+		case LITFLT:
+		case LITVES:
+		case LNDMRK:
+		case MORFAC:
+		case SISTAW:
+		case SISTAT:
+			return true;
+		default: return false;
+		}
+		return false;
+	}
+	
 	// **********************!!!!!!!!!
 	public Light light = new Light(dlg);
@@ -727,13 +767,13 @@
 
 	public void parseMark(Node node) {
-		dlg.panelMain.clearSelections();
+		paintlock = true;
 		dlg.manager.showVisualMessage("");
 		String str = Main.pref.get("smedplugin.IALA");
 		if (str.equals("C"))
-			dlg.panelMain.panelMore.regionCButton.doClick();
+			setRegion(Reg.C);
 		else if (str.equals("B"))
-			dlg.panelMain.panelMore.regionBButton.doClick();
+			setRegion(Reg.B);
 		else
-			dlg.panelMain.panelMore.regionAButton.doClick();
+			setRegion(Reg.A);
 
 		Map<String, String> keys = node.getKeys();
@@ -888,64 +928,67 @@
 		}
 
+		dlg.panelMain.typeButtons.clearSelection();
+		dlg.panelMain.panelChan.catButtons.clearSelection();
+		dlg.panelMain.panelHaz.catButtons.clearSelection();
 		switch (GrpMAP.get(getObject())) {
 		case LAT:
-			dlg.panelMain.chanButton.doClick();
+			dlg.panelMain.chanButton.setSelected(true);
 			switch (getCategory()) {
 			case LAM_PORT:
-				dlg.panelMain.panelChan.portButton.doClick();
+				dlg.panelMain.panelChan.portButton.setSelected(true);
 				break;
 			case LAM_STBD:
-				dlg.panelMain.panelChan.stbdButton.doClick();
+				dlg.panelMain.panelChan.stbdButton.setSelected(true);
 				break;
 			case LAM_PPORT:
-				dlg.panelMain.panelChan.prefPortButton.doClick();
+				dlg.panelMain.panelChan.prefPortButton.setSelected(true);
 				break;
 			case LAM_PSTBD:
-				dlg.panelMain.panelChan.prefStbdButton.doClick();
+				dlg.panelMain.panelChan.prefStbdButton.setSelected(true);
 				break;
 			}
 			break;
 		case SAW:
-			dlg.panelMain.chanButton.doClick();
-			dlg.panelMain.panelChan.safeWaterButton.doClick();
+			dlg.panelMain.chanButton.setSelected(true);
+			dlg.panelMain.panelChan.safeWaterButton.setSelected(true);
 			break;
 		case CAR:
-			dlg.panelMain.hazButton.doClick();
+			dlg.panelMain.hazButton.setSelected(true);
 			switch (getCategory()) {
 			case CAM_NORTH:
-				dlg.panelMain.panelHaz.northButton.doClick();
+				dlg.panelMain.panelHaz.northButton.setSelected(true);
 				break;
 			case CAM_SOUTH:
-				dlg.panelMain.panelHaz.southButton.doClick();
+				dlg.panelMain.panelHaz.southButton.setSelected(true);
 				break;
 			case CAM_EAST:
-				dlg.panelMain.panelHaz.eastButton.doClick();
+				dlg.panelMain.panelHaz.eastButton.setSelected(true);
 				break;
 			case CAM_WEST:
-				dlg.panelMain.panelHaz.westButton.doClick();
+				dlg.panelMain.panelHaz.westButton.setSelected(true);
 				break;
 			}
 			break;
 		case ISD:
-			dlg.panelMain.hazButton.doClick();
-			dlg.panelMain.panelHaz.isolButton.doClick();
+			dlg.panelMain.hazButton.setSelected(true);
+			dlg.panelMain.panelHaz.isolButton.setSelected(true);
 			break;
 		case SPP:
-			dlg.panelMain.specButton.doClick();
+			dlg.panelMain.specButton.setSelected(true);
 			break;
 		case LIT:
 		case SIS:
-			dlg.panelMain.lightsButton.doClick();
+			dlg.panelMain.lightsButton.setSelected(true);
 			break;
 		case FLT:
 			switch (getColour(Ent.FLOAT, 0)) {
 			case RED:
-				dlg.panelMain.chanButton.doClick();
+				dlg.panelMain.chanButton.setSelected(true);
 				if (getColour(Ent.FLOAT, 1) == Col.WHITE)
 					if (getColour(Ent.FLOAT, 2) == Col.RED) {
 						setRegion(Reg.C);
-						dlg.panelMain.panelChan.portButton.doClick();
+						dlg.panelMain.panelChan.portButton.setSelected(true);
 					} else {
-						dlg.panelMain.panelChan.safeWaterButton.doClick();
+						dlg.panelMain.panelChan.safeWaterButton.setSelected(true);
 					}
 				else if (getColour(Ent.FLOAT, 1) == Col.GREEN) {
@@ -954,45 +997,45 @@
 					}
 					if (getRegion().equals("B")) {
-						dlg.panelMain.panelChan.prefStbdButton.doClick();
+						dlg.panelMain.panelChan.prefStbdButton.setSelected(true);
 					} else {
-						dlg.panelMain.panelChan.prefPortButton.doClick();
+						dlg.panelMain.panelChan.prefPortButton.setSelected(true);
 					}
 				} else {
 					if (getRegion().equals("B"))
-						dlg.panelMain.panelChan.stbdButton.doClick();
+						dlg.panelMain.panelChan.stbdButton.setSelected(true);
 					else
-						dlg.panelMain.panelChan.portButton.doClick();
+						dlg.panelMain.panelChan.portButton.setSelected(true);
 				}
 				break;
 			case GREEN:
-				dlg.panelMain.chanButton.doClick();
+				dlg.panelMain.chanButton.setSelected(true);
 				if (getColour(Ent.FLOAT, 1) == Col.RED) {
 					if (getRegion().equals("B")) {
-						dlg.panelMain.panelChan.prefPortButton.doClick();
+						dlg.panelMain.panelChan.prefPortButton.setSelected(true);
 					} else {
-						dlg.panelMain.panelChan.prefStbdButton.doClick();
+						dlg.panelMain.panelChan.prefStbdButton.setSelected(true);
 					}
 				} else if (getColour(Ent.FLOAT, 1) == Col.WHITE) {
 					setRegion(Reg.C);
-					dlg.panelMain.panelChan.stbdButton.doClick();
+					dlg.panelMain.panelChan.stbdButton.setSelected(true);
 				} else {
 					if (getRegion().equals("B")) {
-						dlg.panelMain.panelChan.portButton.doClick();
+						dlg.panelMain.panelChan.portButton.setSelected(true);
 					} else {
-						dlg.panelMain.panelChan.stbdButton.doClick();
+						dlg.panelMain.panelChan.stbdButton.setSelected(true);
 					}
 				}
 				break;
 			case BLACK:
-				dlg.panelMain.hazButton.doClick();
+				dlg.panelMain.hazButton.setSelected(true);
 				switch (getColour(Ent.FLOAT, 1)) {
 				case YELLOW:
 					if (getColour(Ent.FLOAT, 2) == Col.BLACK)
-						dlg.panelMain.panelHaz.eastButton.doClick();
+						dlg.panelMain.panelHaz.eastButton.setSelected(true);
 					else
-						dlg.panelMain.panelHaz.northButton.doClick();
+						dlg.panelMain.panelHaz.northButton.setSelected(true);
 					break;
 				case RED:
-					dlg.panelMain.panelHaz.isolButton.doClick();
+					dlg.panelMain.panelHaz.isolButton.setSelected(true);
 					break;
 				}
@@ -1000,19 +1043,25 @@
 			case YELLOW:
 				if (getColour(Ent.FLOAT, 1) == Col.BLACK) {
-					dlg.panelMain.hazButton.doClick();
+					dlg.panelMain.hazButton.setSelected(true);
 					if (getColour(Ent.FLOAT, 2) == Col.YELLOW)
-						dlg.panelMain.panelHaz.westButton.doClick();
+						dlg.panelMain.panelHaz.westButton.setSelected(true);
 					else
-						dlg.panelMain.panelHaz.southButton.doClick();
+						dlg.panelMain.panelHaz.southButton.setSelected(true);
 				} else {
-					dlg.panelMain.specButton.doClick();
+					dlg.panelMain.specButton.setSelected(true);
 				}
 				break;
 				default:
-					dlg.panelMain.lightsButton.doClick();
-			}
-			break;
-		}
-
+					dlg.panelMain.lightsButton.setSelected(true);
+			}
+			break;
+		}
+		
+		dlg.panelMain.syncButtons();
+		dlg.panelMain.panelChan.syncButtons();
+		dlg.panelMain.panelHaz.syncButtons();
+
+		paintlock = false;
+		paintSign();
 	}
 
