Changeset 12683 in josm for trunk/src/org/openstreetmap/josm/gui/datatransfer/importers/TextTagPaster.java
- Timestamp:
- 2017-08-28T14:44:23+02:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/datatransfer/importers/TextTagPaster.java
r12620 r12683 3 3 4 4 import static org.openstreetmap.josm.gui.help.HelpUtil.ht; 5 import static org.openstreetmap.josm.tools.I18n.tr; 5 6 7 import java.awt.GridBagLayout; 6 8 import java.awt.datatransfer.DataFlavor; 7 9 import java.awt.datatransfer.UnsupportedFlavorException; … … 9 11 import java.util.Map; 10 12 13 import javax.swing.JLabel; 14 import javax.swing.JOptionPane; 15 import javax.swing.JPanel; 11 16 import javax.swing.TransferHandler.TransferSupport; 12 17 18 import org.openstreetmap.josm.Main; 19 import org.openstreetmap.josm.gui.ExtendedDialog; 20 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils; 21 import org.openstreetmap.josm.gui.help.HelpUtil; 22 import org.openstreetmap.josm.gui.widgets.UrlLabel; 23 import org.openstreetmap.josm.io.XmlWriter; 24 import org.openstreetmap.josm.tools.GBC; 25 import org.openstreetmap.josm.tools.LanguageInfo.LocaleType; 13 26 import org.openstreetmap.josm.tools.Logging; 14 27 import org.openstreetmap.josm.tools.TextTagParser; 28 import org.openstreetmap.josm.tools.TextTagParser.TagWarningCallback; 15 29 16 30 /** … … 47 61 Map<String, String> tags = getTagsImpl(support); 48 62 if (tags.isEmpty()) { 49 TextTagParser.showBadBufferMessage(HELP);63 showBadBufferMessage(HELP); 50 64 throw new IOException("Invalid tags to paste."); 51 65 } 52 if (!TextTagParser.validateTags(tags )) {66 if (!TextTagParser.validateTags(tags, TextTagPaster::warning)) { 53 67 throw new IOException("Tags to paste are not valid."); 54 68 } … … 59 73 return TextTagParser.readTagsFromText((String) support.getTransferable().getTransferData(df)); 60 74 } 75 76 /** 77 * Default {@link TagWarningCallback} implementation. 78 * Displays a warning about a problematic tag and ask user what to do about it. 79 * @param text Message to display 80 * @param data Tag key and/or value 81 * @param code to use with {@code ExtendedDialog#toggleEnable(String)} 82 * @return 1 to validate and display next warnings if any, 2 to cancel operation, 3 to clear buffer, 4 to paste tags 83 * @since 12683 84 */ 85 public static int warning(String text, String data, String code) { 86 ExtendedDialog ed = new ExtendedDialog( 87 Main.parent, 88 tr("Do you want to paste these tags?"), 89 tr("Ok"), tr("Cancel"), tr("Clear buffer"), tr("Ignore warnings")); 90 ed.setButtonIcons("ok", "cancel", "dialogs/delete", "pastetags"); 91 ed.setContent("<html><b>"+text + "</b><br/><br/><div width=\"300px\">"+XmlWriter.encode(data, true)+"</html>"); 92 ed.setDefaultButton(2); 93 ed.setCancelButton(2); 94 ed.setIcon(JOptionPane.WARNING_MESSAGE); 95 ed.toggleEnable(code); 96 ed.showDialog(); 97 int r = ed.getValue(); 98 if (r == 0) r = 2; 99 // clean clipboard if user asked 100 if (r == 3) ClipboardUtils.copyString(""); 101 return r; 102 } 103 104 /** 105 * Shows message that the buffer can not be pasted, allowing user to clean the buffer 106 * @param helpTopic the help topic of the parent action 107 * TODO: Replace by proper HelpAwareOptionPane instead of self-made help link 108 */ 109 public static void showBadBufferMessage(String helpTopic) { 110 String msg = tr("<html><p> Sorry, it is impossible to paste tags from buffer. It does not contain any JOSM object" 111 + " or suitable text. </p></html>"); 112 JPanel p = new JPanel(new GridBagLayout()); 113 p.add(new JLabel(msg), GBC.eop()); 114 String helpUrl = HelpUtil.getHelpTopicUrl(HelpUtil.buildAbsoluteHelpTopic(helpTopic, LocaleType.DEFAULT)); 115 if (helpUrl != null) { 116 p.add(new UrlLabel(helpUrl), GBC.eop()); 117 } 118 119 ExtendedDialog ed = new ExtendedDialog( 120 Main.parent, 121 tr("Warning"), 122 tr("Ok"), tr("Clear buffer")) 123 .setButtonIcons("ok", "dialogs/delete") 124 .setContent(p) 125 .setDefaultButton(1) 126 .setCancelButton(1) 127 .setIcon(JOptionPane.WARNING_MESSAGE) 128 .toggleEnable("tags.paste.cleanbadbuffer"); 129 130 ed.showDialog(); 131 132 // clean clipboard if user asked 133 if (ed.getValue() == 2) ClipboardUtils.copyString(""); 134 } 61 135 }
Note:
See TracChangeset
for help on using the changeset viewer.