Ticket #6378: autocomplete_last.patch

File autocomplete_last.patch, 2.7 KB (added by akks, 15 years ago)

last tag repeat

  • src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java

     
    2727import java.util.HashMap;
    2828import java.util.Iterator;
    2929import java.util.List;
     30import java.util.ListIterator;
    3031import java.util.Map;
    3132import java.util.Map.Entry;
    3233import java.util.TreeMap;
     
    370371        AutoCompletionManager autocomplete = Main.main.getEditLayer().data.getAutoCompletionManager();
    371372        List<AutoCompletionListItem> keyList = autocomplete.getKeys();
    372373
     374        String lt=null;
     375        // scan history for single last tag-adding command
     376        if (Main.main.undoRedo.commands.size() > 0) {
     377            ListIterator<Command> itr = Main.main.undoRedo.commands.listIterator(
     378                    Main.main.undoRedo.commands.size());
     379            Command cmd;
     380             while (itr.hasPrevious()) {
     381                cmd = itr.previous();
     382                if (cmd instanceof ChangePropertyCommand) {
     383                    // remember the added tag
     384                    lt = ((ChangePropertyCommand) cmd).getKey();
     385                    break;
     386                }
     387            }
     388        }
     389        AutoCompletionListItem itemToSelect=null;
    373390        // remove the object's tag keys from the list
    374391        Iterator<AutoCompletionListItem> iter = keyList.iterator();
    375392        while (iter.hasNext()) {
    376393            AutoCompletionListItem item = iter.next();
     394            if (item.getValue().equals(lt)) { itemToSelect=item; }
    377395            for (int i = 0; i < propertyData.getRowCount(); ++i) {
    378396                if (item.getValue().equals(propertyData.getValueAt(i, 0))) {
    379397                    iter.remove();
     
    385403        Collections.sort(keyList, defaultACItemComparator);
    386404        keys.setPossibleACItems(keyList);
    387405        keys.setEditable(true);
     406        if (itemToSelect!=null) keys.setSelectedItem(itemToSelect);
    388407
    389408        p.add(keys, BorderLayout.CENTER);
    390409
  • src/org/openstreetmap/josm/command/ChangePropertyCommand.java

     
    6161        }
    6262    }
    6363
     64    public String getKey() {
     65        return key;
     66    }
     67
    6468    public ChangePropertyCommand(OsmPrimitive object, String key, String value) {
    6569        this.objects = new LinkedList<OsmPrimitive>();
    6670        this.key = key;