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 24875)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelChan.java	(revision 24879)
@@ -15,6 +15,5 @@
 import oseam.panels.PanelPort;
 import oseam.panels.PanelStbd;
-import oseam.panels.PanelPrefPort;
-import oseam.panels.PanelPrefStbd;
+import oseam.panels.PanelSaw;
 import oseam.seamarks.SeaMark;
 import oseam.seamarks.SeaMark.Cat;
@@ -50,8 +49,8 @@
 				portButton.setBorderPainted(true);
 				panelPort.setVisible(true);
+				panelPort.perchButton.setVisible(true);
 			} else {
 				portButton.setBorderPainted(false);
 				panelPort.setVisible(false);
-				panelPort.clearSelections();
 			}
 			if (stbdButton.isSelected()) {
@@ -68,8 +67,8 @@
 				stbdButton.setBorderPainted(true);
 				panelStbd.setVisible(true);
+				panelStbd.perchButton.setVisible(true);
 			} else {
 				stbdButton.setBorderPainted(false);
 				panelStbd.setVisible(false);
-				panelStbd.clearSelections();
 			}
 			if (prefPortButton.isSelected()) {
@@ -79,15 +78,15 @@
 				if (dlg.mark.getRegion() == SeaMark.IALA_A) {
 					dlg.mark.setColour(Obj.BODY, Col.RED_GREEN_RED);
-					panelPrefPort.regionAButton.doClick();
+					panelPort.regionAButton.doClick();
 				} else {
 					dlg.mark.setColour(Obj.BODY, Col.GREEN_RED_GREEN);
-					panelPrefPort.regionBButton.doClick();
+					panelPort.regionBButton.doClick();
 				}
 				prefPortButton.setBorderPainted(true);
-				panelPrefPort.setVisible(true);
+				panelPort.setVisible(true);
+				panelPort.perchButton.setVisible(false);
 			} else {
 				prefPortButton.setBorderPainted(false);
-				panelPrefPort.setVisible(false);
-				panelPrefPort.clearSelections();
+				if (!portButton.isSelected()) panelPort.setVisible(false);
 			}
 			if (prefStbdButton.isSelected()) {
@@ -97,15 +96,15 @@
 				if (dlg.mark.getRegion() == SeaMark.IALA_A) {
 					dlg.mark.setColour(Obj.BODY, Col.GREEN_RED_GREEN);
-					panelPrefStbd.regionAButton.doClick();
+					panelStbd.regionAButton.doClick();
 				} else {
 					dlg.mark.setColour(Obj.BODY, Col.RED_GREEN_RED);
-					panelPrefStbd.regionBButton.doClick();
+					panelStbd.regionBButton.doClick();
 				}
 				prefStbdButton.setBorderPainted(true);
-				panelPrefStbd.setVisible(true);
+				panelStbd.setVisible(true);
+				panelStbd.perchButton.setVisible(false);
 			} else {
 				prefStbdButton.setBorderPainted(false);
-				panelPrefStbd.setVisible(false);
-				panelPrefStbd.clearSelections();
+				if (!stbdButton.isSelected()) panelStbd.setVisible(false);
 			}
 			if (safeWaterButton.isSelected()) {
@@ -114,9 +113,8 @@
 				dlg.mark.setColour(Obj.BODY, Col.RED_WHITE);
 				safeWaterButton.setBorderPainted(true);
-				panelSafeWater.setVisible(true);
+				panelSaw.setVisible(true);
 			} else {
 				safeWaterButton.setBorderPainted(false);
-				panelSafeWater.setVisible(false);
-				panelSafeWater.clearSelections();
+				panelSaw.setVisible(false);
 			}
 			if (dlg.mark != null)
@@ -127,7 +125,5 @@
 	public PanelPort panelPort = null;
 	public PanelStbd panelStbd = null;
-	public PanelPrefPort panelPrefPort = null;
-	public PanelPrefStbd panelPrefStbd = null;
-	public PanelSafeWater panelSafeWater = null;
+	public PanelSaw panelSaw = null;
 
 	public PanelChan(OSeaMAction dia) {
@@ -139,19 +135,11 @@
 		panelStbd.setBounds(new Rectangle(55, 0, 225, 160));
 		panelStbd.setVisible(false);
-		panelPrefPort = new PanelPrefPort(dlg);
-		panelPrefPort.setBounds(new Rectangle(55, 0, 225, 160));
-		panelPrefPort.setVisible(false);
-		panelPrefStbd = new PanelPrefStbd(dlg);
-		panelPrefStbd.setBounds(new Rectangle(55, 0, 225, 160));
-		panelPrefStbd.setVisible(false);
-		panelSafeWater = new PanelSafeWater(dlg);
-		panelSafeWater.setBounds(new Rectangle(55, 0, 225, 160));
-		panelSafeWater.setVisible(false);
+		panelSaw = new PanelSaw(dlg);
+		panelSaw.setBounds(new Rectangle(55, 0, 225, 160));
+		panelSaw.setVisible(false);
 		this.setLayout(null);
 		this.add(panelPort, null);
 		this.add(panelStbd, null);
-		this.add(panelPrefPort, null);
-		this.add(panelPrefStbd, null);
-		this.add(panelSafeWater, null);
+		this.add(panelSaw, null);
 		this.add(getCatButton(portButton, 0, 0, 52, 32, "PortTip"), null);
 		this.add(getCatButton(stbdButton, 0, 32, 52, 32, "StbdTip"), null);
@@ -166,7 +154,5 @@
 		panelPort.clearSelections();
 		panelStbd.clearSelections();
-		panelPrefPort.clearSelections();
-		panelPrefStbd.clearSelections();
-		panelSafeWater.clearSelections();
+		panelSaw.clearSelections();
 	}
 
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPrefPort.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPrefPort.java	(revision 24875)
+++ 	(revision )
@@ -1,103 +1,0 @@
-package oseam.panels;
-
-import javax.swing.BorderFactory;
-import javax.swing.JPanel;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Rectangle;
-import java.awt.Font;
-
-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 oseam.Messages;
-import oseam.dialogs.OSeaMAction;
-import oseam.seamarks.SeaMark.Shp;
-
-import java.awt.Cursor;
-import java.awt.event.ActionListener;
-import java.util.EnumMap;
-import java.util.Iterator;
-
-public class PanelPrefPort extends JPanel {
-
-	private OSeaMAction dlg;
-	private ButtonGroup regionButtons = new ButtonGroup();
-	public JRadioButton regionAButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RegionAButton.png")));
-	public JRadioButton regionBButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RegionBButton.png")));
-	private ActionListener alRegion = new ActionListener() {
-		public void actionPerformed(java.awt.event.ActionEvent e) {
-			regionAButton.setBorderPainted(regionAButton.isSelected());
-			regionBButton.setBorderPainted(regionBButton.isSelected());
-			dlg.mark.paintSign();
-		}
-	};
-	private ButtonGroup shapeButtons = new ButtonGroup();
-	public JRadioButton pillarButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PillarButton.png")));
-	public JRadioButton sparButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SparButton.png")));
-	public JRadioButton canButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/CanButton.png")));
-	public JRadioButton floatButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/FloatButton.png")));
-	public JRadioButton beaconButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/BeaconButton.png")));
-	public JRadioButton towerButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/TowerButton.png")));
-	private EnumMap<Shp, JRadioButton> shapes = new EnumMap<Shp, JRadioButton>(Shp.class);
-	private ActionListener alShape = new ActionListener() {
-		public void actionPerformed(java.awt.event.ActionEvent e) {
-			Iterator<Shp> it = shapes.keySet().iterator();
-			while (it.hasNext()) {
-				Shp shp = it.next();
-				JRadioButton button = shapes.get(shp);
-				if (button.isSelected()) {
-					dlg.mark.setShape(shp);
-					button.setBorderPainted(true);
-				} else
-					button.setBorderPainted(false);
-			}
-			if (dlg.mark != null)
-				dlg.mark.paintSign();
-		}
-	};
-
-	public PanelPrefPort(OSeaMAction dia) {
-		dlg = dia;
-		this.setLayout(null);
-		this.add(getRegionButton(regionAButton, 0, 2, 34, 30, "RegionATip"), null);
-		this.add(getRegionButton(regionBButton, 0, 32, 34, 30, "RegionBTip"), null);
-		this.add(getShapeButton(pillarButton, 0, 64, 34, 32, "PillarTip", Shp.PILLAR), null);
-		this.add(getShapeButton(sparButton, 0, 96, 34, 32, "SparTip", Shp.SPAR), null);
-		this.add(getShapeButton(canButton, 0, 128, 34, 32, "CanTip", Shp.CAN), null);
-		this.add(getShapeButton(floatButton, 35, 0, 34, 32, "FloatTip", Shp.FLOAT), null);
-		this.add(getShapeButton(beaconButton, 35, 32, 34, 32, "BeaconTip", Shp.BEACON), null);
-		this.add(getShapeButton(towerButton, 35, 64, 34, 32, "TowerTip", Shp.TOWER), null);
-	}
-
-	public void clearSelections() {
-		shapeButtons.clearSelection();
-		alShape.actionPerformed(null);
-	}
-
-	private JRadioButton getRegionButton(JRadioButton button, int x, int y, int w, int h, String tip) {
-		button.setBounds(new Rectangle(x, y, w, h));
-		button.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-		button.setToolTipText(Messages.getString(tip));
-		button.addActionListener(alRegion);
-		regionButtons.add(button);
-		return button;
-	}
-
-	private JRadioButton getShapeButton(JRadioButton button, int x, int y, int w, int h, String tip, Shp shp) {
-		button.setBounds(new Rectangle(x, y, w, h));
-		button.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-		button.setToolTipText(Messages.getString(tip));
-		button.addActionListener(alShape);
-		shapeButtons.add(button);
-		shapes.put(shp, button);
-		return button;
-	}
-
-}
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPrefStbd.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPrefStbd.java	(revision 24875)
+++ 	(revision )
@@ -1,104 +1,0 @@
-package oseam.panels;
-
-import javax.swing.BorderFactory;
-import javax.swing.JPanel;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Rectangle;
-import java.awt.Font;
-
-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 oseam.Messages;
-import oseam.dialogs.OSeaMAction;
-import oseam.seamarks.SeaMark.Shp;
-
-import java.awt.Cursor;
-import java.awt.event.ActionListener;
-import java.util.EnumMap;
-import java.util.Iterator;
-
-public class PanelPrefStbd extends JPanel {
-
-	private OSeaMAction dlg;
-	private ButtonGroup regionButtons = new ButtonGroup();
-	public JRadioButton regionAButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RegionAButton.png")));
-	public JRadioButton regionBButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/RegionBButton.png")));
-	private ActionListener alRegion = new ActionListener() {
-		public void actionPerformed(java.awt.event.ActionEvent e) {
-			regionAButton.setBorderPainted(regionAButton.isSelected());
-			regionBButton.setBorderPainted(regionBButton.isSelected());
-			dlg.mark.paintSign();
-		}
-	};
-	private ButtonGroup shapeButtons = new ButtonGroup();
-	public JRadioButton pillarButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PillarButton.png")));
-	public JRadioButton sparButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SparButton.png")));
-	public JRadioButton coneButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/ConeButton.png")));
-	public JRadioButton floatButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/FloatButton.png")));
-	public JRadioButton beaconButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/BeaconButton.png")));
-	public JRadioButton towerButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/TowerButton.png")));
-	private EnumMap<Shp, JRadioButton> shapes = new EnumMap<Shp, JRadioButton>(Shp.class);
-	private ActionListener alShape = new ActionListener() {
-		public void actionPerformed(java.awt.event.ActionEvent e) {
-			Iterator<Shp> it = shapes.keySet().iterator();
-			while (it.hasNext()) {
-				Shp shp = it.next();
-				JRadioButton button = shapes.get(shp);
-				if (button.isSelected()) {
-					dlg.mark.setShape(shp);
-					button.setBorderPainted(true);
-				} else
-					button.setBorderPainted(false);
-			}
-			if (dlg.mark != null)
-				dlg.mark.paintSign();
-		}
-	};
-
-	public PanelPrefStbd(OSeaMAction dia) {
-		dlg = dia;
-		this.setLayout(null);
-		this.add(getRegionButton(regionAButton, 0, 2, 34, 30, "RegionATip"), null);
-		this.add(getRegionButton(regionBButton, 0, 32, 34, 30, "RegionBTip"), null);
-		this.add(getShapeButton(pillarButton, 0, 64, 34, 32, "PillarTip", Shp.PILLAR), null);
-		this.add(getShapeButton(sparButton, 0, 96, 34, 32, "SparTip", Shp.SPAR), null);
-		this.add(getShapeButton(coneButton, 0, 128, 34, 32, "ConeTip", Shp.CONE), null);
-		this.add(getShapeButton(floatButton, 35, 0, 34, 32, "FloatTip", Shp.FLOAT), null);
-		this.add(getShapeButton(beaconButton, 35, 32, 34, 32, "BeaconTip", Shp.BEACON), null);
-		this.add(getShapeButton(towerButton, 35, 64, 34, 32, "TowerTip", Shp.TOWER), null);
-
-	}
-
-	public void clearSelections() {
-		shapeButtons.clearSelection();
-		alShape.actionPerformed(null);
-	}
-
-	private JRadioButton getRegionButton(JRadioButton button, int x, int y, int w, int h, String tip) {
-		button.setBounds(new Rectangle(x, y, w, h));
-		button.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-		button.setToolTipText(Messages.getString(tip));
-		button.addActionListener(alRegion);
-		regionButtons.add(button);
-		return button;
-	}
-
-	private JRadioButton getShapeButton(JRadioButton button, int x, int y, int w, int h, String tip, Shp shp) {
-		button.setBounds(new Rectangle(x, y, w, h));
-		button.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-		button.setToolTipText(Messages.getString(tip));
-		button.addActionListener(alShape);
-		shapeButtons.add(button);
-		shapes.put(shp, button);
-		return button;
-	}
-
-}
Index: applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSafeWater.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSafeWater.java	(revision 24875)
+++ 	(revision )
@@ -1,80 +1,0 @@
-package oseam.panels;
-
-import javax.swing.BorderFactory;
-import javax.swing.JPanel;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Rectangle;
-import java.awt.Font;
-
-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 oseam.Messages;
-import oseam.dialogs.OSeaMAction;
-import oseam.seamarks.SeaMark.Shp;
-
-import java.awt.Cursor;
-import java.awt.event.ActionListener;
-import java.util.EnumMap;
-import java.util.Iterator;
-
-public class PanelSafeWater extends JPanel {
-
-	private OSeaMAction dlg;
-	private ButtonGroup shapeButtons = new ButtonGroup();
-	private JRadioButton pillarButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PillarButton.png")));
-	private JRadioButton sparButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SparButton.png")));
-	private JRadioButton sphereButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SphereButton.png")));
-	private JRadioButton barrelButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/BarrelButton.png")));
-	private JRadioButton floatButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/FloatButton.png")));
-	private EnumMap<Shp, JRadioButton> shapes = new EnumMap<Shp, JRadioButton>(Shp.class);
-	private ActionListener alShape = new ActionListener() {
-		public void actionPerformed(java.awt.event.ActionEvent e) {
-			Iterator<Shp> it = shapes.keySet().iterator();
-			while (it.hasNext()) {
-				Shp shp = it.next();
-				JRadioButton button = shapes.get(shp);
-				if (button.isSelected()) {
-					dlg.mark.setShape(shp);
-					button.setBorderPainted(true);
-				} else
-					button.setBorderPainted(false);
-			}
-			if (dlg.mark != null)
-				dlg.mark.paintSign();
-		}
-	};
-
-	public PanelSafeWater(OSeaMAction dia) {
-		dlg = dia;
-		this.setLayout(null);
-		this.add(getShapeButton(pillarButton, 0, 0, 34, 32, "PillarTip", Shp.PILLAR), null);
-		this.add(getShapeButton(sparButton, 0, 32, 34, 32, "SparTip", Shp.SPAR), null);
-		this.add(getShapeButton(sphereButton, 0, 64, 34, 32, "SphereTip", Shp.SPHERE), null);
-		this.add(getShapeButton(barrelButton, 0, 96, 34, 32, "BarrelTip", Shp.BARREL), null);
-		this.add(getShapeButton(floatButton, 0, 128, 34, 32, "FloatTip", Shp.FLOAT), null);
-	}
-
-	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) {
-		button.setBounds(new Rectangle(x, y, w, h));
-		button.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
-		button.setToolTipText(Messages.getString(tip));
-		button.addActionListener(alShape);
-		shapeButtons.add(button);
-		shapes.put(shp, button);
-		return button;
-	}
-
-}
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 24879)
+++ applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSaw.java	(revision 24879)
@@ -0,0 +1,80 @@
+package oseam.panels;
+
+import javax.swing.BorderFactory;
+import javax.swing.JPanel;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Rectangle;
+import java.awt.Font;
+
+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 oseam.Messages;
+import oseam.dialogs.OSeaMAction;
+import oseam.seamarks.SeaMark.Shp;
+
+import java.awt.Cursor;
+import java.awt.event.ActionListener;
+import java.util.EnumMap;
+import java.util.Iterator;
+
+public class PanelSaw extends JPanel {
+
+	private OSeaMAction dlg;
+	private ButtonGroup shapeButtons = new ButtonGroup();
+	private JRadioButton pillarButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/PillarButton.png")));
+	private JRadioButton sparButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SparButton.png")));
+	private JRadioButton sphereButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SphereButton.png")));
+	private JRadioButton barrelButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/BarrelButton.png")));
+	private JRadioButton floatButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/FloatButton.png")));
+	private EnumMap<Shp, JRadioButton> shapes = new EnumMap<Shp, JRadioButton>(Shp.class);
+	private ActionListener alShape = new ActionListener() {
+		public void actionPerformed(java.awt.event.ActionEvent e) {
+			Iterator<Shp> it = shapes.keySet().iterator();
+			while (it.hasNext()) {
+				Shp shp = it.next();
+				JRadioButton button = shapes.get(shp);
+				if (button.isSelected()) {
+					dlg.mark.setShape(shp);
+					button.setBorderPainted(true);
+				} else
+					button.setBorderPainted(false);
+			}
+			if (dlg.mark != null)
+				dlg.mark.paintSign();
+		}
+	};
+
+	public PanelSaw(OSeaMAction dia) {
+		dlg = dia;
+		this.setLayout(null);
+		this.add(getShapeButton(pillarButton, 0, 0, 34, 32, "PillarTip", Shp.PILLAR), null);
+		this.add(getShapeButton(sparButton, 0, 32, 34, 32, "SparTip", Shp.SPAR), null);
+		this.add(getShapeButton(sphereButton, 0, 64, 34, 32, "SphereTip", Shp.SPHERE), null);
+		this.add(getShapeButton(barrelButton, 0, 96, 34, 32, "BarrelTip", Shp.BARREL), null);
+		this.add(getShapeButton(floatButton, 0, 128, 34, 32, "FloatTip", Shp.FLOAT), null);
+	}
+
+	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) {
+		button.setBounds(new Rectangle(x, y, w, h));
+		button.setBorder(BorderFactory.createLineBorder(Color.magenta, 2));
+		button.setToolTipText(Messages.getString(tip));
+		button.addActionListener(alShape);
+		shapeButtons.add(button);
+		shapes.put(shp, button);
+		return button;
+	}
+
+}
