Changeset 6319 in josm for trunk


Ignore:
Timestamp:
2013-10-12T20:18:42+02:00 (11 years ago)
Author:
akks
Message:

fix #9046: Paste Tags in relation editor should work for text buffer

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/tagging/TagTable.java

    r6296 r6319  
    1515import java.beans.PropertyChangeEvent;
    1616import java.beans.PropertyChangeListener;
     17import java.util.ArrayList;
    1718import java.util.Collections;
    1819import java.util.EventObject;
     20import java.util.List;
     21import java.util.Map;
    1922import java.util.concurrent.CopyOnWriteArrayList;
    2023
     
    3538
    3639import org.openstreetmap.josm.Main;
    37 import org.openstreetmap.josm.actions.PasteTagsAction.TagPaster;
     40import org.openstreetmap.josm.actions.PasteTagsAction;
    3841import org.openstreetmap.josm.data.osm.OsmPrimitive;
     42import org.openstreetmap.josm.data.osm.PrimitiveData;
    3943import org.openstreetmap.josm.data.osm.Relation;
     44import org.openstreetmap.josm.data.osm.Tag;
    4045import org.openstreetmap.josm.gui.dialogs.relation.RunnableAction;
     46import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
    4147import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionList;
    4248import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager;
    4349import org.openstreetmap.josm.tools.ImageProvider;
     50import org.openstreetmap.josm.tools.TextTagParser;
     51import org.openstreetmap.josm.tools.Utils;
    4452
    4553/**
     
    324332            Relation relation = new Relation();
    325333            model.applyToPrimitive(relation);
    326             TagPaster tagPaster = new TagPaster(Main.pasteBuffer.getDirectlyAdded(), Collections.<OsmPrimitive>singletonList(relation));
    327             model.updateTags(tagPaster.execute());
    328         }
    329 
     334           
     335            String buf = Utils.getClipboardContent();
     336            if (buf == null || buf.isEmpty() || buf.matches("(\\d+,)*\\d+")) {
     337                List<PrimitiveData> directlyAdded = Main.pasteBuffer.getDirectlyAdded();
     338                if (directlyAdded==null || directlyAdded.isEmpty()) return;
     339                PasteTagsAction.TagPaster tagPaster = new PasteTagsAction.TagPaster(directlyAdded, Collections.<OsmPrimitive>singletonList(relation));
     340                model.updateTags(tagPaster.execute());
     341            } else {
     342                // Paste tags from arbitrary text
     343                 Map<String, String> tags = TextTagParser.readTagsFromText(buf);
     344                 if (tags==null || tags.isEmpty()) {
     345                    TextTagParser.showBadBufferMessage(ht("/Action/PasteTags"));
     346                 } else if (TextTagParser.validateTags(tags)) {
     347                     List<Tag> newTags = new ArrayList<Tag>();
     348                     for (Map.Entry<String, String> entry: tags.entrySet()) {
     349                        String k = entry.getKey();
     350                        String v = entry.getValue();
     351                        newTags.add(new Tag(k,v));
     352                     }
     353                     model.updateTags(newTags);
     354                 }
     355            }
     356        }
     357       
    330358        protected void updateEnabledState() {
    331359            setEnabled(TagTable.this.isEnabled());
Note: See TracChangeset for help on using the changeset viewer.