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 27188)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/dialogs/OSeaMAction.java	(revision 27189)
@@ -37,4 +37,6 @@
 							node = nextNode;
 							mark = new SeaMark(dlg);
+							mark.setBounds(new Rectangle(235, 0, 165, 160));
+							panelMain.add(mark, 0);
 							mark.parseMark(node);
 						}
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 27188)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelChan.java	(revision 27189)
@@ -108,5 +108,4 @@
 			lightButton.setVisible(dlg.mark.testValid());
 			alLit.actionPerformed(null);
-			dlg.mark.paintSign();
 		}
 	};
@@ -169,5 +168,4 @@
 			}
 			dlg.panelMain.panelTop.syncPanel();
-			dlg.mark.paintSign();
 		}
 	};
@@ -214,5 +212,4 @@
 			}
 			dlg.panelMain.panelLit.syncPanel();
-			dlg.mark.paintSign();
 		}
 	};
@@ -245,5 +242,5 @@
 		topmarkButton.setVisible(false);
 		this.add(topmarkButton);
-		lightButton.setBounds(new Rectangle(165, 0, 34, 32));
+		lightButton.setBounds(new Rectangle(130, 32, 34, 32));
 		lightButton.setToolTipText(Messages.getString("Light"));
 		lightButton.setBorder(BorderFactory.createLoweredBevelBorder());
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 27188)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelChr.java	(revision 27189)
@@ -65,5 +65,4 @@
 			}
 			dlg.mark.setLightAtt(Att.CHR, 0, charBox.getText());
-			dlg.mark.paintSign();
 		}
 	};
@@ -89,5 +88,4 @@
 				}
 			}
-			dlg.mark.paintSign();
 		}
 	};
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 27188)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelCol.java	(revision 27189)
@@ -58,5 +58,4 @@
 							syncPanel();
 						}
-						dlg.mark.paintSign();
 				} else {
 					button.setBorderPainted(false);
@@ -80,5 +79,4 @@
 				}
 			}
-			dlg.mark.paintSign();
 		}
 	};
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 27188)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelFog.java	(revision 27189)
@@ -35,5 +35,4 @@
 					button.setBorderPainted(false);
 			}
-			dlg.mark.paintSign();
 		}
 	};
@@ -43,5 +42,4 @@
 		public void actionPerformed(java.awt.event.ActionEvent e) {
 			dlg.mark.setFogGroup(groupBox.getText());
-			dlg.mark.paintSign();
 		}
 	};
@@ -51,5 +49,4 @@
 		public void actionPerformed(java.awt.event.ActionEvent e) {
 			dlg.mark.setFogPeriod(periodBox.getText());
-			dlg.mark.paintSign();
 		}
 	};
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 27188)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelHaz.java	(revision 27189)
@@ -71,5 +71,4 @@
 			alLit.actionPerformed(null);
 			dlg.panelMain.panelMore.syncPanel();
-			dlg.mark.paintSign();
 		}
 	};
@@ -102,5 +101,4 @@
 			topmarkButton.setVisible(dlg.mark.testValid());
 			lightButton.setVisible(dlg.mark.testValid());
-			dlg.mark.paintSign();
 		}
 	};
@@ -136,5 +134,4 @@
 			}
 			dlg.panelMain.panelTop.syncPanel();
-			dlg.mark.paintSign();
 		}
 	};
@@ -172,5 +169,4 @@
 			}
 			dlg.panelMain.panelLit.syncPanel();
-			dlg.mark.paintSign();
 		}
 	};
@@ -200,5 +196,5 @@
 		topmarkButton.setVisible(false);
 		this.add(topmarkButton);
-		lightButton.setBounds(new Rectangle(165, 0, 34, 32));
+		lightButton.setBounds(new Rectangle(130, 32, 34, 32));
 		lightButton.setToolTipText(Messages.getString("Light"));
 		lightButton.setBorder(BorderFactory.createLoweredBevelBorder());
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 27188)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLights.java	(revision 27189)
@@ -27,5 +27,4 @@
 					dlg.mark.setCategory(cat);
 					dlg.mark.testValid();
-					dlg.mark.paintSign();
 				}
 			}
@@ -41,5 +40,4 @@
 					dlg.mark.setCategory(cat);
 					dlg.mark.testValid();
-					dlg.mark.paintSign();
 				}
 			}
@@ -55,5 +53,4 @@
 					dlg.mark.setCategory(cat);
 					dlg.mark.testValid();
-					dlg.mark.paintSign();
 				}
 			}
@@ -111,5 +108,4 @@
 			}
 			dlg.mark.testValid();
-			dlg.mark.paintSign();
 		}
 	};
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 27188)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelLit.java	(revision 27189)
@@ -22,5 +22,4 @@
 		public void actionPerformed(java.awt.event.ActionEvent e) {
 			dlg.mark.setLightAtt(Att.GRP, 0, groupBox.getText());
-			dlg.mark.paintSign();
 		}
 	};
@@ -30,5 +29,4 @@
 		public void actionPerformed(java.awt.event.ActionEvent e) {
 			dlg.mark.setLightAtt(Att.PER, 0, periodBox.getText());
-			dlg.mark.paintSign();
 		}
 	};
@@ -38,5 +36,4 @@
 		public void actionPerformed(java.awt.event.ActionEvent e) {
 			dlg.mark.setLightAtt(Att.SEQ, 0, sequenceBox.getText());
-			dlg.mark.paintSign();
 		}
 	};
@@ -58,5 +55,4 @@
 		public void actionPerformed(java.awt.event.ActionEvent e) {
 			dlg.mark.setLightAtt(Att.HGT, 0, heightBox.getText());
-			dlg.mark.paintSign();
 		}
 	};
@@ -66,5 +62,4 @@
 		public void actionPerformed(java.awt.event.ActionEvent e) {
 			dlg.mark.setLightAtt(Att.RNG, 0, rangeBox.getText());
-			dlg.mark.paintSign();
 		}
 	};
@@ -81,5 +76,4 @@
 		public void actionPerformed(java.awt.event.ActionEvent e) {
 			dlg.mark.setLightAtt(Att.MLT, 0, multipleBox.getText());
-			dlg.mark.paintSign();
 		}
 	};
@@ -118,5 +112,4 @@
 				multipleBox.setVisible(false);
 			}
-			dlg.mark.paintSign();
 		}
 	};
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 27188)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMain.java	(revision 27189)
@@ -23,13 +23,4 @@
 	public PanelRadar panelRadar = null;
 	public PanelLit panelLit = null;
-	public JLabel shapeIcon = null;
-	public JLabel lightIcon = null;
-	public JLabel topIcon = null;
-	public JLabel radarIcon = null;
-	public JLabel radarLabel = null;
-	public JLabel fogIcon = null;
-	public JLabel fogLabel = null;
-	public JLabel colLabel = null;
-	public JLabel litLabel = null;
 	public JLabel nameLabel = null;
 	public JTextField nameBox = null;
@@ -172,14 +163,14 @@
 		dlg = dia;
 		panelChan = new PanelChan(dlg);
-		panelChan.setBounds(new Rectangle(65, 0, 200, 160));
+		panelChan.setBounds(new Rectangle(65, 0, 185, 160));
 		panelChan.setVisible(false);
 		panelHaz = new PanelHaz(dlg);
-		panelHaz.setBounds(new Rectangle(65, 0, 200, 160));
+		panelHaz.setBounds(new Rectangle(65, 0, 185, 160));
 		panelHaz.setVisible(false);
 		panelSpec = new PanelSpec(dlg);
-		panelSpec.setBounds(new Rectangle(65, 0, 200, 160));
+		panelSpec.setBounds(new Rectangle(65, 0, 185, 160));
 		panelSpec.setVisible(false);
 		panelLights = new PanelLights(dlg);
-		panelLights.setBounds(new Rectangle(65, 0, 200, 160));
+		panelLights.setBounds(new Rectangle(65, 0, 185, 160));
 		panelLights.setVisible(false);
 		panelMore = new PanelMore(dlg);
@@ -198,32 +189,4 @@
 		panelLit.setBounds(new Rectangle(40, 165, 360, 160));
 		panelLit.setVisible(false);
-
-		shapeIcon = new JLabel();
-		shapeIcon.setBounds(new Rectangle(235, 0, 150, 185));
-		this.add(shapeIcon, null);
-		lightIcon = new JLabel();
-		lightIcon.setBounds(new Rectangle(235, 0, 150, 185));
-		this.add(lightIcon, null);
-		topIcon = new JLabel();
-		topIcon.setBounds(new Rectangle(235, 0, 150, 185));
-		this.add(topIcon, null);
-		radarIcon = new JLabel();
-		radarIcon.setBounds(new Rectangle(235, 0, 150, 185));
-		this.add(radarIcon, null);
-		fogIcon = new JLabel();
-		fogIcon.setBounds(new Rectangle(235, 0, 150, 185));
-		this.add(fogIcon, null);
-		radarLabel = new JLabel("", SwingConstants.CENTER);
-		litLabel = new JLabel("", SwingConstants.CENTER);
-		litLabel.setBounds(new Rectangle(210, 35, 100, 20));
-		this.add(litLabel, null);
-		radarLabel.setBounds(new Rectangle(210, 55, 100, 20));
-		this.add(radarLabel, null);
-		fogLabel = new JLabel("", SwingConstants.CENTER);
-		fogLabel.setBounds(new Rectangle(210, 75, 100, 20));
-		this.add(fogLabel, null);
-		colLabel = new JLabel("", SwingConstants.CENTER);
-		colLabel.setBounds(new Rectangle(235, 100, 150, 20));
-		this.add(colLabel, null);
 
 		this.add(getButton(chanButton, 0, 0, 62, 40, "Chan"), null);
@@ -281,5 +244,5 @@
 
 		moreButton = new JButton();
-		moreButton.setBounds(new Rectangle(350, 145, 40, 15));
+		moreButton.setBounds(new Rectangle(190, 145, 40, 15));
 		moreButton.setMargin(new Insets(0, 0, 0, 0));
 		moreButton.setText("v v v");
@@ -321,13 +284,4 @@
 		panelRadar.setVisible(false);
 		panelLit.setVisible(false);
-		radarLabel.setText("");
-		fogLabel.setText("");
-		colLabel.setText("");
-		litLabel.setText("");
-		shapeIcon.setIcon(null);
-		lightIcon.setIcon(null);
-		topIcon.setIcon(null);
-		radarIcon.setIcon(null);
-		fogIcon.setIcon(null);
 		nameBox.setEnabled(false);
 		if (dlg.mark != 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 27188)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelMore.java	(revision 27189)
@@ -40,5 +40,5 @@
 	private ActionListener alHeight = new ActionListener() {
 		public void actionPerformed(java.awt.event.ActionEvent e) {
-			dlg.mark.setHeight(heightBox.getText());
+			dlg.mark.setObjectHeight(heightBox.getText());
 		}
 	};
@@ -307,5 +307,5 @@
 		regionCButton.setBorderPainted(dlg.mark.getRegion() == Reg.C);
 		elevBox.setText(dlg.mark.getElevation());
-		heightBox.setText(dlg.mark.getHeight());
+		heightBox.setText(dlg.mark.getObjectHeight());
 		sourceBox.setText(dlg.mark.getSource());
 		infoBox.setText(dlg.mark.getInfo());
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 27188)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelPort.java	(revision 27189)
@@ -84,5 +84,4 @@
 				dlg.panelMain.panelChan.lightButton.setVisible(false);
 			}
-			dlg.mark.paintSign();
 		}
 	};
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 27188)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelRadar.java	(revision 27189)
@@ -31,5 +31,4 @@
 			}
 			syncPanel();
-			dlg.mark.paintSign();
 		}
 	};
@@ -39,5 +38,4 @@
 		public void actionPerformed(java.awt.event.ActionEvent e) {
 			dlg.mark.setRaconGroup(groupBox.getText());
-			dlg.mark.paintSign();
 		}
 	};
@@ -47,5 +45,4 @@
 		public void actionPerformed(java.awt.event.ActionEvent e) {
 			dlg.mark.setRaconPeriod(periodBox.getText());
-			dlg.mark.paintSign();
 		}
 	};
@@ -55,5 +52,4 @@
 		public void actionPerformed(java.awt.event.ActionEvent e) {
 			dlg.mark.setRaconSequence(seqBox.getText());
-			dlg.mark.paintSign();
 		}
 	};
@@ -63,5 +59,4 @@
 		public void actionPerformed(java.awt.event.ActionEvent e) {
 			dlg.mark.setRaconRange(rangeBox.getText());
-			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 27188)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSaw.java	(revision 27189)
@@ -42,5 +42,4 @@
 			}
 			dlg.panelMain.panelMore.syncPanel();
-			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 27188)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelSpec.java	(revision 27189)
@@ -63,5 +63,4 @@
 			topmarkButton.setVisible(dlg.mark.testValid());
 			dlg.panelMain.panelMore.syncPanel();
-			dlg.mark.paintSign();
 		}
 	};
@@ -81,5 +80,4 @@
 			}
 			dlg.panelMain.panelTop.syncPanel();
-			dlg.mark.paintSign();
 		}
 	};
@@ -90,21 +88,21 @@
 		this.setLayout(null);
 		this.add(getShapeButton(pillarButton, 0, 0, 34, 32, "Pillar", Shp.PILLAR, Obj.BOYSPP), null);
-		this.add(getShapeButton(sparButton, 35, 0, 34, 32, "Spar", Shp.SPAR, Obj.BOYSPP), null);
-		this.add(getShapeButton(canButton, 70, 0, 34, 32, "Can", Shp.CAN, Obj.BOYSPP), null);
-		this.add(getShapeButton(coneButton, 105, 0, 34, 32, "Cone", Shp.CONE, Obj.BOYSPP), null);
+		this.add(getShapeButton(sparButton, 34, 0, 34, 32, "Spar", Shp.SPAR, Obj.BOYSPP), null);
+		this.add(getShapeButton(canButton, 68, 0, 34, 32, "Can", Shp.CAN, Obj.BOYSPP), null);
+		this.add(getShapeButton(coneButton, 102, 0, 34, 32, "Cone", Shp.CONE, Obj.BOYSPP), null);
 		this.add(getShapeButton(sphereButton, 0, 32, 34, 32, "Sphere", Shp.SPHERE, Obj.BOYSPP), null);
-		this.add(getShapeButton(barrelButton, 35, 32, 34, 32, "Barrel", Shp.BARREL, Obj.BOYSPP), null);
-		this.add(getShapeButton(superButton, 70, 32, 34, 32, "Super", Shp.SUPER, Obj.BOYSPP), null);
-		this.add(getShapeButton(floatButton, 105, 32, 34, 32, "Float", Shp.FLOAT, Obj.LITFLT), null);
+		this.add(getShapeButton(barrelButton, 34, 32, 34, 32, "Barrel", Shp.BARREL, Obj.BOYSPP), null);
+		this.add(getShapeButton(superButton, 68, 32, 34, 32, "Super", Shp.SUPER, Obj.BOYSPP), null);
+		this.add(getShapeButton(floatButton, 102, 32, 34, 32, "Float", Shp.FLOAT, Obj.LITFLT), null);
 		this.add(getShapeButton(beaconButton, 0, 64, 34, 32, "Beacon", Shp.BEACON, Obj.BCNSPP), null);
-		this.add(getShapeButton(towerButton, 35, 64, 34, 32, "TowerB", Shp.TOWER, Obj.BCNSPP), null);
-		this.add(getShapeButton(stakeButton, 70, 64, 34, 32, "Stake", Shp.STAKE, Obj.BCNSPP), null);
-		this.add(getShapeButton(cairnButton, 105, 64, 34, 32, "CairnB", Shp.CAIRN, Obj.BCNSPP), null);
+		this.add(getShapeButton(towerButton, 34, 64, 34, 32, "TowerB", Shp.TOWER, Obj.BCNSPP), null);
+		this.add(getShapeButton(stakeButton, 68, 64, 34, 32, "Stake", Shp.STAKE, Obj.BCNSPP), null);
+		this.add(getShapeButton(cairnButton, 102, 64, 34, 32, "CairnB", Shp.CAIRN, Obj.BCNSPP), null);
 
 		categoryLabel = new JLabel(Messages.getString("Category"), SwingConstants.CENTER);
-		categoryLabel.setBounds(new Rectangle(5, 100, 170, 20));
+		categoryLabel.setBounds(new Rectangle(5, 100, 160, 20));
 		this.add(categoryLabel, null);
 		categoryBox = new JComboBox();
-		categoryBox.setBounds(new Rectangle(5, 120, 170, 20));
+		categoryBox.setBounds(new Rectangle(5, 120, 160, 20));
 		this.add(categoryBox, null);
 		categoryBox.addActionListener(alCategoryBox);
@@ -128,5 +126,5 @@
 		addCatItem(Messages.getString("Anchorage"), Cat.SPM_ANCH);
 
-		topmarkButton.setBounds(new Rectangle(140, 0, 34, 32));
+		topmarkButton.setBounds(new Rectangle(136, 0, 34, 32));
 		topmarkButton.setBorder(BorderFactory.createLoweredBevelBorder());
 		topmarkButton.addActionListener(alTop);
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 27188)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelStbd.java	(revision 27189)
@@ -84,5 +84,4 @@
 				dlg.panelMain.panelChan.lightButton.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 27188)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/panels/PanelTop.java	(revision 27189)
@@ -45,5 +45,4 @@
 			}
 			mooringTopButton.setBorderPainted(mooringTopButton.isSelected());
-			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 27188)
+++ /applications/editors/josm/plugins/smed/plugs/oseam/src/oseam/seamarks/SeaMark.java	(revision 27189)
@@ -1,6 +1,9 @@
 package oseam.seamarks;
 
+import javax.swing.*;
+
 import java.awt.*;
-import javax.swing.*;
+import java.awt.geom.Arc2D;
+
 import java.util.*;
 
@@ -12,5 +15,5 @@
 import oseam.dialogs.OSeaMAction;
 
-public class SeaMark {
+public class SeaMark extends JPanel {
 
 	public OSeaMAction dlg = null;
@@ -51,4 +54,5 @@
 	public void setName(String str) {
 		name = str.trim();
+		repaint();
 	}
 
@@ -97,4 +101,5 @@
 	public void setObject(Obj obj) {
 		object = obj;
+		repaint();
 	}
 
@@ -266,4 +271,5 @@
 	public void setCategory(Cat cat) {
 		category = cat;
+		repaint();
 	}
 
@@ -299,4 +305,5 @@
 	public void setShape(Shp shp) {
 		shape = shp;
+		repaint();
 	}
 
@@ -387,4 +394,5 @@
 		bodyColour.clear();
 		bodyColour.add(col);
+		repaint();
 	}
 
@@ -392,4 +400,5 @@
 		if (bodyColour.size() > i)
 			bodyColour.set(i, col);
+		repaint();
 	}
 
@@ -420,4 +429,5 @@
 		topmarkColour.clear();
 		topmarkColour.add(col);
+		repaint();
 	}
 
@@ -425,4 +435,5 @@
 		if (topmarkColour.size() > i)
 			topmarkColour.set(i, col);
+		repaint();
 	}
 
@@ -583,4 +594,5 @@
 				sectors.get(i)[att] = obj;
 			}
+		repaint();
 	}
 
@@ -689,4 +701,5 @@
 	public void setTopmark(Top top) {
 		topShape = top;
+		repaint();
 	}
 
@@ -710,4 +723,5 @@
 	public void setRadar(Rtb type) {
 		RaType = type;
+		repaint();
 	}
 
@@ -720,4 +734,5 @@
 	public void setRaconGroup(String grp) {
 		raconGroup = grp;
+		repaint();
 	}
 
@@ -730,4 +745,5 @@
 	public void setRaconSequence(String seq) {
 		raconSequence = seq;
+		repaint();
 	}
 
@@ -740,4 +756,5 @@
 	public void setRaconPeriod(String per) {
 		raconPeriod = validDecimal(per);
+		repaint();
 	}
 
@@ -750,4 +767,5 @@
 	public void setRaconRange(String rng) {
 		raconRange = validDecimal(rng);
+		repaint();
 	}
 
@@ -760,4 +778,5 @@
 	public void setRaconSector1(String sec) {
 		raconSector1 = validDecimal(sec);
+		repaint();
 	}
 
@@ -770,4 +789,5 @@
 	public void setRaconSector2(String sec) {
 		raconSector2 = validDecimal(sec);
+		repaint();
 	}
 
@@ -796,4 +816,5 @@
 	public void setFogSound(Fog sound) {
 		fogSound = sound;
+		repaint();
 	}
 
@@ -806,4 +827,5 @@
 	public void setFogGroup(String grp) {
 		fogGroup = grp;
+		repaint();
 	}
 
@@ -816,4 +838,5 @@
 	public void setFogSequence(String seq) {
 		fogSequence = seq;
+		repaint();
 	}
 
@@ -826,4 +849,5 @@
 	public void setFogRange(String rng) {
 		fogRange = validDecimal(rng);
+		repaint();
 	}
 
@@ -836,4 +860,5 @@
 	public void setFogPeriod(String per) {
 		fogPeriod = validDecimal(per);
+		repaint();
 	}
 
@@ -964,9 +989,9 @@
 	public String height = "";
 
-	public String getHeight() {
+	public String getObjectHeight() {
 		return height;
 	}
 
-	public void setHeight(String str) {
+	public void setObjectHeight(String str) {
 		height = validDecimal(str);
 	}
@@ -1087,5 +1112,4 @@
 		dlg.panelMain.panelMore.syncPanel();
 		dlg.panelMain.panelMore.setVisible(false);
-		paintSign();
 	}
 
@@ -1112,8 +1136,5 @@
 	}
 
-	private boolean paintlock = false;
-
 	public void parseMark(Node node) {
-		paintlock = true;
 		dlg.manager.showVisualMessage("");
 		String str = Main.pref.get("smedplugin.IALA");
@@ -1224,5 +1245,5 @@
 
 			if (keys.containsKey("seamark:" + ObjSTR.get(obj) + ":height")) {
-				setHeight(keys.get("seamark:" + ObjSTR.get(obj) + ":height"));
+				setObjectHeight(keys.get("seamark:" + ObjSTR.get(obj) + ":height"));
 			}
 			if (keys.containsKey("seamark:" + ObjSTR.get(obj) + ":elevation")) {
@@ -1532,5 +1553,5 @@
 		}
 		if (keys.containsKey("seamark:height")) {
-			setHeight(keys.get("seamark:height"));
+			setObjectHeight(keys.get("seamark:height"));
 		}
 		if (keys.containsKey("seamark:elevation")) {
@@ -1592,24 +1613,12 @@
 		dlg.panelMain.syncPanel();
 
-		paintlock = false;
-		paintSign();
-	}
-
-	public void paintSign() {
-
-		if (paintlock)
-			return;
-
-		dlg.panelMain.shapeIcon.setIcon(null);
-		dlg.panelMain.litLabel.setText("");
-		dlg.panelMain.colLabel.setText("");
-		dlg.panelMain.radarLabel.setText("");
-		dlg.panelMain.fogLabel.setText("");
-		dlg.panelMain.topIcon.setIcon(null);
-		dlg.panelMain.fogIcon.setIcon(null);
-		dlg.panelMain.radarIcon.setIcon(null);
-		dlg.panelMain.lightIcon.setIcon(null);
-
-		String colStr;
+	}
+
+	public void paintComponent(Graphics g) {
+		super.paintComponent(g);
+		
+    Graphics2D g2 = (Graphics2D) g;
+
+    String colStr;
 		String lblStr;
 		String imgStr = "/images/";
@@ -1732,13 +1741,10 @@
 						System.out.println("Missing image: " + imgStr);
 					} else {
-						dlg.panelMain.shapeIcon.setIcon(new ImageIcon(getClass()
-								.getResource(imgStr)));
-						dlg.panelMain.colLabel.setText(lblStr);
+						g.drawImage(new ImageIcon(getClass().getResource(imgStr)).getImage(), 7, -15, null);
+						g.drawString(lblStr, 75, 110);
 					}
 				} else {
-					dlg.panelMain.shapeIcon.setIcon(new ImageIcon(getClass().getResource(colStr)));
-				}
-			} else {
-				dlg.panelMain.shapeIcon.setIcon(null);
+					g.drawImage(new ImageIcon(getClass().getResource(colStr)).getImage(), 7, -15, null);
+				}
 			}
 		} else if (getObject() != Obj.UNKNOWN) {
@@ -1805,8 +1811,6 @@
 					System.out.println("Missing image: " + imgStr);
 				} else {
-					dlg.panelMain.shapeIcon.setIcon(new ImageIcon(getClass().getResource(imgStr)));
-				}
-			} else {
-				dlg.panelMain.shapeIcon.setIcon(null);
+					g.drawImage(new ImageIcon(getClass().getResource(imgStr)).getImage(), 7, -15, null);
+				}
 			}
 		}
@@ -1914,15 +1918,94 @@
 					return;
 				} else {
-					dlg.panelMain.topIcon.setIcon(new ImageIcon(getClass().getResource(imgStr)));
+					g.drawImage(new ImageIcon(getClass().getResource(imgStr)).getImage(), 7, -15, null);
 				}
 			} else {
-				dlg.panelMain.topIcon.setIcon(new ImageIcon(getClass().getResource(colStr)));
-			}
-		} else {
-			dlg.panelMain.topIcon.setIcon(null);
+				g.drawImage(new ImageIcon(getClass().getResource(colStr)).getImage(), 7, -15, null);
+			}
+		}
+
+		for (int i = 1; i < sectors.size(); i++) {
+	    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+	    g2.setPaint(ColMAP.get(getLightAtt(Att.COL, i)));
+	    g2.setStroke(new BasicStroke(6.0f));
+	    if (!((String)getLightAtt(Att.BEG, i)).isEmpty() && !((String)getLightAtt(Att.END, i)).isEmpty()) {
+	    	Double a0 = 270 - Double.parseDouble((String)getLightAtt(Att.BEG, i));
+	    	Double da = 270 - Double.parseDouble((String)getLightAtt(Att.END, i)) - a0;
+	    	da -= da > 0 ? 360 : 0; 
+	    	g2.draw(new Arc2D.Double(12, 15, 140, 140, a0, da, Arc2D.OPEN));
+	    }
+		}
+    g2.setPaint(Color.BLACK);
+		if (getLightAtt(Att.COL, 0) != Col.UNKNOWN) {
+			if (sectors.size() == 1) {
+				switch ((Col) getLightAtt(Att.COL, 0)) {
+				case RED:
+					g.drawImage(new ImageIcon(getClass().getResource("/images/Light_Red_120.png")).getImage(), 7, -15, null);
+					break;
+				case GREEN:
+					g.drawImage(new ImageIcon(getClass().getResource("/images/Light_Green_120.png")).getImage(), 7, -15, null);
+					break;
+				case WHITE:
+				case YELLOW:
+					g.drawImage(new ImageIcon(getClass().getResource("/images/Light_White_120.png")).getImage(), 7, -15, null);
+					break;
+				default:
+					g.drawImage(new ImageIcon(getClass().getResource("/images/Light_Magenta_120.png")).getImage(), 7, -15, null);
+				}
+			}
+			String c = (String) dlg.mark.getLightAtt(Att.CHR, 0);
+			String tmp = "";
+			if (c.contains("+")) {
+				int i1 = c.indexOf("+");
+				tmp = c.substring(i1, c.length());
+				c = c.substring(0, i1);
+				if (!((String) getLightAtt(Att.GRP, 0)).isEmpty()) {
+					c += "(" + (String) getLightAtt(Att.GRP, 0) + ")";
+				}
+				if (tmp != null)
+					c += tmp;
+			} else if (!((String) getLightAtt(Att.GRP, 0)).isEmpty())
+				c += "(" + (String) getLightAtt(Att.GRP, 0) + ")";
+			switch ((Col) getLightAtt(Att.COL, 0)) {
+			case RED:
+				c += ".R";
+				break;
+			case GREEN:
+				c += ".G";
+				break;
+			case AMBER:
+				c += ".Am";
+				break;
+			case ORANGE:
+				c += ".Or";
+				break;
+			case BLUE:
+				c += ".Bu";
+				break;
+			case VIOLET:
+				c += ".Vi";
+				break;
+			}
+			tmp = (String) getLightAtt(Att.MLT, 0);
+			if (!tmp.isEmpty())
+				c = tmp + c;
+			if (dlg.mark.getLightAtt(Att.LIT, 0) != Lit.UNKNOWN) {
+				switch ((Lit)dlg.mark.getLightAtt(Att.LIT, 0)) {
+				case VERT:
+					c += "(Vert)";
+					break;
+				case HORIZ:
+						c += "(Horiz)";
+						break;
+				}
+			}
+			tmp = (String) getLightAtt(Att.PER, 0);
+			if (!tmp.isEmpty())
+				c += " " + tmp + "s";
+			g.drawString(c, 100, 70);
 		}
 
 		if (getFogSound() != Fog.NONE) {
-			dlg.panelMain.fogIcon.setIcon(new ImageIcon(getClass().getResource("/images/Fog_Signal.png")));
+			g.drawImage(new ImageIcon(getClass().getResource("/images/Fog_Signal.png")).getImage(), 7, -15, null);
 			String str = "";
 			if (getFogSound() != Fog.UNKNOWN)
@@ -1956,12 +2039,12 @@
 			if (!getFogPeriod().isEmpty())
 				str += getFogPeriod() + "s";
-			dlg.panelMain.fogLabel.setText(str);
+			g.drawString(str, 0, 70);
 		}
 
 		if (RaType != Rtb.NONE) {
 			if (getRadar() == Rtb.REFLECTOR) {
-				dlg.panelMain.radarIcon.setIcon(new ImageIcon(getClass().getResource("/images/Radar_Reflector_355.png")));
+				g.drawImage(new ImageIcon(getClass().getResource("/images/Radar_Reflector_355.png")).getImage(), 7, -15, null);
 			} else {
-				dlg.panelMain.radarIcon.setIcon(new ImageIcon(getClass().getResource("/images/Radar_Station.png")));
+				g.drawImage(new ImageIcon(getClass().getResource("/images/Radar_Station.png")).getImage(), 7, -15, null);
 				String str = "";
 				if (getRadar() == Rtb.RAMARK)
@@ -1975,78 +2058,8 @@
 				if (!getRaconPeriod().isEmpty())
 					str += getRaconPeriod() + "s";
-				dlg.panelMain.radarLabel.setText(str);
-			}
-		}
-
-		if (getLightAtt(Att.COL, 0) != Col.UNKNOWN) {
-			if (sectors.size() == 1) {
-				switch ((Col) getLightAtt(Att.COL, 0)) {
-				case RED:
-					dlg.panelMain.lightIcon.setIcon(new ImageIcon(getClass().getResource("/images/Light_Red_120.png")));
-					break;
-				case GREEN:
-					dlg.panelMain.lightIcon.setIcon(new ImageIcon(getClass().getResource("/images/Light_Green_120.png")));
-					break;
-				case WHITE:
-				case YELLOW:
-					dlg.panelMain.lightIcon.setIcon(new ImageIcon(getClass().getResource("/images/Light_White_120.png")));
-					break;
-				default:
-					dlg.panelMain.lightIcon.setIcon(new ImageIcon(getClass().getResource("/images/Light_Magenta_120.png")));
-				}
-			}
-			String c = (String) dlg.mark.getLightAtt(Att.CHR, 0);
-			String tmp = "";
-			if (c.contains("+")) {
-				int i1 = c.indexOf("+");
-				tmp = c.substring(i1, c.length());
-				c = c.substring(0, i1);
-				if (!((String) getLightAtt(Att.GRP, 0)).isEmpty()) {
-					c += "(" + (String) getLightAtt(Att.GRP, 0) + ")";
-				}
-				if (tmp != null)
-					c += tmp;
-			} else if (!((String) getLightAtt(Att.GRP, 0)).isEmpty())
-				c += "(" + (String) getLightAtt(Att.GRP, 0) + ")";
-			switch ((Col) getLightAtt(Att.COL, 0)) {
-			case RED:
-				c += ".R";
-				break;
-			case GREEN:
-				c += ".G";
-				break;
-			case AMBER:
-				c += ".Am";
-				break;
-			case ORANGE:
-				c += ".Or";
-				break;
-			case BLUE:
-				c += ".Bu";
-				break;
-			case VIOLET:
-				c += ".Vi";
-				break;
-			}
-			tmp = (String) getLightAtt(Att.MLT, 0);
-			if (!tmp.isEmpty())
-				c = tmp + c;
-			if (dlg.mark.getLightAtt(Att.LIT, 0) != Lit.UNKNOWN) {
-				switch ((Lit)dlg.mark.getLightAtt(Att.LIT, 0)) {
-				case VERT:
-					c += "(Vert)";
-					break;
-				case HORIZ:
-						c += "(Horiz)";
-						break;
-				}
-			}
-			tmp = (String) getLightAtt(Att.PER, 0);
-			if (!tmp.isEmpty())
-				c += " " + tmp + "s";
-			dlg.panelMain.litLabel.setText(c);
-		}
-
-		paintlock = false;
+				g.drawString(str, 0, 50);
+			}
+		}
+
 	}
 
@@ -2103,6 +2116,6 @@
 					}
 				}
-				if (!getHeight().isEmpty()) {
-					Main.main.undoRedo.add(new ChangePropertyCommand(node, "seamark:" + objStr + ":height", getHeight()));
+				if (!getObjectHeight().isEmpty()) {
+					Main.main.undoRedo.add(new ChangePropertyCommand(node, "seamark:" + objStr + ":height", getObjectHeight()));
 				}
 				if (!getElevation().isEmpty()) {
