source: josm/trunk/src/org/openstreetmap/josm/gui/datatransfer/importers/TextTagPaster.java@ 10737

Last change on this file since 10737 was 10737, checked in by Don-vip, 8 years ago

fix #12900 - Conflicts in pasted tags cannot be resolved, cannot be resolved to "none" (patch by michael2402) - gsoc-core

File size: 2.1 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.datatransfer.importers;
3
4import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
5
6import java.awt.datatransfer.DataFlavor;
7import java.awt.datatransfer.UnsupportedFlavorException;
8import java.io.IOException;
9import java.util.Map;
10
11import javax.swing.TransferHandler.TransferSupport;
12
13import org.openstreetmap.josm.Main;
14import org.openstreetmap.josm.tools.TextTagParser;
15
16/**
17 * This transfer support allows us to import tags from the text that was copied to the clipboard.
18 * @author Michael Zangl
19 * @since 10604
20 */
21public final class TextTagPaster extends AbstractTagPaster {
22 private static final String help = ht("/Action/PasteTags");
23
24 /**
25 * Create a new {@link TextTagPaster}
26 */
27 public TextTagPaster() {
28 super(DataFlavor.stringFlavor);
29 }
30
31 @Override
32 public boolean supports(TransferSupport support) {
33 try {
34 return super.supports(support) && containsValidTags(support);
35 } catch (UnsupportedFlavorException | IOException e) {
36 Main.warn(e);
37 return false;
38 }
39 }
40
41 private boolean containsValidTags(TransferSupport support) throws UnsupportedFlavorException, IOException {
42 Map<String, String> tags = getTagsImpl(support);
43 return tags != null && !tags.isEmpty();
44 }
45
46 @Override
47 protected Map<String, String> getTags(TransferSupport support) throws UnsupportedFlavorException, IOException {
48 Map<String, String> tags = getTagsImpl(support);
49 if (tags == null || tags.isEmpty()) {
50 TextTagParser.showBadBufferMessage(help);
51 throw new IOException("Invalid tags to paste.");
52 }
53 if (!TextTagParser.validateTags(tags)) {
54 throw new IOException("Tags to paste are not valid.");
55 }
56 return tags;
57 }
58
59 private Map<String, String> getTagsImpl(TransferSupport support) throws UnsupportedFlavorException, IOException {
60 return TextTagParser.readTagsFromText((String) support.getTransferable().getTransferData(df));
61 }
62}
Note: See TracBrowser for help on using the repository browser.