Index: applications/editors/josm/plugins/toms/src/toms/dialogs/SmpDialogAction.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/dialogs/SmpDialogAction.java	(revision 23263)
+++ applications/editors/josm/plugins/toms/src/toms/dialogs/SmpDialogAction.java	(revision 23268)
@@ -472,8 +472,9 @@
         }
 
-        buoy = new BuoyUkn(this, Messages.getString("SmpDialogAction.91")); //$NON-NLS-1$
-        buoy.setNode(node);
-        return;
-    }
+		buoy = new BuoyUkn(this, Messages.getString("SmpDialogAction.91")); //$NON-NLS-1$
+		buoy.setNode(node);
+		buoy.paintSign();
+		return;
+	}
 
     private JDialog getDM01SeaMap() {
@@ -794,8 +795,9 @@
                     int type = cbM01TypeOfMark.getSelectedIndex();
 
-                    if (buoy == null) {
-                        buoy = new BuoyUkn(dia, Messages.getString("SmpDialogAction.150")); //$NON-NLS-1$
-                        return;
-                    }
+					if (buoy == null) {
+						buoy = new BuoyUkn(dia, Messages.getString("SmpDialogAction.150")); //$NON-NLS-1$
+						buoy.paintSign();
+						return;
+					}
 
                     Node n = buoy.getNode();
@@ -806,9 +808,9 @@
                     switch (type) {
 
-                    case SeaMark.UNKNOWN_TYPE:
-                        if (!(buoy instanceof BuoyUkn))
-                            buoy = new BuoyUkn(dia, Messages.getString("SmpDialogAction.150")); //$NON-NLS-1$
-                        buoy.setBuoyIndex(type);
-                        break;
+					case SeaMark.UNKNOWN_TYPE:
+						if (!(buoy instanceof BuoyUkn))
+							buoy = new BuoyUkn(dia, Messages.getString("SmpDialogAction.150")); //$NON-NLS-1$
+						buoy.setBuoyIndex(0);
+						break;
 
                     case SeaMark.LATERAL:
@@ -877,8 +879,9 @@
                     int cat = cbM01CatOfMark.getSelectedIndex();
 
-                    if (buoy == null) {
-                        buoy = new BuoyUkn(dia, Messages.getString("SmpDialogAction.150")); //$NON-NLS-1$
-                        return;
-                    }
+					if (buoy == null) {
+						buoy = new BuoyUkn(dia, Messages.getString("SmpDialogAction.150")); //$NON-NLS-1$
+						buoy.paintSign();
+						return;
+					}
 
                     Node n = buoy.getNode();
@@ -886,20 +889,5 @@
                         return;
 
-                    if (cbM01TypeOfMark.getSelectedIndex() == SeaMark.LATERAL) {
-                        if (!(buoy instanceof BuoyLat))
-                            buoy = new BuoyLat(dia, n);
-                        buoy.setBuoyIndex(cat);
-                    }
-                    if (cbM01TypeOfMark.getSelectedIndex() == SeaMark.CARDINAL) {
-                        if (!(buoy instanceof BuoyCard))
-                            buoy = new BuoyCard(dia, n);
-                        buoy.setBuoyIndex(cat);
-                    }
-                    if (cbM01TypeOfMark.getSelectedIndex() == SeaMark.LIGHT) {
-                        if (!(buoy instanceof BuoyNota))
-                            buoy = new BuoyNota(dia, n);
-                        buoy.setBuoyIndex(cat);
-                    }
-
+					buoy.setBuoyIndex(cat);
                     buoy.refreshStyles();
                     buoy.refreshLights();
@@ -912,21 +900,23 @@
     }
 
-    private JComboBox getCbM01StyleOfMark() {
-        if (cbM01StyleOfMark == null) {
-            cbM01StyleOfMark = new JComboBox();
-            cbM01StyleOfMark.setBounds(new Rectangle(45, 85, 165, 25));
-            cbM01StyleOfMark.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
-            cbM01StyleOfMark.addActionListener(new ActionListener() {
-                public void actionPerformed(ActionEvent e) {
-                    int style = cbM01StyleOfMark.getSelectedIndex();
-                    if (buoy != null && style != buoy.getStyleIndex()) {
-                        buoy.setStyleIndex(style);
-                        buoy.paintSign();
-                    }
-                }
-            });
-        }
-        return cbM01StyleOfMark;
-    }
+	private JComboBox getCbM01StyleOfMark() {
+		if (cbM01StyleOfMark == null) {
+			cbM01StyleOfMark = new JComboBox();
+			cbM01StyleOfMark.setBounds(new Rectangle(45, 85, 165, 25));
+			cbM01StyleOfMark.setFont(new Font("Dialog", Font.PLAIN, 12)); //$NON-NLS-1$
+			cbM01StyleOfMark.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					int style = cbM01StyleOfMark.getSelectedIndex();
+					if (buoy != null && style != buoy.getStyleIndex()) {
+						buoy.setStyleIndex(style);
+						buoy.refreshLights();
+						buoy.setLightColour();
+						buoy.paintSign();
+					}
+				}
+			});
+		}
+		return cbM01StyleOfMark;
+	}
 
     private JTextField getTfM01Name() {
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java	(revision 23263)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/Buoy.java	(revision 23268)
@@ -155,7 +155,20 @@
     }
 
-    public void setSectored(boolean sectored) {
-        Sectored = sectored;
-    }
+	public void setSectored(boolean sectored) {
+		Sectored = sectored;
+		if (sectored) {
+			LightColour[0] = "";
+		} else {
+			setSectorIndex(0);
+			setLightChar("");
+			setLightColour("");
+			setLightGroup("");
+			setHeight("");
+			setRange("");
+			setBearing1("");
+			setBearing2("");
+			setRadius("");
+		}
+	}
 
     private int SectorIndex = 0;
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyCard.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyCard.java	(revision 23263)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyCard.java	(revision 23268)
@@ -142,35 +142,27 @@
     }
 
-    public void refreshLights() {
-        int type = getBuoyIndex();
-
+	public void refreshLights() {
         dlg.cbM01Kennung.removeAllItems();
         dlg.cbM01Kennung.addItem(Messages.getString("SmpDialogAction.212")); //$NON-NLS-1$
         dlg.cbM01Kennung.setSelectedIndex(0);
 
-        switch (type) {
-        case SeaMark.CARD_NORTH:
-            dlg.cbM01Kennung.addItem("Q"); //$NON-NLS-1$
-            dlg.cbM01Kennung.addItem("VQ"); //$NON-NLS-1$
-            break;
-
-        case SeaMark.CARD_EAST:
-            dlg.cbM01Kennung.addItem("Q(3)"); //$NON-NLS-1$
-            dlg.cbM01Kennung.addItem("VQ(3)"); //$NON-NLS-1$
-            break;
-
-        case SeaMark.CARD_SOUTH:
-            dlg.cbM01Kennung.addItem("Q(6)+LFl"); //$NON-NLS-1$
-            dlg.cbM01Kennung.addItem("VQ(6)+LFl"); //$NON-NLS-1$
-            break;
-
-        case SeaMark.CARD_WEST:
-            dlg.cbM01Kennung.addItem("Q(9)"); //$NON-NLS-1$
-            dlg.cbM01Kennung.addItem("VQ(9)"); //$NON-NLS-1$
-            break;
-
-        default:
-        }
-
+		switch (getBuoyIndex()) {
+		case CARD_NORTH:
+			dlg.cbM01Kennung.addItem("Q"); //$NON-NLS-1$
+			dlg.cbM01Kennung.addItem("VQ"); //$NON-NLS-1$
+			break;
+		case CARD_EAST:
+			dlg.cbM01Kennung.addItem("Q(3)"); //$NON-NLS-1$
+			dlg.cbM01Kennung.addItem("VQ(3)"); //$NON-NLS-1$
+			break;
+		case CARD_SOUTH:
+			dlg.cbM01Kennung.addItem("Q(6)+LFl"); //$NON-NLS-1$
+			dlg.cbM01Kennung.addItem("VQ(6)+LFl"); //$NON-NLS-1$
+			break;
+		case CARD_WEST:
+			dlg.cbM01Kennung.addItem("Q(9)"); //$NON-NLS-1$
+			dlg.cbM01Kennung.addItem("VQ(9)"); //$NON-NLS-1$
+			break;
+		}
     }
 
@@ -179,74 +171,68 @@
     }
 
-    public void paintSign() {
-        if (dlg.paintlock)
-            return;
-        super.paintSign();
+	public void setLightColour() {
+		super.setLightColour("W"); //$NON-NLS-1$
+	}
+
+	public void paintSign() {
+		if (dlg.paintlock)
+			return;
+		super.paintSign();
 
         dlg.sM01StatusBar.setText(getErrMsg());
 
-        if (isValid()) {
-            dlg.tfM01Name.setEnabled(true);
-            dlg.tfM01Name.setText(getName());
-            dlg.cM01TopMark.setSelected(true);
-            dlg.cM01TopMark.setVisible(true);
-            dlg.cM01TopMark.setEnabled(false);
-            dlg.cM01Radar.setVisible(true);
-            dlg.cM01Racon.setVisible(true);
-            dlg.cM01Fog.setVisible(true);
-            dlg.cM01Fired.setEnabled(true);
-            dlg.cM01Fired.setVisible(true);
-            dlg.cbM01Colour.setVisible(false);
-            dlg.lM01Colour.setVisible(false);
-            dlg.rbM01Fired1.setVisible(false);
-            dlg.rbM01FiredN.setVisible(false);
-            dlg.lM01Height.setVisible(false);
-            dlg.tfM01Height.setVisible(false);
-            dlg.lM01Range.setVisible(false);
-            dlg.tfM01Range.setVisible(false);
-
-            if (isFired()) {
-                switch (getStyleIndex()) {
-                case LAT_BEACON:
-                case LAT_TOWER:
-                    dlg.rbM01Fired1.setVisible(true);
-                    dlg.rbM01FiredN.setVisible(true);
-                    dlg.lM01Height.setVisible(true);
-                    dlg.tfM01Height.setVisible(true);
-                    dlg.lM01Range.setVisible(true);
-                    dlg.tfM01Range.setVisible(true);
-                    break;
-                case LAT_FLOAT:
-                    dlg.lM01Height.setVisible(true);
-                    dlg.tfM01Height.setVisible(true);
-                    dlg.lM01Range.setVisible(true);
-                    dlg.tfM01Range.setVisible(true);
-                    break;
-                default:
-                }
-            }
-            String image = "/images/Cardinal"; //$NON-NLS-1$
-
-            switch (getStyleIndex()) {
-            case SeaMark.CARD_PILLAR:
-                image += "_Pillar"; //$NON-NLS-1$
-                break;
-
+		if (isValid()) {
+			dlg.tfM01Name.setEnabled(true);
+			dlg.tfM01Name.setText(getName());
+			dlg.cM01TopMark.setSelected(true);
+			dlg.cM01TopMark.setVisible(true);
+			dlg.cM01TopMark.setEnabled(false);
+			dlg.cM01Radar.setVisible(true);
+			dlg.cM01Racon.setVisible(true);
+			dlg.cM01Fog.setVisible(true);
+			dlg.cM01Fired.setEnabled(true);
+			dlg.cM01Fired.setVisible(true);
+			if (!isSectored()) {
+				dlg.cbM01Colour.setVisible(false);
+				dlg.lM01Colour.setVisible(false);
+			}
+			dlg.rbM01Fired1.setVisible(false);
+			dlg.rbM01FiredN.setVisible(false);
+			dlg.lM01Height.setVisible(false);
+			dlg.tfM01Height.setVisible(false);
+			dlg.lM01Range.setVisible(false);
+			dlg.tfM01Range.setVisible(false);
+
+			if (isFired()) {
+				switch (getStyleIndex()) {
+				case CARD_BEACON:
+				case CARD_TOWER:
+				case CARD_FLOAT:
+					dlg.lM01Height.setVisible(true);
+					dlg.tfM01Height.setVisible(true);
+					dlg.lM01Range.setVisible(true);
+					dlg.tfM01Range.setVisible(true);
+					break;
+				default:
+				}
+			}
+
+			String image = "/images/Cardinal"; //$NON-NLS-1$
+			switch (getStyleIndex()) {
+			case SeaMark.CARD_PILLAR:
+				image += "_Pillar"; //$NON-NLS-1$
+				break;
             case SeaMark.CARD_SPAR:
                 image += "_Spar"; //$NON-NLS-1$
                 break;
-
             case SeaMark.CARD_BEACON:
                 image += "_Beacon"; //$NON-NLS-1$
                 break;
-
             case SeaMark.CARD_TOWER:
                 image += "_Tower"; //$NON-NLS-1$
                 break;
-
             case SeaMark.CARD_FLOAT:
                 image += "_Float"; //$NON-NLS-1$
                 break;
-
             default:
                 return;
@@ -277,8 +263,4 @@
                 dlg.lM01Icon.setIcon(null);
         }
-    }
-
-    public void setLightColour() {
-        super.setLightColour("W"); //$NON-NLS-1$
     }
 
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyIsol.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyIsol.java	(revision 23263)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyIsol.java	(revision 23268)
@@ -109,7 +109,11 @@
     }
 
-    public void paintSign() {
-        if (dlg.paintlock)
-            return;
+	public void setLightColour() {
+		super.setLightColour("W"); //$NON-NLS-1$
+	}
+
+	public void paintSign() {
+		if (dlg.paintlock)
+			return;
 
         super.paintSign();
@@ -117,41 +121,35 @@
         dlg.sM01StatusBar.setText(getErrMsg());
 
-        if (isValid()) {
-            dlg.tfM01Name.setEnabled(true);
-            dlg.tfM01Name.setText(getName());
-            dlg.cM01TopMark.setVisible(true);
-            dlg.cM01Radar.setVisible(true);
-            dlg.cM01Racon.setVisible(true);
-            dlg.cM01Fog.setVisible(true);
-            dlg.cM01Fired.setVisible(true);
-            dlg.cbM01Colour.setVisible(false);
-            dlg.lM01Colour.setVisible(false);
-            dlg.rbM01Fired1.setVisible(false);
-            dlg.rbM01FiredN.setVisible(false);
-            dlg.lM01Height.setVisible(false);
-            dlg.tfM01Height.setVisible(false);
-            dlg.lM01Range.setVisible(false);
-            dlg.tfM01Range.setVisible(false);
-
-            if (isFired()) {
-                switch (getStyleIndex()) {
-                case SPEC_FLOAT:
-                    dlg.lM01Height.setVisible(true);
-                    dlg.tfM01Height.setVisible(true);
-                    dlg.lM01Range.setVisible(true);
-                    dlg.tfM01Range.setVisible(true);
-                    break;
-                case SPEC_BEACON:
-                case SPEC_TOWER:
-                    dlg.rbM01Fired1.setVisible(true);
-                    dlg.rbM01FiredN.setVisible(true);
-                    dlg.lM01Height.setVisible(true);
-                    dlg.tfM01Height.setVisible(true);
-                    dlg.lM01Range.setVisible(true);
-                    dlg.tfM01Range.setVisible(true);
-                    break;
-                default:
-                }
-            }
+		if (isValid()) {
+			dlg.tfM01Name.setEnabled(true);
+			dlg.tfM01Name.setText(getName());
+			dlg.cM01TopMark.setVisible(true);
+			dlg.cM01Radar.setVisible(true);
+			dlg.cM01Racon.setVisible(true);
+			dlg.cM01Fog.setVisible(true);
+			dlg.cM01Fired.setVisible(true);
+			if (!isSectored()) {
+				dlg.cbM01Colour.setVisible(false);
+				dlg.lM01Colour.setVisible(false);
+			}
+			dlg.rbM01Fired1.setVisible(false);
+			dlg.rbM01FiredN.setVisible(false);
+			dlg.lM01Height.setVisible(false);
+			dlg.tfM01Height.setVisible(false);
+			dlg.lM01Range.setVisible(false);
+			dlg.tfM01Range.setVisible(false);
+
+			if (isFired()) {
+				switch (getStyleIndex()) {
+				case ISOL_BEACON:
+				case ISOL_TOWER:
+					dlg.lM01Height.setVisible(true);
+					dlg.tfM01Height.setVisible(true);
+					dlg.lM01Range.setVisible(true);
+					dlg.tfM01Range.setVisible(true);
+					break;
+				default:
+				}
+			}
 
             String image = "/images/Cardinal"; //$NON-NLS-1$
@@ -251,10 +249,4 @@
         saveLightData(); //$NON-NLS-1$
         saveRadarFogData();
-
-    }
-
-    public void setLightColour() {
-        super.setLightColour("W"); //$NON-NLS-1$
-    }
-
+    }
 }
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyLat.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyLat.java	(revision 23263)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyLat.java	(revision 23268)
@@ -299,5 +299,4 @@
             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.10")); //$NON-NLS-1$
             break;
-
         case STARBOARD_HAND:
             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.03")); //$NON-NLS-1$
@@ -309,5 +308,4 @@
             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.10")); //$NON-NLS-1$
             break;
-
         case PREF_PORT_HAND:
             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.02")); //$NON-NLS-1$
@@ -318,5 +316,4 @@
             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
             break;
-
         case PREF_STARBOARD_HAND:
             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.03")); //$NON-NLS-1$
@@ -327,7 +324,5 @@
             dlg.cbM01StyleOfMark.addItem(Messages.getString("Buoy.07")); //$NON-NLS-1$
             break;
-
-        default:
-        }
+		}
 
         if (style >= dlg.cbM01StyleOfMark.getItemCount())
@@ -339,12 +334,30 @@
     }
 
-    public boolean isValid() {
-        return (getBuoyIndex() > 0) && (getStyleIndex() > 0);
-    }
-
-    public void paintSign() {
-        if (dlg.paintlock)
-            return;
-        super.paintSign();
+	public void refreshLights() {
+		super.refreshLights();
+	}
+
+	public boolean isValid() {
+		return (getBuoyIndex() > 0) && (getStyleIndex() > 0);
+	}
+
+	public void setLightColour() {
+		if (getRegion() == IALA_A) {
+			if (getBuoyIndex() == PORT_HAND || getBuoyIndex() == PREF_PORT_HAND)
+				super.setLightColour("R"); //$NON-NLS-1$
+			else
+				super.setLightColour("G"); //$NON-NLS-1$
+		} else {
+			if (getBuoyIndex() == PORT_HAND || getBuoyIndex() == PREF_PORT_HAND)
+				super.setLightColour("G"); //$NON-NLS-1$
+			else
+				super.setLightColour("R"); //$NON-NLS-1$
+		}
+	}
+
+	public void paintSign() {
+		if (dlg.paintlock)
+			return;
+		super.paintSign();
 
         dlg.sM01StatusBar.setText(getErrMsg());
@@ -354,55 +367,49 @@
             dlg.tfM01Name.setText(getName());
 
-            int cat = getBuoyIndex();
-            boolean region = getRegion();
-            int style = getStyleIndex();
-
-            if (style == LAT_PERCH) {
-                dlg.cM01TopMark.setVisible(false);
-                dlg.cM01TopMark.setSelected(false);
-                dlg.cM01Radar.setVisible(false);
-                dlg.cM01Racon.setVisible(false);
-                dlg.cM01Fog.setVisible(false);
-                dlg.cM01Fired.setVisible(false);
-                dlg.cM01Fired.setSelected(false);
-            } else {
-                dlg.cM01TopMark.setEnabled(true);
-                dlg.cM01TopMark.setVisible(true);
-                dlg.cM01Radar.setVisible(true);
-                dlg.cM01Racon.setVisible(true);
-                dlg.cM01Fog.setVisible(true);
-                dlg.cM01Fired.setVisible(true);
-                dlg.cM01Fired.setEnabled(true);
-                dlg.cM01TopMark.setEnabled(true);
-            }
-            dlg.cbM01Colour.setVisible(false);
-            dlg.lM01Colour.setVisible(false);
-            dlg.rbM01Fired1.setVisible(false);
-            dlg.rbM01FiredN.setVisible(false);
-            dlg.lM01Height.setVisible(false);
-            dlg.tfM01Height.setVisible(false);
-            dlg.lM01Range.setVisible(false);
-            dlg.tfM01Range.setVisible(false);
-
-            if (isFired()) {
-                switch (style) {
-                case LAT_BEACON:
-                case LAT_TOWER:
-                    dlg.rbM01Fired1.setVisible(true);
-                    dlg.rbM01FiredN.setVisible(true);
-                    dlg.lM01Height.setVisible(true);
-                    dlg.tfM01Height.setVisible(true);
-                    dlg.lM01Range.setVisible(true);
-                    dlg.tfM01Range.setVisible(true);
-                    break;
-                case LAT_FLOAT:
-                    dlg.lM01Height.setVisible(true);
-                    dlg.tfM01Height.setVisible(true);
-                    dlg.lM01Range.setVisible(true);
-                    dlg.tfM01Range.setVisible(true);
-                    break;
-                default:
-                }
-            }
+			boolean region = getRegion();
+			int style = getStyleIndex();
+
+			if (style == LAT_PERCH) {
+				dlg.cM01TopMark.setVisible(false);
+				dlg.cM01TopMark.setSelected(false);
+				dlg.cM01Radar.setVisible(false);
+				dlg.cM01Racon.setVisible(false);
+				dlg.cM01Fog.setVisible(false);
+				dlg.cM01Fired.setVisible(false);
+				dlg.cM01Fired.setSelected(false);
+			} else {
+				dlg.cM01TopMark.setEnabled(true);
+				dlg.cM01TopMark.setVisible(true);
+				dlg.cM01Radar.setVisible(true);
+				dlg.cM01Racon.setVisible(true);
+				dlg.cM01Fog.setVisible(true);
+				dlg.cM01Fired.setVisible(true);
+				dlg.cM01Fired.setEnabled(true);
+				dlg.cM01TopMark.setEnabled(true);
+			}
+			if (!isSectored()) {
+				dlg.cbM01Colour.setVisible(false);
+				dlg.lM01Colour.setVisible(false);
+			}
+			dlg.rbM01Fired1.setVisible(false);
+			dlg.rbM01FiredN.setVisible(false);
+			dlg.lM01Height.setVisible(false);
+			dlg.tfM01Height.setVisible(false);
+			dlg.lM01Range.setVisible(false);
+			dlg.tfM01Range.setVisible(false);
+
+			if (isFired()) {
+				switch (style) {
+				case LAT_BEACON:
+				case LAT_TOWER:
+				case LAT_FLOAT:
+					dlg.lM01Height.setVisible(true);
+					dlg.tfM01Height.setVisible(true);
+					dlg.lM01Range.setVisible(true);
+					dlg.tfM01Range.setVisible(true);
+					break;
+				default:
+				}
+			}
 
             String image = "/images/Lateral"; //$NON-NLS-1$
@@ -1059,18 +1066,3 @@
         Main.pref.put("tomsplugin.IALA", getRegion() ? "B" : "A"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
     }
-
-    public void setLightColour() {
-        if (getRegion() == IALA_A) {
-            if (getBuoyIndex() == PORT_HAND || getBuoyIndex() == PREF_PORT_HAND)
-                super.setLightColour("R"); //$NON-NLS-1$
-            else
-                super.setLightColour("G"); //$NON-NLS-1$
-        } else {
-            if (getBuoyIndex() == PORT_HAND || getBuoyIndex() == PREF_PORT_HAND)
-                super.setLightColour("G"); //$NON-NLS-1$
-            else
-                super.setLightColour("R"); //$NON-NLS-1$
-        }
-    }
-
 }
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySaw.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySaw.java	(revision 23263)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySaw.java	(revision 23268)
@@ -105,50 +105,49 @@
     }
 
-    public void paintSign() {
-        if (dlg.paintlock)
-            return;
-        super.paintSign();
+	public void setLightColour() {
+		super.setLightColour("W"); //$NON-NLS-1$
+	}
+
+	public void paintSign() {
+		if (dlg.paintlock)
+			return;
+		super.paintSign();
 
         dlg.sM01StatusBar.setText(getErrMsg());
 
-        if (isValid()) {
-            dlg.tfM01Name.setEnabled(true);
-            dlg.tfM01Name.setText(getName());
-            dlg.cM01TopMark.setEnabled(true);
-            dlg.cM01TopMark.setVisible(true);
-            dlg.cM01Radar.setVisible(true);
-            dlg.cM01Racon.setVisible(true);
-            dlg.cM01Fog.setVisible(true);
-            dlg.cM01Fired.setVisible(true);
-            dlg.cM01Fired.setEnabled(true);
-            dlg.cbM01Colour.setVisible(false);
-            dlg.lM01Colour.setVisible(false);
-            dlg.rbM01Fired1.setVisible(false);
-            dlg.rbM01FiredN.setVisible(false);
-            dlg.lM01Height.setVisible(false);
-            dlg.tfM01Height.setVisible(false);
-            dlg.lM01Range.setVisible(false);
-            dlg.tfM01Range.setVisible(false);
-
-            if (isFired()) {
-                switch (getStyleIndex()) {
-                case SPEC_FLOAT:
-                    dlg.lM01Height.setVisible(true);
-                    dlg.tfM01Height.setVisible(true);
-                    dlg.lM01Range.setVisible(true);
-                    dlg.tfM01Range.setVisible(true);
-                    break;
-                case SPEC_BEACON:
-                case SPEC_TOWER:
-                    dlg.rbM01Fired1.setVisible(true);
-                    dlg.rbM01FiredN.setVisible(true);
-                    dlg.lM01Height.setVisible(true);
-                    dlg.tfM01Height.setVisible(true);
-                    dlg.lM01Range.setVisible(true);
-                    dlg.tfM01Range.setVisible(true);
-                    break;
-                default:
-                }
-            }
+		if (isValid()) {
+			dlg.tfM01Name.setEnabled(true);
+			dlg.tfM01Name.setText(getName());
+			dlg.cM01TopMark.setEnabled(true);
+			dlg.cM01TopMark.setVisible(true);
+			dlg.cM01Radar.setVisible(true);
+			dlg.cM01Racon.setVisible(true);
+			dlg.cM01Fog.setVisible(true);
+			dlg.cM01Fired.setVisible(true);
+			dlg.cM01Fired.setEnabled(true);
+			if (!isSectored()) {
+				dlg.cbM01Colour.setVisible(false);
+				dlg.lM01Colour.setVisible(false);
+			}
+			dlg.rbM01Fired1.setVisible(false);
+			dlg.rbM01FiredN.setVisible(false);
+			dlg.lM01Height.setVisible(false);
+			dlg.tfM01Height.setVisible(false);
+			dlg.lM01Range.setVisible(false);
+			dlg.tfM01Range.setVisible(false);
+
+			if (isFired()) {
+				switch (getStyleIndex()) {
+				case SPEC_FLOAT:
+				case SPEC_BEACON:
+				case SPEC_TOWER:
+					dlg.lM01Height.setVisible(true);
+					dlg.tfM01Height.setVisible(true);
+					dlg.lM01Range.setVisible(true);
+					dlg.tfM01Range.setVisible(true);
+					break;
+				default:
+				}
+			}
 
             String image = "/images/Safe_Water"; //$NON-NLS-1$
@@ -260,8 +259,3 @@
         saveRadarFogData();
     }
-
-    public void setLightColour() {
-        super.setLightColour("W"); //$NON-NLS-1$
-    }
-
 }
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySpec.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySpec.java	(revision 23263)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoySpec.java	(revision 23268)
@@ -131,15 +131,18 @@
     }
 
-    public void setStyleIndex(int styleIndex) {
-        super.setStyleIndex(styleIndex);
-        if (styleIndex == SPEC_BARREL) {
-            dlg.cM01Fired.setSelected(false);
-            dlg.cM01Fired.setEnabled(false);
-            dlg.cM01TopMark.setEnabled(true);
-        } else {
-            dlg.cM01Fired.setEnabled(true);
-            dlg.cM01TopMark.setEnabled(true);
-        }
-    }
+	public void refreshLights() {
+		super.refreshLights();
+		
+		switch (getStyleIndex()) {
+		case SPEC_BARREL:
+			dlg.cM01Fired.setSelected(false);
+			dlg.cM01Fired.setEnabled(false);
+			dlg.cM01TopMark.setEnabled(true);
+			break;
+		default:
+			dlg.cM01Fired.setEnabled(true);
+			dlg.cM01TopMark.setEnabled(true);
+		}
+	}
 
     public boolean isValid() {
@@ -147,56 +150,55 @@
     }
 
-    public void paintSign() {
-        if (dlg.paintlock)
-            return;
-        super.paintSign();
+	public void setLightColour() {
+		super.setLightColour("W"); //$NON-NLS-1$
+	}
+
+	public void paintSign() {
+		if (dlg.paintlock)
+			return;
+		super.paintSign();
 
         dlg.sM01StatusBar.setText(getErrMsg());
 
-        if (isValid()) {
-            dlg.tfM01Name.setEnabled(true);
-            dlg.tfM01Name.setText(getName());
-            dlg.cM01Radar.setVisible(true);
-            dlg.cM01Racon.setVisible(true);
-            dlg.cM01TopMark.setEnabled(true);
-            dlg.cM01TopMark.setVisible(true);
-            if (hasTopMark()) {
-                dlg.cbM01TopMark.setEnabled(true);
-                dlg.cbM01TopMark.setVisible(true);
-            } else {
-                dlg.cbM01TopMark.setVisible(false);
-            }
-            dlg.cM01Fog.setVisible(true);
-            dlg.cM01Fired.setVisible(true);
-            dlg.cM01Fired.setEnabled(true);
-            dlg.cbM01Colour.setVisible(false);
-            dlg.lM01Colour.setVisible(false);
-            dlg.rbM01Fired1.setVisible(false);
-            dlg.rbM01FiredN.setVisible(false);
-            dlg.lM01Height.setVisible(false);
-            dlg.tfM01Height.setVisible(false);
-            dlg.lM01Range.setVisible(false);
-            dlg.tfM01Range.setVisible(false);
-
-            if (isFired()) {
-                switch (getStyleIndex()) {
-                case SPEC_FLOAT:
-                    dlg.lM01Height.setVisible(true);
-                    dlg.tfM01Height.setVisible(true);
-                    dlg.lM01Range.setVisible(true);
-                    dlg.tfM01Range.setVisible(true);
-                    break;
-                case SPEC_BEACON:
-                case SPEC_TOWER:
-                    dlg.rbM01Fired1.setVisible(true);
-                    dlg.rbM01FiredN.setVisible(true);
-                    dlg.lM01Height.setVisible(true);
-                    dlg.tfM01Height.setVisible(true);
-                    dlg.lM01Range.setVisible(true);
-                    dlg.tfM01Range.setVisible(true);
-                    break;
-                default:
-                }
-            }
+		if (isValid()) {
+			dlg.tfM01Name.setEnabled(true);
+			dlg.tfM01Name.setText(getName());
+			dlg.cM01Radar.setVisible(true);
+			dlg.cM01Racon.setVisible(true);
+			dlg.cM01TopMark.setEnabled(true);
+			dlg.cM01TopMark.setVisible(true);
+			if (hasTopMark()) {
+				dlg.cbM01TopMark.setEnabled(true);
+				dlg.cbM01TopMark.setVisible(true);
+			} else {
+				dlg.cbM01TopMark.setVisible(false);
+			}
+			dlg.cM01Fog.setVisible(true);
+			dlg.cM01Fired.setVisible(true);
+			dlg.cM01Fired.setEnabled(true);
+			if (!isSectored()) {
+				dlg.cbM01Colour.setVisible(false);
+				dlg.lM01Colour.setVisible(false);
+			}
+			dlg.rbM01Fired1.setVisible(false);
+			dlg.rbM01FiredN.setVisible(false);
+			dlg.lM01Height.setVisible(false);
+			dlg.tfM01Height.setVisible(false);
+			dlg.lM01Range.setVisible(false);
+			dlg.tfM01Range.setVisible(false);
+
+			if (isFired()) {
+				switch (getStyleIndex()) {
+				case SPEC_FLOAT:
+				case SPEC_BEACON:
+				case SPEC_TOWER:
+					dlg.lM01Height.setVisible(true);
+					dlg.tfM01Height.setVisible(true);
+					dlg.lM01Range.setVisible(true);
+					dlg.tfM01Range.setVisible(true);
+					break;
+				default:
+				}
+			}
 
             String image = "/images/Special_Purpose"; //$NON-NLS-1$
@@ -324,8 +326,3 @@
         saveRadarFogData();
     }
-
-    public void setLightColour() {
-        super.setLightColour("W"); //$NON-NLS-1$
-    }
-
 }
Index: applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyUkn.java
===================================================================
--- applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyUkn.java	(revision 23263)
+++ applications/editors/josm/plugins/toms/src/toms/seamarks/buoys/BuoyUkn.java	(revision 23268)
@@ -11,13 +11,10 @@
 
 public class BuoyUkn extends Buoy {
-    public BuoyUkn(SmpDialogAction dia, String Msg) {
-        super(dia);
-        resetMask();
-        dlg.cbM01TypeOfMark.setSelectedIndex(0);
-        dlg.cbM01CatOfMark.removeAllItems();
-        dlg.cbM01CatOfMark.setEnabled(false);
-        dlg.tfM01Name.setText(getName());
-        setErrMsg(Msg);
-    }
+	public BuoyUkn(SmpDialogAction dia, String Msg) {
+		super(dia);
+		resetMask();
+		dlg.cbM01TypeOfMark.setSelectedIndex(0);
+		setErrMsg(Msg);
+	}
 
     public void paintSign() {
