Index: applications/editors/josm/plugins/smed/plugs/harbour/src/harbour/panels/PanelLimits.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/harbour/src/harbour/panels/PanelLimits.java	(revision 24422)
+++ applications/editors/josm/plugins/smed/plugs/harbour/src/harbour/panels/PanelLimits.java	(revision 24426)
@@ -2,4 +2,6 @@
 
 import harbour.widgets.LightTile;
+import harbour.widgets.TextFieldEx;
+import harbour.widgets.TristateCheckBox;
 
 import javax.swing.BorderFactory;
@@ -30,31 +32,12 @@
 	private JLabel mLabel = null;
 	private JComboBox allComboBox = null;
-	private JLabel olLabel = null;
-	private JComboBox olComboBox = null;
 	private JLabel grLabel = null;
-	private JComboBox turnComboBox = null;
-	private JLabel turnLabel = null;
 	private JButton grButton = null;
-	private JComboBox impComboBox = null;
-	private JLabel impLabel = null;
-	private JComboBox usComboBox = null;
-	private JLabel usLabel = null;
-	private JComboBox etaComboBox = null;
-	private JLabel etaLabel = null;
-	private JTextField sizeTextField = null;
-	private JLabel sizeLabel = null;
-	private JRadioButton sizRadioButton = null;
-	private JTextField chTextField = null;
-	private JLabel chLabel = null;
-	private JRadioButton chRadioButton = null;
-	private JTextField tieTextField = null;
-	private JLabel tieLabel = null;
-	private JRadioButton tieRadioButton = null;
-	private JTextField cargoTextField = null;
-	private JLabel cargoLabel = null;
-	private JRadioButton cargoRadioButton = null;
-	private JTextField oilTextField = null;
-	private JLabel oilLabel = null;
-	private JRadioButton oilRadioButton = null;
+	private JCheckBox olCheckBox = null;
+	private JCheckBox turnCheckBox = null;
+	private JCheckBox impCheckBox = null;
+	private JCheckBox usCheckBox = null;
+	private JCheckBox etaCheckBox = null;
+	private JPanel jPanel = null;
 	public PanelLimits() {
 		super();
@@ -67,48 +50,8 @@
 	 */
 	private void initialize() {
-		oilLabel = new JLabel();
-		oilLabel.setBounds(new Rectangle(215, 189, 65, 16));
-		oilLabel.setFont(new Font("Dialog", Font.PLAIN, 12));
-		oilLabel.setText("Oelterminal");
-		cargoLabel = new JLabel();
-		cargoLabel.setBounds(new Rectangle(215, 165, 80, 16));
-		cargoLabel.setFont(new Font("Dialog", Font.PLAIN, 12));
-		cargoLabel.setText("Frachtanleger");
-		tieLabel = new JLabel();
-		tieLabel.setBounds(new Rectangle(215, 142, 63, 16));
-		tieLabel.setFont(new Font("Dialog", Font.PLAIN, 12));
-		tieLabel.setText("Ankerplatz");
-		chLabel = new JLabel();
-		chLabel.setBounds(new Rectangle(215, 119, 50, 16));
-		chLabel.setFont(new Font("Dialog", Font.PLAIN, 12));
-		chLabel.setText("Channel");
-		sizeLabel = new JLabel();
-        sizeLabel.setBounds(new Rectangle(215, 96, 85, 16));
-        sizeLabel.setFont(new Font("Dialog", Font.PLAIN, 12));
-        sizeLabel.setText("Schiffsgroesse");
-        etaLabel = new JLabel();
-        etaLabel.setBounds(new Rectangle(55, 189, 80, 16));
-        etaLabel.setFont(new Font("Dialog", Font.PLAIN, 12));
-        etaLabel.setText("ETA Nachricht");
-        usLabel = new JLabel();
-        usLabel.setBounds(new Rectangle(55, 167, 80, 13));
-        usLabel.setFont(new Font("Dialog", Font.PLAIN, 12));
-        usLabel.setText("US.Vertretung");
-        impLabel = new JLabel();
-        impLabel.setBounds(new Rectangle(55, 143, 55, 16));
-        impLabel.setFont(new Font("Dialog", Font.PLAIN, 12));
-        impLabel.setText("Zollhafen");
-        turnLabel = new JLabel();
-        turnLabel.setBounds(new Rectangle(55, 121, 64, 16));
-        turnLabel.setFont(new Font("Dialog", Font.PLAIN, 12));
-        turnLabel.setText("Wendeplatz");
         grLabel = new JLabel();
-        grLabel.setBounds(new Rectangle(215, 222, 70, 16));
+        grLabel.setBounds(new Rectangle(215, 222, 80, 16));
         grLabel.setFont(new Font("Dialog", Font.PLAIN, 12));
         grLabel.setText("Ankergrund");
-        olLabel = new JLabel();
-        olLabel.setBounds(new Rectangle(55, 96, 90, 16));
-        olLabel.setFont(new Font("Dialog", Font.PLAIN, 12));
-        olLabel.setText("Overhead Limits");
         mLabel = new JLabel();
         mLabel.setBounds(new Rectangle(30, 49, 20, 20));
@@ -116,5 +59,5 @@
         mLabel.setText("m");
         limLabel = new JLabel();
-        limLabel.setBounds(new Rectangle(80, 2, 160, 20));
+        limLabel.setBounds(new Rectangle(80, 2, 195, 20));
         limLabel.setText("Einfahrtsbeschraenkungen");
         this.setSize(new Dimension(330, 270));
@@ -130,31 +73,12 @@
         this.add(mLabel, null);
         this.add(getAllComboBox(), null);
-        this.add(olLabel, null);
-        this.add(getOlComboBox(), null);
         this.add(grLabel, null);
-        this.add(getTurnComboBox(), null);
-        this.add(turnLabel, null);
         this.add(getGrButton(), null);
-        this.add(getImpComboBox(), null);
-        this.add(impLabel, null);
-        this.add(getUsComboBox(), null);
-        this.add(usLabel, null);
-        this.add(getEtaComboBox(), null);
-        this.add(etaLabel, null);
-        this.add(getSizeTextField(), null);
-        this.add(sizeLabel, null);
-        this.add(getSizRadioButton(), null);
-        this.add(getChTextField(), null);
-        this.add(chLabel, null);
-        this.add(getChRadioButton(), null);
-        this.add(getTieTextField(), null);
-        this.add(tieLabel, null);
-        this.add(getTieRadioButton(), null);
-        this.add(getCargoTextField(), null);
-        this.add(cargoLabel, null);
-        this.add(getCargoRadioButton(), null);
-        this.add(getOilTextField(), null);
-        this.add(oilLabel, null);
-        this.add(getOilRadioButton(), null);
+        this.add(getOlCheckBox(), null);
+        this.add(getTurnCheckBox(), null);
+        this.add(getImpCheckBox(), null);
+        this.add(getUsCheckBox(), null);
+        this.add(getEtaCheckBox(), null);
+        this.add(getJPanel(), null);
 	}
 
@@ -182,5 +106,5 @@
 		if (swellCheckBox1 == null) {
 			swellCheckBox1 = new JCheckBox();
-			swellCheckBox1.setBounds(new Rectangle(86, 23, 76, 20));
+			swellCheckBox1.setBounds(new Rectangle(86, 23, 85, 20));
 			swellCheckBox1.setFont(new Font("Dialog", Font.PLAIN, 12));
 			swellCheckBox1.setText("Seegang");
@@ -240,33 +164,7 @@
 		if (allComboBox == null) {
 			allComboBox = new JComboBox();
-			allComboBox.setBounds(new Rectangle(125, 70, 200, 20));
+			allComboBox.setBounds(new Rectangle(135, 70, 190, 20));
 		}
 		return allComboBox;
-	}
-
-	/**
-	 * This method initializes olComboBox	
-	 * 	
-	 * @return javax.swing.JComboBox	
-	 */
-	private JComboBox getOlComboBox() {
-		if (olComboBox == null) {
-			olComboBox = new JComboBox();
-			olComboBox.setBounds(new Rectangle(2, 95, 50, 20));
-		}
-		return olComboBox;
-	}
-
-	/**
-	 * This method initializes turnComboBox	
-	 * 	
-	 * @return javax.swing.JComboBox	
-	 */
-	private JComboBox getTurnComboBox() {
-		if (turnComboBox == null) {
-			turnComboBox = new JComboBox();
-			turnComboBox.setBounds(new Rectangle(2, 118, 50, 20));
-		}
-		return turnComboBox;
 	}
 
@@ -286,170 +184,90 @@
 
 	/**
-	 * This method initializes impComboBox	
-	 * 	
-	 * @return javax.swing.JComboBox	
-	 */
-	private JComboBox getImpComboBox() {
-		if (impComboBox == null) {
-			impComboBox = new JComboBox();
-			impComboBox.setBounds(new Rectangle(2, 141, 50, 20));
-		}
-		return impComboBox;
-	}
-
-	/**
-	 * This method initializes usComboBox	
-	 * 	
-	 * @return javax.swing.JComboBox	
-	 */
-	private JComboBox getUsComboBox() {
-		if (usComboBox == null) {
-			usComboBox = new JComboBox();
-			usComboBox.setBounds(new Rectangle(2, 164, 50, 20));
-		}
-		return usComboBox;
-	}
-
-	/**
-	 * This method initializes etaComboBox	
-	 * 	
-	 * @return javax.swing.JComboBox	
-	 */
-	private JComboBox getEtaComboBox() {
-		if (etaComboBox == null) {
-			etaComboBox = new JComboBox();
-			etaComboBox.setBounds(new Rectangle(2, 187, 50, 20));
-		}
-		return etaComboBox;
-	}
-
-	/**
-	 * This method initializes sizeTextField	
-	 * 	
-	 * @return javax.swing.JTextField	
-	 */
-	private JTextField getSizeTextField() {
-		if (sizeTextField == null) {
-			sizeTextField = new JTextField();
-			sizeTextField.setBounds(new Rectangle(150, 95, 65, 20));
-		}
-		return sizeTextField;
-	}
-
-	/**
-	 * This method initializes sizRadioButton	
-	 * 	
-	 * @return javax.swing.JRadioButton	
-	 */
-	private JRadioButton getSizRadioButton() {
-		if (sizRadioButton == null) {
-			sizRadioButton = new JRadioButton();
-			sizRadioButton.setBounds(new Rectangle(305, 95, 20, 20));
-		}
-		return sizRadioButton;
-	}
-
-	/**
-	 * This method initializes chTextField	
-	 * 	
-	 * @return javax.swing.JTextField	
-	 */
-	private JTextField getChTextField() {
-		if (chTextField == null) {
-			chTextField = new JTextField();
-			chTextField.setBounds(new Rectangle(150, 118, 65, 20));
-		}
-		return chTextField;
-	}
-
-	/**
-	 * This method initializes chRadioButton	
-	 * 	
-	 * @return javax.swing.JRadioButton	
-	 */
-	private JRadioButton getChRadioButton() {
-		if (chRadioButton == null) {
-			chRadioButton = new JRadioButton();
-			chRadioButton.setBounds(new Rectangle(305, 118, 20, 20));
-		}
-		return chRadioButton;
-	}
-
-	/**
-	 * This method initializes tieTextField	
-	 * 	
-	 * @return javax.swing.JTextField	
-	 */
-	private JTextField getTieTextField() {
-		if (tieTextField == null) {
-			tieTextField = new JTextField();
-			tieTextField.setBounds(new Rectangle(150, 141, 65, 20));
-		}
-		return tieTextField;
-	}
-
-	/**
-	 * This method initializes tieRadioButton	
-	 * 	
-	 * @return javax.swing.JRadioButton	
-	 */
-	private JRadioButton getTieRadioButton() {
-		if (tieRadioButton == null) {
-			tieRadioButton = new JRadioButton();
-			tieRadioButton.setBounds(new Rectangle(305, 141, 20, 20));
-		}
-		return tieRadioButton;
-	}
-
-	/**
-	 * This method initializes cargoTextField	
-	 * 	
-	 * @return javax.swing.JTextField	
-	 */
-	private JTextField getCargoTextField() {
-		if (cargoTextField == null) {
-			cargoTextField = new JTextField();
-			cargoTextField.setBounds(new Rectangle(150, 164, 65, 20));
-		}
-		return cargoTextField;
-	}
-
-	/**
-	 * This method initializes cargoRadioButton	
-	 * 	
-	 * @return javax.swing.JRadioButton	
-	 */
-	private JRadioButton getCargoRadioButton() {
-		if (cargoRadioButton == null) {
-			cargoRadioButton = new JRadioButton();
-			cargoRadioButton.setBounds(new Rectangle(305, 164, 20, 20));
-		}
-		return cargoRadioButton;
-	}
-
-	/**
-	 * This method initializes oilTextField	
-	 * 	
-	 * @return javax.swing.JTextField	
-	 */
-	private JTextField getOilTextField() {
-		if (oilTextField == null) {
-			oilTextField = new JTextField();
-			oilTextField.setBounds(new Rectangle(150, 187, 65, 20));
-		}
-		return oilTextField;
-	}
-
-	/**
-	 * This method initializes oilRadioButton	
-	 * 	
-	 * @return javax.swing.JRadioButton	
-	 */
-	private JRadioButton getOilRadioButton() {
-		if (oilRadioButton == null) {
-			oilRadioButton = new JRadioButton();
-			oilRadioButton.setBounds(new Rectangle(305, 188, 20, 20));
-		}
-		return oilRadioButton;
+	 * This method initializes olCheckBox	
+	 * 	
+	 * @return javax.swing.JCheckBox	
+	 */
+	private JCheckBox getOlCheckBox() {
+		if (olCheckBox == null) {
+			olCheckBox = new TristateCheckBox();
+			olCheckBox.setBounds(new Rectangle(2, 95, 133, 20));
+			olCheckBox.setFont(new Font("Dialog", Font.PLAIN, 12));
+			olCheckBox.setText("Overhead Limits");
+		}
+		return olCheckBox;
+	}
+
+	/**
+	 * This method initializes turnCheckBox	
+	 * 	
+	 * @return javax.swing.JCheckBox	
+	 */
+	private JCheckBox getTurnCheckBox() {
+		if (turnCheckBox == null) {
+			turnCheckBox = new TristateCheckBox();
+			turnCheckBox.setBounds(new Rectangle(2, 118, 105, 20));
+			turnCheckBox.setFont(new Font("Dialog", Font.PLAIN, 12));
+			turnCheckBox.setText("Wendeplatz");
+		}
+		return turnCheckBox;
+	}
+
+	/**
+	 * This method initializes impCheckBox	
+	 * 	
+	 * @return javax.swing.JCheckBox	
+	 */
+	private JCheckBox getImpCheckBox() {
+		if (impCheckBox == null) {
+			impCheckBox = new TristateCheckBox();
+			impCheckBox.setBounds(new Rectangle(2, 141, 95, 20));
+			impCheckBox.setFont(new Font("Dialog", Font.PLAIN, 12));
+			impCheckBox.setText("Zollhafen");
+		}
+		return impCheckBox;
+	}
+
+	/**
+	 * This method initializes usCheckBox	
+	 * 	
+	 * @return javax.swing.JCheckBox	
+	 */
+	private JCheckBox getUsCheckBox() {
+		if (usCheckBox == null) {
+			usCheckBox = new TristateCheckBox();
+			usCheckBox.setBounds(new Rectangle(2, 164, 125, 20));
+			usCheckBox.setFont(new Font("Dialog", Font.PLAIN, 12));
+			usCheckBox.setText("US. Vertretung");
+		}
+		return usCheckBox;
+	}
+
+	/**
+	 * This method initializes etaCheckBox	
+	 * 	
+	 * @return javax.swing.JCheckBox	
+	 */
+	private JCheckBox getEtaCheckBox() {
+		if (etaCheckBox == null) {
+			etaCheckBox = new TristateCheckBox();
+			etaCheckBox.setBounds(new Rectangle(2, 187, 120, 20));
+			etaCheckBox.setText("ETA Nachricht");
+			etaCheckBox.setFont(new Font("Dialog", Font.PLAIN, 12));
+		}
+		return etaCheckBox;
+	}
+
+	/**
+	 * This method initializes jPanel	
+	 * 	
+	 * @return javax.swing.JPanel	
+	 */
+	private JPanel getJPanel() {
+		if (jPanel == null) {
+			jPanel = new TextFieldEx();
+			jPanel.setLayout(null);
+			jPanel.setBounds(new Rectangle(135, 95, 190, 112));
+		}
+		return jPanel;
 	}
 }
Index: applications/editors/josm/plugins/smed/plugs/harbour/src/harbour/widgets/ExtTextField.java
===================================================================
--- applications/editors/josm/plugins/smed/plugs/harbour/src/harbour/widgets/ExtTextField.java	(revision 24422)
+++ 	(revision )
@@ -1,222 +1,0 @@
-package harbour.widgets;
-
-import java.awt.GridBagLayout;
-
-import javax.swing.ButtonGroup;
-import javax.swing.JPanel;
-import javax.swing.JTextField;
-import java.awt.Rectangle;
-import javax.swing.JLabel;
-import java.awt.Font;
-import javax.swing.JRadioButton;
-import java.awt.Dimension;
-
-public class ExtTextField extends JPanel {
-
-	private static final long serialVersionUID = 1L;
-	private ButtonGroup buttons = new ButtonGroup();
-	private JTextField sizeTextField = null;
-	private JLabel sizeLabel = null;
-	private JRadioButton sizeRadioButton = null;
-	private JTextField chTextField = null;
-	private JLabel chLabel = null;
-	private JRadioButton chRadioButton = null;
-	private JTextField tieTextField = null;
-	private JLabel tieLabel = null;
-	private JRadioButton tieRadioButton = null;
-	private JTextField cargoTextField = null;
-	private JLabel cargoLabel = null;
-	private JRadioButton cargoRadioButton = null;
-	private JTextField oilTextField = null;
-	private JLabel oilLabel = null;
-	private JRadioButton oilRadioButton = null;
-	/**
-	 * This is the default constructor
-	 */
-	public ExtTextField() {
-		super();
-		initialize();
-	}
-
-	/**
-	 * This method initializes this
-	 * 
-	 * @return void
-	 */
-	private void initialize() {
-		oilLabel = new JLabel();
-		oilLabel.setBounds(new Rectangle(55, 94, 75, 16));
-		oilLabel.setFont(new Font("Dialog", Font.PLAIN, 12));
-		oilLabel.setText("Oelterminal");
-		cargoLabel = new JLabel();
-		cargoLabel.setBounds(new Rectangle(55, 71, 88, 16));
-		cargoLabel.setFont(new Font("Dialog", Font.PLAIN, 12));
-		cargoLabel.setText("Frachtanleger");
-		tieLabel = new JLabel();
-		tieLabel.setBounds(new Rectangle(55, 48, 70, 16));
-		tieLabel.setFont(new Font("Dialog", Font.PLAIN, 12));
-		tieLabel.setText("Ankerplatz");
-		chLabel = new JLabel();
-		chLabel.setBounds(new Rectangle(55, 25, 55, 16));
-		chLabel.setFont(new Font("Dialog", Font.PLAIN, 12));
-		chLabel.setText("Channel");
-		sizeLabel = new JLabel();
-		sizeLabel.setBounds(new Rectangle(55, 2, 92, 16));
-		sizeLabel.setFont(new Font("Dialog", Font.PLAIN, 12));
-		sizeLabel.setText("Schiffsgroesse");
-		this.setLayout(null);
-
-		this.setBounds(new Rectangle(0, 0, 165, 112));
-		this.add(getSizeTextField(), null);
-		this.add(sizeLabel, null);
-		this.add(getSizeRadioButton(), null);
-		this.add(getChTextField(), null);
-		this.add(chLabel, null);
-		this.add(getChRadioButton(), null);
-		this.add(getTieTextField(), null);
-		this.add(tieLabel, null);
-		this.add(getTieRadioButton(), null);
-		this.add(getCargoTextField(), null);
-		this.add(cargoLabel, null);
-		this.add(getCargoRadioButton(), null);
-		this.add(getOilTextField(), null);
-		this.add(oilLabel, null);
-		this.add(getOilRadioButton(), null);
-		
-		buttons.add(sizeRadioButton);
-		buttons.add(chRadioButton);
-		buttons.add(tieRadioButton);
-		buttons.add(tieRadioButton);
-	}
-
-	/**
-	 * This method initializes sizeTextField	
-	 * 	
-	 * @return javax.swing.JTextField	
-	 */
-	private JTextField getSizeTextField() {
-		if (sizeTextField == null) {
-			sizeTextField = new JTextField();
-			sizeTextField.setBounds(new Rectangle(0, 0, 55, 20));
-		}
-		return sizeTextField;
-	}
-
-	/**
-	 * This method initializes sizeRadioButton	
-	 * 	
-	 * @return javax.swing.JRadioButton	
-	 */
-	private JRadioButton getSizeRadioButton() {
-		if (sizeRadioButton == null) {
-			sizeRadioButton = new JRadioButton();
-			sizeRadioButton.setBounds(new Rectangle(145, 0, 20, 20));
-		}
-		return sizeRadioButton;
-	}
-
-	/**
-	 * This method initializes chTextField	
-	 * 	
-	 * @return javax.swing.JTextField	
-	 */
-	private JTextField getChTextField() {
-		if (chTextField == null) {
-			chTextField = new JTextField();
-			chTextField.setBounds(new Rectangle(0, 23, 55, 20));
-		}
-		return chTextField;
-	}
-
-	/**
-	 * This method initializes chRadioButton	
-	 * 	
-	 * @return javax.swing.JRadioButton	
-	 */
-	private JRadioButton getChRadioButton() {
-		if (chRadioButton == null) {
-			chRadioButton = new JRadioButton();
-			chRadioButton.setBounds(new Rectangle(145, 23, 20, 20));
-		}
-		return chRadioButton;
-	}
-
-	/**
-	 * This method initializes tieTextField	
-	 * 	
-	 * @return javax.swing.JTextField	
-	 */
-	private JTextField getTieTextField() {
-		if (tieTextField == null) {
-			tieTextField = new JTextField();
-			tieTextField.setBounds(new Rectangle(0, 46, 55, 20));
-		}
-		return tieTextField;
-	}
-
-	/**
-	 * This method initializes tieRadioButton	
-	 * 	
-	 * @return javax.swing.JRadioButton	
-	 */
-	private JRadioButton getTieRadioButton() {
-		if (tieRadioButton == null) {
-			tieRadioButton = new JRadioButton();
-			tieRadioButton.setBounds(new Rectangle(145, 46, 20, 20));
-		}
-		return tieRadioButton;
-	}
-
-	/**
-	 * This method initializes cargoTextField	
-	 * 	
-	 * @return javax.swing.JTextField	
-	 */
-	private JTextField getCargoTextField() {
-		if (cargoTextField == null) {
-			cargoTextField = new JTextField();
-			cargoTextField.setBounds(new Rectangle(0, 69, 55, 20));
-		}
-		return cargoTextField;
-	}
-
-	/**
-	 * This method initializes cargoRadioButton	
-	 * 	
-	 * @return javax.swing.JRadioButton	
-	 */
-	private JRadioButton getCargoRadioButton() {
-		if (cargoRadioButton == null) {
-			cargoRadioButton = new JRadioButton();
-			cargoRadioButton.setBounds(new Rectangle(145, 69, 20, 20));
-		}
-		return cargoRadioButton;
-	}
-
-	/**
-	 * This method initializes oilTextField	
-	 * 	
-	 * @return javax.swing.JTextField	
-	 */
-	private JTextField getOilTextField() {
-		if (oilTextField == null) {
-			oilTextField = new JTextField();
-			oilTextField.setBounds(new Rectangle(0, 92, 55, 20));
-		}
-		return oilTextField;
-	}
-
-	/**
-	 * This method initializes oilRadioButton	
-	 * 	
-	 * @return javax.swing.JRadioButton	
-	 */
-	private JRadioButton getOilRadioButton() {
-		if (oilRadioButton == null) {
-			oilRadioButton = new JRadioButton();
-			oilRadioButton.setBounds(new Rectangle(145, 92, 20, 20));
-		}
-		return oilRadioButton;
-	}
-
-}  //  @jve:decl-index=0:visual-constraint="10,10"
