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 24872)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelCol.java	(revision 24873)
@@ -73,6 +73,6 @@
 		button.setToolTipText(tr(tip));
 		button.addActionListener(alColour);
+		colourButtons.add(button);
 		colours.put(col, button);
-		colourButtons.add(button);
 		return button;
 	}
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 24872)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelTop.java	(revision 24873)
@@ -2,25 +2,18 @@
 
 import javax.swing.JPanel;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Rectangle;
-import java.awt.Font;
-
 import javax.swing.BorderFactory;
 import javax.swing.ButtonGroup;
 import javax.swing.ImageIcon;
-import javax.swing.JLabel;
-import javax.swing.JTextField;
-import javax.swing.JComboBox;
-import javax.swing.JCheckBox;
 import javax.swing.JRadioButton;
-import javax.swing.JButton;
+
+import java.awt.Color;
+import java.awt.Rectangle;
+import java.awt.event.ActionListener;
+import java.util.EnumMap;
+import java.util.Iterator;
 
 import oseam.Messages;
 import oseam.dialogs.OSeaMAction;
-
-import java.awt.Cursor;
-import java.awt.event.ActionListener;
+import oseam.seamarks.SeaMark.Top;
 
 public class PanelTop extends JPanel {
@@ -28,5 +21,5 @@
 	private OSeaMAction dlg;
 	public PanelCol panelCol = null;
-	private ButtonGroup topButtons = null;
+	private ButtonGroup topButtons = new ButtonGroup();
 	public JRadioButton noTopButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/NoTopButton.png")));
 	public JRadioButton canTopButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/CanTopButton.png")));
@@ -45,5 +38,18 @@
 	public JRadioButton squareDayButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SquareDayButton.png")));
 	public JRadioButton mooringTopButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/MooringTopButton.png")));
-	ActionListener alTop = null;
+	private EnumMap<Top, JRadioButton> tops = new EnumMap<Top, JRadioButton>(Top.class);
+	private ActionListener alTop = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			Iterator<Top> it = tops.keySet().iterator();
+			while (it.hasNext()) {
+				Top top = it.next();
+				JRadioButton button = tops.get(top);
+				if (button.isSelected()) {
+					button.setBorderPainted(true);
+				} else
+					button.setBorderPainted(false);
+			}
+		}
+	};
 
 	public PanelTop(OSeaMAction dia) {
@@ -53,73 +59,20 @@
 		this.setLayout(null);
 		this.add(panelCol, null);
-		this.add(getButton(noTopButton, 40, 5, 27, 27, "NoTopTip"), null);
-		this.add(getButton(canTopButton, 70, 5, 27, 27, "CanTopTip"), null);
-		this.add(getButton(coneTopButton, 100, 5, 27, 27, "ConeTopTip"), null);
-		this.add(getButton(sphereTopButton, 130, 5, 27, 27, "SphereTopTip"), null);
-		this.add(getButton(XTopButton, 160, 5, 27, 27, "XTopTip"), null);
-		this.add(getButton(northTopButton, 40, 35, 27, 27, "NorthTopTip"), null);
-		this.add(getButton(southTopButton, 70, 35, 27, 27, "SouthTopTip"), null);
-		this.add(getButton(eastTopButton, 100, 35, 27, 27, "EastTopTip"), null);
-		this.add(getButton(westTopButton, 130, 35, 27, 27, "WestTopTip"), null);
-		this.add(getButton(spheres2TopButton, 160, 35, 27, 27, "Spheres2TopTip"), null);
-		this.add(getButton(boardDayButton, 40, 65, 27, 27, "BoardDayTip"), null);
-		this.add(getButton(diamondDayButton, 70, 65, 27, 27, "DiamondDayTip"), null);
-		this.add(getButton(triangleDayButton, 100, 65, 27, 27, "TriangleDayTip"), null);
-		this.add(getButton(triangleInvDayButton, 130, 65, 27, 27, "TriangleInvDayTip"), null);
-		this.add(getButton(squareDayButton, 160, 65, 27, 27, "SquareDayTip"), null);
-		this.add(getButton(mooringTopButton, 40, 95, 27, 27, "MooringTopTip"), null);
-		topButtons = new ButtonGroup();
-		topButtons.add(noTopButton);
-		topButtons.add(canTopButton);
-		topButtons.add(coneTopButton);
-		topButtons.add(sphereTopButton);
-		topButtons.add(XTopButton);
-		topButtons.add(northTopButton);
-		topButtons.add(southTopButton);
-		topButtons.add(eastTopButton);
-		topButtons.add(westTopButton);
-		topButtons.add(spheres2TopButton);
-		topButtons.add(boardDayButton);
-		topButtons.add(diamondDayButton);
-		topButtons.add(triangleDayButton);
-		topButtons.add(triangleInvDayButton);
-		topButtons.add(squareDayButton);
-		topButtons.add(mooringTopButton);
-		alTop = new ActionListener() {
-			public void actionPerformed(java.awt.event.ActionEvent e) {
-				noTopButton.setBorderPainted(noTopButton.isSelected());
-				canTopButton.setBorderPainted(canTopButton.isSelected());
-				coneTopButton.setBorderPainted(coneTopButton.isSelected());
-				sphereTopButton.setBorderPainted(sphereTopButton.isSelected());
-				XTopButton.setBorderPainted(XTopButton.isSelected());
-				northTopButton.setBorderPainted(northTopButton.isSelected());
-				southTopButton.setBorderPainted(southTopButton.isSelected());
-				eastTopButton.setBorderPainted(eastTopButton.isSelected());
-				westTopButton.setBorderPainted(westTopButton.isSelected());
-				spheres2TopButton.setBorderPainted(spheres2TopButton.isSelected());
-				boardDayButton.setBorderPainted(boardDayButton.isSelected());
-				diamondDayButton.setBorderPainted(diamondDayButton.isSelected());
-				triangleDayButton.setBorderPainted(triangleDayButton.isSelected());
-				triangleInvDayButton.setBorderPainted(triangleInvDayButton.isSelected());
-				squareDayButton.setBorderPainted(squareDayButton.isSelected());
-				mooringTopButton.setBorderPainted(mooringTopButton.isSelected());
-			}
-		};
-		noTopButton.addActionListener(alTop);
-		canTopButton.addActionListener(alTop);
-		coneTopButton.addActionListener(alTop);
-		sphereTopButton.addActionListener(alTop);
-		XTopButton.addActionListener(alTop);
-		northTopButton.addActionListener(alTop);
-		southTopButton.addActionListener(alTop);
-		eastTopButton.addActionListener(alTop);
-		westTopButton.addActionListener(alTop);
-		spheres2TopButton.addActionListener(alTop);
-		boardDayButton.addActionListener(alTop);
-		diamondDayButton.addActionListener(alTop);
-		triangleDayButton.addActionListener(alTop);
-		triangleInvDayButton.addActionListener(alTop);
-		squareDayButton.addActionListener(alTop);
-		mooringTopButton.addActionListener(alTop);
+		this.add(getTopButton(noTopButton, 40, 5, 27, 27, "NoTopTip", Top.NONE), null);
+		this.add(getTopButton(canTopButton, 70, 5, 27, 27, "CanTopTip", Top.CAN), null);
+		this.add(getTopButton(coneTopButton, 100, 5, 27, 27, "ConeTopTip", Top.CONE), null);
+		this.add(getTopButton(sphereTopButton, 130, 5, 27, 27, "SphereTopTip", Top.SPHERE), null);
+		this.add(getTopButton(XTopButton, 160, 5, 27, 27, "XTopTip", Top.X_SHAPE), null);
+		this.add(getTopButton(northTopButton, 40, 35, 27, 27, "NorthTopTip", Top.NORTH), null);
+		this.add(getTopButton(southTopButton, 70, 35, 27, 27, "SouthTopTip", Top.SOUTH), null);
+		this.add(getTopButton(eastTopButton, 100, 35, 27, 27, "EastTopTip", Top.EAST), null);
+		this.add(getTopButton(westTopButton, 130, 35, 27, 27, "WestTopTip", Top.WEST), null);
+		this.add(getTopButton(spheres2TopButton, 160, 35, 27, 27, "Spheres2TopTip", Top.SPHERES2), null);
+		this.add(getTopButton(boardDayButton, 40, 65, 27, 27, "BoardDayTip", Top.BOARD), null);
+		this.add(getTopButton(diamondDayButton, 70, 65, 27, 27, "DiamondDayTip", Top.DIAMOND), null);
+		this.add(getTopButton(triangleDayButton, 100, 65, 27, 27, "TriangleDayTip", Top.TRIANGLE), null);
+		this.add(getTopButton(triangleInvDayButton, 130, 65, 27, 27, "TriangleInvDayTip", Top.TRIANGLE_INV), null);
+		this.add(getTopButton(squareDayButton, 160, 65, 27, 27, "SquareDayTip", Top.SQUARE), null);
+		this.add(getTopButton(mooringTopButton, 40, 95, 27, 27, "MooringTopTip", Top.MOORING), null);
 	}
 
@@ -130,8 +83,11 @@
 	}
 
-	private JRadioButton getButton(JRadioButton button, int x, int y, int w, int h, String tip) {
+	private JRadioButton getTopButton(JRadioButton button, int x, int y, int w, int h, String tip, Top top) {
 			button.setBounds(new Rectangle(x, y, w, h));
 			button.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
 			button.setToolTipText(Messages.getString(tip));
+			button.addActionListener(alTop);
+			topButtons.add(button);
+			tops.put(top, button);
 		return button;
 	}
