Index: applications/editors/josm/plugins/addrinterpolation/build.xml
===================================================================
--- applications/editors/josm/plugins/addrinterpolation/build.xml	(revision 17739)
+++ applications/editors/josm/plugins/addrinterpolation/build.xml	(revision 17745)
@@ -91,5 +91,5 @@
                 <attribute name="Plugin-Description" value="Group common Address Interpolation inputs in a single dialog,"/>
                 <attribute name="Plugin-Link" value="http://wiki.openstreetmap.org/wiki/JOSM/Plugins/AddrInterpolation"/>
-                <attribute name="Plugin-Mainversion" value="2161"/>
+                <attribute name="Plugin-Mainversion" value="2100"/>
                 <attribute name="Plugin-Version" value="${version.entry.commit.revision}"/>
             </manifest>
Index: applications/editors/josm/plugins/addrinterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/AddrInterpolationDialog.java
===================================================================
--- applications/editors/josm/plugins/addrinterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/AddrInterpolationDialog.java	(revision 17739)
+++ applications/editors/josm/plugins/addrinterpolation/src/org/openstreetmap/josm/plugins/AddrInterpolation/AddrInterpolationDialog.java	(revision 17745)
@@ -79,5 +79,5 @@
 	private JTextField postCodeTextField = null;
 	private JTextField countryTextField = null;
-	private JTextField allTextField = null;
+	private JTextField fullTextField = null;
 
 	private boolean relationChanged = false; // Whether to re-trigger data changed for relation
@@ -134,5 +134,5 @@
 		lastPostCode = postCodeTextField.getText();
 		lastCountry = countryTextField.getText();
-		lastFullAddress = allTextField.getText();
+		lastFullAddress = fullTextField.getText();
 
 	}
@@ -201,13 +201,4 @@
 		AddEditControlRows(textLabels, editFields,	editControlsPane);
 
-		JPanel optionPanel = new JPanel(new BorderLayout());
-
-		Border dividerBorder = BorderFactory.createEtchedBorder();
-		TitledBorder titleBorder = BorderFactory.createTitledBorder(dividerBorder, tr("Optional Information:"),
-				TitledBorder.LEFT, TitledBorder.BOTTOM);
-
-		optionPanel.setBorder(titleBorder);
-		editControlsPane.add(optionPanel, c);
-
 		// Address interpolation fields not valid if Way not selected
 		if (addrInterpolationWay == null) {
@@ -217,14 +208,90 @@
 		}
 
+
+
+		JPanel optionPanel = CreateOptionalFields();
+		c.gridx = 0;
+		c.gridwidth = 2; // # of columns to span
+		c.fill = GridBagConstraints.BOTH;      // Full width
+		c.gridwidth = GridBagConstraints.REMAINDER;     //end row
+
+		editControlsPane.add(optionPanel, c);
+
+
+		KeyAdapter enterProcessor = new KeyAdapter() {
+			@Override
+			public void keyPressed(KeyEvent e) {
+				if (e.getKeyCode() == KeyEvent.VK_ENTER) {
+					if (ValidateAndSave()) {
+						dialog.dispose();
+					}
+
+				}
+			}
+		};
+
+		// Make Enter == OK click on fields using this adapter
+		endTextField.addKeyListener(enterProcessor);
+		cityTextField.addKeyListener(enterProcessor);
+
+
+
+		if (houseNumberNodes.size() > 0) {
+			JLabel houseNumberNodeNote = new JLabel(tr("Will associate {0} additional house number nodes",
+					houseNumberNodes.size() ));
+			editControlsPane.add(houseNumberNodeNote, c);
+		}
+
+		editControlsPane.add(new UrlLabel("http://wiki.openstreetmap.org/wiki/JOSM/Plugins/AddrInterpolation",
+				tr("More information about this feature")), c);
+
+
+		c.gridx = 0;
+		c.gridwidth = 1; //next-to-last
+		c.fill = GridBagConstraints.NONE;      //reset to default
+		c.weightx = 0.0;
+		c.insets = new Insets(15, 0, 0, 0);
+		c.anchor = GridBagConstraints.LINE_END;
+		JButton okButton = new JButton(tr("OK"), ImageProvider.get("ok"));
+		editControlsPane.add(okButton, c);
+
+		c.gridx = 1;
+		c.gridwidth = GridBagConstraints.REMAINDER;     //end row
+		c.weightx = 1.0;
+		c.anchor = GridBagConstraints.LINE_START;
+
+		JButton cancelButton = new JButton(tr("Cancel"), ImageProvider.get("cancel"));
+		editControlsPane.add(cancelButton, c);
+
+		okButton.setActionCommand("ok");
+		okButton.addActionListener(this);
+		cancelButton.setActionCommand("cancel");
+		cancelButton.addActionListener(this);
+
+		return editControlsPane;
+	}
+
+
+
+	// Create optional control fields in a group box
+	private JPanel CreateOptionalFields() {
+
+		JPanel editControlsPane = new JPanel();
+		GridBagLayout gridbag = new GridBagLayout();
+
+		editControlsPane.setLayout(gridbag);
+
+		editControlsPane.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
+
 		JLabel[] optionalTextLabels = {new JLabel(tr("City:")),
 				new JLabel(tr("State:")),
 				new JLabel(tr("Post Code:")),
 				new JLabel(tr("Country:")),
-				new JLabel(tr("All:"))};
+				new JLabel(tr("Full Address:"))};
 		cityTextField = new JTextField(lastCity, 100);
 		stateTextField = new JTextField(lastState, 100);
 		postCodeTextField = new JTextField(lastPostCode, 20);
 		countryTextField = new JTextField(lastCountry, 2);
-		allTextField = new JTextField(lastFullAddress, 300);
+		fullTextField = new JTextField(lastFullAddress, 300);
 
 		// Special processing for addr:country code, max length and uppercase
@@ -239,4 +306,5 @@
 				} else if (length > jtextfield.getColumns()) {
 					// show error message ??
+					e.consume();
 				} else {
 					// Accept key; convert to upper case
@@ -248,65 +316,18 @@
 		});
 
-
-		KeyAdapter enterProcessor = new KeyAdapter() {
-			@Override
-			public void keyPressed(KeyEvent e) {
-				if (e.getKeyCode() == KeyEvent.VK_ENTER) {
-					if (ValidateAndSave()) {
-						dialog.dispose();
-					}
-
-				}
-			}
-		};
-
-		// Make Enter == OK click on fields using this adapter
-		endTextField.addKeyListener(enterProcessor);
-		cityTextField.addKeyListener(enterProcessor);
-
-
-		Component[] optionalEditFields = {cityTextField, stateTextField, postCodeTextField, countryTextField, allTextField};
+		Component[] optionalEditFields = {cityTextField, stateTextField, postCodeTextField, countryTextField, fullTextField};
 		AddEditControlRows(optionalTextLabels, optionalEditFields,	editControlsPane);
 
 
 
-		c.gridx = 0;
-		c.gridwidth = 2; // # of columns to span
-		c.fill = GridBagConstraints.BOTH;      // Full width
-		c.gridwidth = GridBagConstraints.REMAINDER;     //end row
-
-		if (houseNumberNodes.size() > 0) {
-			JLabel houseNumberNodeNote = new JLabel(tr("Will associate {0} additional house number nodes",
-					houseNumberNodes.size() ));
-			editControlsPane.add(houseNumberNodeNote, c);
-		}
-
-		editControlsPane.add(new UrlLabel("http://wiki.openstreetmap.org/wiki/JOSM/Plugins/AddrInterpolation",
-				tr("More information about this feature")), c);
-
-
-		c.gridx = 0;
-		c.gridwidth = 1; //next-to-last
-		c.fill = GridBagConstraints.NONE;      //reset to default
-		c.weightx = 0.0;
-		c.insets = new Insets(15, 0, 0, 0);
-		c.anchor = GridBagConstraints.LINE_END;
-		JButton okButton = new JButton(tr("OK"), ImageProvider.get("ok"));
-		editControlsPane.add(okButton, c);
-
-		c.gridx = 1;
-		c.gridwidth = GridBagConstraints.REMAINDER;     //end row
-		c.weightx = 1.0;
-		c.anchor = GridBagConstraints.LINE_START;
-
-		JButton cancelButton = new JButton(tr("Cancel"), ImageProvider.get("cancel"));
-		editControlsPane.add(cancelButton, c);
-
-		okButton.setActionCommand("ok");
-		okButton.addActionListener(this);
-		cancelButton.setActionCommand("cancel");
-		cancelButton.addActionListener(this);
-
-		return editControlsPane;
+		JPanel optionPanel = new JPanel(new BorderLayout());
+		Border groupBox = BorderFactory.createEtchedBorder();
+		TitledBorder titleBorder = BorderFactory.createTitledBorder(groupBox, tr("Optional Information:"),
+				TitledBorder.LEFT, TitledBorder.TOP);
+
+		optionPanel.setBorder(titleBorder);
+		optionPanel.add(editControlsPane, BorderLayout.CENTER);
+
+		return optionPanel;
 	}
 
@@ -591,5 +612,5 @@
 		String postCode = ReadTextField(postCodeTextField);
 		String country = ReadTextField(countryTextField);
-		String fullAddress = ReadTextField(allTextField);
+		String fullAddress = ReadTextField(fullTextField);
 
 		String selectedMethod = GetInterpolationMethod();
