Changeset 6816 in josm for trunk/src/org/openstreetmap


Ignore:
Timestamp:
2014-02-06T10:14:46+01:00 (10 years ago)
Author:
akks
Message:

fix #9678: Download Object dialog can auto-paste numerical values from clipboard again

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/dialogs/OsmIdSelectionDialog.java

    r6771 r6816  
    197197    protected void tryToPasteFromClipboard(OsmIdTextField tfId, OsmPrimitiveTypesComboBox cbType) {
    198198        String buf = Utils.getClipboardContent();
    199         if (buf != null) {
    200             if (buf.length() <= Main.pref.getInteger("downloadprimitive.max-autopaste-length", 2000)) {
    201                 final List<SimplePrimitiveId> ids = SimplePrimitiveId.fuzzyParse(buf);
    202                 final String parsedText = Utils.join(", ", Utils.transform(ids, new Utils.Function<SimplePrimitiveId, String>() {
    203                     @Override
    204                     public String apply(SimplePrimitiveId x) {
    205                         return x.getType().getAPIName().charAt(0) + String.valueOf(x.getUniqueId());
    206                     }
    207                 }));
    208                 tfId.tryToPasteFrom(parsedText);
    209                 final Set<OsmPrimitiveType> types = new HashSet<OsmPrimitiveType>(Utils.transform(ids, new Utils.Function<SimplePrimitiveId, OsmPrimitiveType>() {
    210                     @Override
    211                     public OsmPrimitiveType apply(SimplePrimitiveId x) {
    212                         return x.getType();
    213                     }
    214                 }));
    215                 if (types.size() == 1) {
    216                     // select corresponding type
    217                     cbType.setSelectedItem(types.iterator().next());
    218                 } else {
    219                     // select "mixed"
    220                     cbType.setSelectedIndex(3);
     199        if (buf == null || buf.length()==0) return;
     200        if (buf.length() > Main.pref.getInteger("downloadprimitive.max-autopaste-length", 2000)) return;
     201        final List<SimplePrimitiveId> ids = SimplePrimitiveId.fuzzyParse(buf);
     202        if (!ids.isEmpty()) {
     203            final String parsedText = Utils.join(", ", Utils.transform(ids, new Utils.Function<SimplePrimitiveId, String>() {
     204                @Override
     205                public String apply(SimplePrimitiveId x) {
     206                    return x.getType().getAPIName().charAt(0) + String.valueOf(x.getUniqueId());
    221207                }
     208            }));
     209            tfId.tryToPasteFrom(parsedText);
     210            final Set<OsmPrimitiveType> types = new HashSet<OsmPrimitiveType>(Utils.transform(ids, new Utils.Function<SimplePrimitiveId, OsmPrimitiveType>() {
     211                @Override
     212                public OsmPrimitiveType apply(SimplePrimitiveId x) {
     213                    return x.getType();
     214                }
     215            }));
     216            if (types.size() == 1) {
     217                // select corresponding type
     218                cbType.setSelectedItem(types.iterator().next());
    222219            } else {
    223                 if (buf.contains("node")) cbType.setSelectedIndex(0);
    224                 if (buf.contains("way")) cbType.setSelectedIndex(1);
    225                 if (buf.contains("relation")) cbType.setSelectedIndex(2);
    226                 String[] res = buf.split("/");
    227                 String txt;
    228                 if (res.length > 0) {
    229                     txt = res[res.length - 1];
    230                     if (txt.isEmpty() && txt.length() > 1) txt = res[res.length - 2];
    231                 }
    232             }
     220                // select "mixed"
     221                cbType.setSelectedIndex(3);
     222            }
     223        } else if (buf.matches("[\\d,v\\s]+")) {
     224            //fallback solution for id1,id2,id3 format
     225            tfId.tryToPasteFrom(buf);
    233226        }
    234227    }
Note: See TracChangeset for help on using the changeset viewer.