Index: /applications/editors/josm/plugins/HouseNumberTaggingTool/.settings/org.eclipse.core.resources.prefs
===================================================================
--- /applications/editors/josm/plugins/HouseNumberTaggingTool/.settings/org.eclipse.core.resources.prefs	(revision 35813)
+++ /applications/editors/josm/plugins/HouseNumberTaggingTool/.settings/org.eclipse.core.resources.prefs	(revision 35814)
@@ -1,3 +1,4 @@
 eclipse.preferences.version=1
+encoding/<project>=UTF-8
+encoding/src=UTF-8
 encoding/test=UTF-8
-encoding/src=UTF-8
Index: /applications/editors/josm/plugins/HouseNumberTaggingTool/build.xml
===================================================================
--- /applications/editors/josm/plugins/HouseNumberTaggingTool/build.xml	(revision 35813)
+++ /applications/editors/josm/plugins/HouseNumberTaggingTool/build.xml	(revision 35814)
@@ -4,5 +4,5 @@
     <property name="commit.message" value="Initial version."/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="13007"/>
+    <property name="plugin.main.version" value="18173"/>
     <!-- Configure these properties (replace "..." accordingly).
          See https://josm.openstreetmap.de/wiki/DevelopersGuide/DevelopingPlugins
Index: /applications/editors/josm/plugins/HouseNumberTaggingTool/src/org/openstreetmap/josm/plugins/housenumbertool/TagDialog.java
===================================================================
--- /applications/editors/josm/plugins/HouseNumberTaggingTool/src/org/openstreetmap/josm/plugins/housenumbertool/TagDialog.java	(revision 35813)
+++ /applications/editors/josm/plugins/HouseNumberTaggingTool/src/org/openstreetmap/josm/plugins/housenumbertool/TagDialog.java	(revision 35814)
@@ -1,4 +1,40 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.plugins.housenumbertool;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+import static org.openstreetmap.josm.tools.I18n.trn;
+
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.event.ActionEvent;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.swing.ButtonGroup;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JRadioButton;
+import javax.swing.JSlider;
+import javax.swing.JTextField;
+import javax.swing.SwingUtilities;
 
 import org.openstreetmap.josm.command.ChangePropertyCommand;
@@ -10,20 +46,6 @@
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.MainApplication;
-import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingComboBox;
+import org.openstreetmap.josm.gui.tagging.ac.AutoCompComboBox;
 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager;
-
-import javax.swing.*;
-import java.awt.*;
-import java.awt.event.ActionEvent;
-import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
-import java.io.*;
-import java.util.List;
-import java.util.*;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import static org.openstreetmap.josm.tools.I18n.tr;
-import static org.openstreetmap.josm.tools.I18n.trn;
 
 /**
@@ -47,7 +69,7 @@
 
     private static final String[] BUILDING_STRINGS = {
-        "yes", "apartments", "chapel", "church", "commercial", "dormitory", "hotel", "house", "residential", "terrace",  
-        "industrial", "retail", "warehouse", "cathedral",  "civic", "hospital", "school", "train_station", "transportation", 
-        "university", "public", "bridge", "bunker", "cabin", "construction", "farm_auxiliary", "garage", "garages", 
+        "yes", "apartments", "chapel", "church", "commercial", "dormitory", "hotel", "house", "residential", "terrace",
+        "industrial", "retail", "warehouse", "cathedral",  "civic", "hospital", "school", "train_station", "transportation",
+        "university", "public", "bridge", "bunker", "cabin", "construction", "farm_auxiliary", "garage", "garages",
         "greenhouse", "hangar", "hut", "roof", "shed", "stable"};
 
@@ -63,11 +85,11 @@
     private static final String TEMPLATE_DATA = "/template.data";
 
-    private AutoCompletingComboBox source;
-    private AutoCompletingComboBox country;
-    private AutoCompletingComboBox state;
-    private AutoCompletingComboBox suburb;
-    private AutoCompletingComboBox city;
-    private AutoCompletingComboBox postcode;
-    private AutoCompletingComboBox street;
+    private AutoCompComboBox<AutoCompletionItem> source;
+    private AutoCompComboBox<AutoCompletionItem> country;
+    private AutoCompComboBox<AutoCompletionItem> state;
+    private AutoCompComboBox<AutoCompletionItem> suburb;
+    private AutoCompComboBox<AutoCompletionItem> city;
+    private AutoCompComboBox<AutoCompletionItem> postcode;
+    private AutoCompComboBox<AutoCompletionItem> street;
     private JTextField housnumber;
     private JCheckBox buildingEnabled;
@@ -221,6 +243,6 @@
         editPanel.add(sourceEnabled, c);
 
-        source = new AutoCompletingComboBox();
-        source.setPossibleAcItems(acm.getTagValues(TAG_SOURCE));
+        source = new AutoCompComboBox<>();
+        source.getModel().addAllElements(acm.getTagValues(TAG_SOURCE));
         source.setPreferredSize(new Dimension(200, 24));
         source.setEditable(true);
@@ -271,6 +293,6 @@
         editPanel.add(countryEnabled, c);
 
-        country = new AutoCompletingComboBox();
-        country.setPossibleAcItems(acm.getTagValues(TAG_ADDR_COUNTRY));
+        country = new AutoCompComboBox<>();
+        country.getModel().addAllElements(acm.getTagValues(TAG_ADDR_COUNTRY));
         country.setPreferredSize(new Dimension(200, 24));
         country.setEditable(true);
@@ -321,6 +343,6 @@
         editPanel.add(stateEnabled, c);
 
-        state = new AutoCompletingComboBox();
-        state.setPossibleAcItems(acm.getTagValues(TAG_ADDR_STATE));
+        state = new AutoCompComboBox<>();
+        state.getModel().addAllElements(acm.getTagValues(TAG_ADDR_STATE));
         state.setPreferredSize(new Dimension(200, 24));
         state.setEditable(true);
@@ -371,6 +393,6 @@
         editPanel.add(suburbEnabled, c);
 
-        suburb = new AutoCompletingComboBox();
-        suburb.setPossibleAcItems(acm.getTagValues(TAG_ADDR_SUBURB));
+        suburb = new AutoCompComboBox<>();
+        suburb.getModel().addAllElements(acm.getTagValues(TAG_ADDR_SUBURB));
         suburb.setPreferredSize(new Dimension(200, 24));
         suburb.setEditable(true);
@@ -421,6 +443,6 @@
         editPanel.add(cityEnabled, c);
 
-        city = new AutoCompletingComboBox();
-        city.setPossibleAcItems(acm.getTagValues(TAG_ADDR_CITY));
+        city = new AutoCompComboBox<>();
+        city.getModel().addAllElements(acm.getTagValues(TAG_ADDR_CITY));
         city.setPreferredSize(new Dimension(200, 24));
         city.setEditable(true);
@@ -471,6 +493,6 @@
         editPanel.add(zipEnabled, c);
 
-        postcode = new AutoCompletingComboBox();
-        postcode.setPossibleAcItems(acm.getTagValues(TAG_ADDR_POSTCODE));
+        postcode = new AutoCompComboBox<>();
+        postcode.getModel().addAllElements(acm.getTagValues(TAG_ADDR_POSTCODE));
         postcode.setPreferredSize(new Dimension(200, 24));
         postcode.setEditable(true);
@@ -549,9 +571,9 @@
         g.add(placeRadio);
 
-        street = new AutoCompletingComboBox();
+        street = new AutoCompComboBox<>();
         if (dto.isTagStreet()) {
-            street.setPossibleItems(getPossibleStreets());
+            street.getModel().addAllElements(getPossibleStreets());
         } else {
-            street.setPossibleAcItems(acm.getTagValues(TAG_ADDR_PLACE));
+            street.getModel().addAllElements(acm.getTagValues(TAG_ADDR_PLACE));
         }
         street.setPreferredSize(new Dimension(200, 24));
@@ -756,5 +778,5 @@
     }
 
-    private String getAutoCompletingComboBoxValue(AutoCompletingComboBox box) {
+    private String getAutoCompletingComboBoxValue(AutoCompComboBox<AutoCompletionItem> box) {
         Object item = box.getSelectedItem();
         if (item != null) {
@@ -886,5 +908,5 @@
         if (!commands.isEmpty()) {
             SequenceCommand sequenceCommand = new SequenceCommand(
-                 trn("Updating properties of up to {0} object", 
+                 trn("Updating properties of up to {0} object",
                      "Updating properties of up to {0} objects", commands.size(), commands.size()), commands);
 
@@ -894,12 +916,12 @@
     }
 
-    private Collection<String> getPossibleStreets() {
-        /**
-         * Generates a list of all visible names of highways in order to do autocompletion on the road name.
-         */
-        Set<String> names = new TreeSet<>();
+    /**
+     * Generates a list of all visible names of highways in order to do autocompletion on the road name.
+     */
+    private Collection<AutoCompletionItem> getPossibleStreets() {
+        Set<AutoCompletionItem> names = new TreeSet<>();
         for (OsmPrimitive osm : MainApplication.getLayerManager().getEditDataSet().allNonDeletedPrimitives()) {
             if (osm.getKeys() != null && osm.keySet().contains("highway") && osm.keySet().contains("name")) {
-                names.add(osm.get("name"));
+                names.add(new AutoCompletionItem(osm.get("name")));
             }
         }
@@ -946,7 +968,7 @@
         public void itemStateChanged(ItemEvent e) {
             if (streetRadio.isSelected()) {
-                street.setPossibleItems(getPossibleStreets());
+                street.getModel().addAllElements(getPossibleStreets());
             } else {
-                street.setPossibleAcItems(acm.getTagValues(TAG_ADDR_PLACE));
+                street.getModel().addAllElements(acm.getTagValues(TAG_ADDR_PLACE));
             }
         }
