Ticket #21240: 21240.housenumber.patch

File 21240.housenumber.patch, 8.3 KB (added by marcello@…, 4 years ago)
  • src/org/openstreetmap/josm/plugins/housenumbertool/TagDialog.java

     
    99import org.openstreetmap.josm.data.tagging.ac.AutoCompletionItem;
    1010import org.openstreetmap.josm.gui.ExtendedDialog;
    1111import org.openstreetmap.josm.gui.MainApplication;
    12 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingComboBox;
     12import org.openstreetmap.josm.gui.tagging.ac.AutoCompComboBox;
    1313import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager;
    1414
    1515import javax.swing.*;
     
    6262
    6363    private static final String TEMPLATE_DATA = "/template.data";
    6464
    65     private AutoCompletingComboBox source;
    66     private AutoCompletingComboBox country;
    67     private AutoCompletingComboBox state;
    68     private AutoCompletingComboBox suburb;
    69     private AutoCompletingComboBox city;
    70     private AutoCompletingComboBox postcode;
    71     private AutoCompletingComboBox street;
     65    private AutoCompComboBox<AutoCompletionItem> source;
     66    private AutoCompComboBox<AutoCompletionItem> country;
     67    private AutoCompComboBox<AutoCompletionItem> state;
     68    private AutoCompComboBox<AutoCompletionItem> suburb;
     69    private AutoCompComboBox<AutoCompletionItem> city;
     70    private AutoCompComboBox<AutoCompletionItem> postcode;
     71    private AutoCompComboBox<AutoCompletionItem> street;
    7272    private JTextField housnumber;
    7373    private JCheckBox buildingEnabled;
    7474    private JCheckBox sourceEnabled;
     
    220220        c.insets = new Insets(5, 5, 0, 5);
    221221        editPanel.add(sourceEnabled, c);
    222222
    223         source = new AutoCompletingComboBox();
    224         source.setPossibleAcItems(acm.getTagValues(TAG_SOURCE));
     223        source = new AutoCompComboBox<>();
     224        source.getModel().addAllElements(acm.getTagValues(TAG_SOURCE));
    225225        source.setPreferredSize(new Dimension(200, 24));
    226226        source.setEditable(true);
    227227        source.setSelectedItem(dto.getSource());
     
    270270        c.insets = new Insets(5, 5, 0, 5);
    271271        editPanel.add(countryEnabled, c);
    272272
    273         country = new AutoCompletingComboBox();
    274         country.setPossibleAcItems(acm.getTagValues(TAG_ADDR_COUNTRY));
     273        country = new AutoCompComboBox<>();
     274        country.getModel().addAllElements(acm.getTagValues(TAG_ADDR_COUNTRY));
    275275        country.setPreferredSize(new Dimension(200, 24));
    276276        country.setEditable(true);
    277277        country.setSelectedItem(dto.getCountry());
     
    320320        c.insets = new Insets(5, 5, 0, 5);
    321321        editPanel.add(stateEnabled, c);
    322322
    323         state = new AutoCompletingComboBox();
    324         state.setPossibleAcItems(acm.getTagValues(TAG_ADDR_STATE));
     323        state = new AutoCompComboBox<>();
     324        state.getModel().addAllElements(acm.getTagValues(TAG_ADDR_STATE));
    325325        state.setPreferredSize(new Dimension(200, 24));
    326326        state.setEditable(true);
    327327        state.setSelectedItem(dto.getState());
     
    370370        c.insets = new Insets(5, 5, 0, 5);
    371371        editPanel.add(suburbEnabled, c);
    372372
    373         suburb = new AutoCompletingComboBox();
    374         suburb.setPossibleAcItems(acm.getTagValues(TAG_ADDR_SUBURB));
     373        suburb = new AutoCompComboBox<>();
     374        suburb.getModel().addAllElements(acm.getTagValues(TAG_ADDR_SUBURB));
    375375        suburb.setPreferredSize(new Dimension(200, 24));
    376376        suburb.setEditable(true);
    377377        suburb.setSelectedItem(dto.getSuburb());
     
    420420        c.insets = new Insets(5, 5, 0, 5);
    421421        editPanel.add(cityEnabled, c);
    422422
    423         city = new AutoCompletingComboBox();
    424         city.setPossibleAcItems(acm.getTagValues(TAG_ADDR_CITY));
     423        city = new AutoCompComboBox<>();
     424        city.getModel().addAllElements(acm.getTagValues(TAG_ADDR_CITY));
    425425        city.setPreferredSize(new Dimension(200, 24));
    426426        city.setEditable(true);
    427427        city.setSelectedItem(dto.getCity());
     
    470470        c.insets = new Insets(5, 5, 0, 5);
    471471        editPanel.add(zipEnabled, c);
    472472
    473         postcode = new AutoCompletingComboBox();
    474         postcode.setPossibleAcItems(acm.getTagValues(TAG_ADDR_POSTCODE));
     473        postcode = new AutoCompComboBox<>();
     474        postcode.getModel().addAllElements(acm.getTagValues(TAG_ADDR_POSTCODE));
    475475        postcode.setPreferredSize(new Dimension(200, 24));
    476476        postcode.setEditable(true);
    477477        postcode.setSelectedItem(dto.getPostcode());
     
    548548        g.add(streetRadio);
    549549        g.add(placeRadio);
    550550
    551         street = new AutoCompletingComboBox();
     551        street = new AutoCompComboBox<>();
    552552        if (dto.isTagStreet()) {
    553             street.setPossibleItems(getPossibleStreets());
     553            street.getModel().addAllElements(getPossibleStreets());
    554554        } else {
    555             street.setPossibleAcItems(acm.getTagValues(TAG_ADDR_PLACE));
     555            street.getModel().addAllElements(acm.getTagValues(TAG_ADDR_PLACE));
    556556        }
    557557        street.setPreferredSize(new Dimension(200, 24));
    558558        street.setEditable(true);
     
    739739            dto.setSaveSuburb(suburbEnabled.isSelected());
    740740
    741741            dto.setBuilding((String) building.getSelectedItem());
    742             dto.setSource(getAutoCompletingComboBoxValue(source));
    743             dto.setCity(getAutoCompletingComboBoxValue(city));
    744             dto.setCountry(getAutoCompletingComboBoxValue(country));
     742            dto.setSource(getAutoCompComboBoxValue(source));
     743            dto.setCity(getAutoCompComboBoxValue(city));
     744            dto.setCountry(getAutoCompComboBoxValue(country));
    745745            dto.setHousenumber(housnumber.getText());
    746             dto.setPostcode(getAutoCompletingComboBoxValue(postcode));
    747             dto.setStreet(getAutoCompletingComboBoxValue(street));
    748             dto.setState(getAutoCompletingComboBoxValue(state));
    749             dto.setSuburb(getAutoCompletingComboBoxValue(suburb));
     746            dto.setPostcode(getAutoCompComboBoxValue(postcode));
     747            dto.setStreet(getAutoCompComboBoxValue(street));
     748            dto.setState(getAutoCompComboBoxValue(state));
     749            dto.setSuburb(getAutoCompComboBoxValue(suburb));
    750750            dto.setHousenumberChangeValue(housenumberChangeSequence.getValue());
    751751
    752752            updateJOSMSelection(selection, dto);
     
    755755        setVisible(false);
    756756    }
    757757
    758     private String getAutoCompletingComboBoxValue(AutoCompletingComboBox box) {
     758    private String getAutoCompComboBoxValue(AutoCompComboBox<AutoCompletionItem> box) {
    759759        Object item = box.getSelectedItem();
    760760        if (item != null) {
    761761            if (item instanceof String) {
     
    885885
    886886        if (!commands.isEmpty()) {
    887887            SequenceCommand sequenceCommand = new SequenceCommand(
    888                  trn("Updating properties of up to {0} object",
     888                 trn("Updating properties of up to {0} object",
    889889                     "Updating properties of up to {0} objects", commands.size(), commands.size()), commands);
    890890
    891891            // executes the commands and adds them to the undo/redo chains
     
    893893        }
    894894    }
    895895
    896     private Collection<String> getPossibleStreets() {
     896    private Collection<AutoCompletionItem> getPossibleStreets() {
    897897        /**
    898898         * Generates a list of all visible names of highways in order to do autocompletion on the road name.
    899899         */
    900         Set<String> names = new TreeSet<>();
     900        Set<AutoCompletionItem> names = new TreeSet<>();
    901901        for (OsmPrimitive osm : MainApplication.getLayerManager().getEditDataSet().allNonDeletedPrimitives()) {
    902902            if (osm.getKeys() != null && osm.keySet().contains("highway") && osm.keySet().contains("name")) {
    903                 names.add(osm.get("name"));
     903                names.add(new AutoCompletionItem (osm.get("name")));
    904904            }
    905905        }
    906906        return names;
     
    945945        @Override
    946946        public void itemStateChanged(ItemEvent e) {
    947947            if (streetRadio.isSelected()) {
    948                 street.setPossibleItems(getPossibleStreets());
     948                street.getModel().addAllElements(getPossibleStreets());
    949949            } else {
    950                 street.setPossibleAcItems(acm.getTagValues(TAG_ADDR_PLACE));
     950                street.getModel().addAllElements(acm.getTagValues(TAG_ADDR_PLACE));
    951951            }
    952952        }
    953953    }