Ticket #6251: mutidownload.patch
| File mutidownload.patch, 3.2 KB (added by , 15 years ago) |
|---|
-
org/openstreetmap/josm/gui/widgets/OsmIdTextField.java
1 1 // License: GPL. For details, see LICENSE file. 2 2 package org.openstreetmap.josm.gui.widgets; 3 3 4 import java.util.Arrays; 5 import java.util.StringTokenizer; 4 6 import static org.openstreetmap.josm.tools.I18n.tr; 5 7 6 8 import javax.swing.JTextField; … … 21 23 return validator.getOsmId(); 22 24 } 23 25 26 public int[] getOsmIds() { 27 return validator.getOsmIds(); 28 } 29 24 30 /** 25 31 * Validator for a changeset ID entered in a {@see JTextComponent}. 26 32 * … … 37 43 38 44 @Override 39 45 public boolean isValid() { 40 return getOsmId() > 0 ;46 return getOsmId() > 0 || getOsmIds()!=null; 41 47 } 42 48 43 49 @Override … … 60 66 return 0; 61 67 } 62 68 } 69 70 public int[] getOsmIds() { 71 String value = getComponent().getText(); 72 if (value == null || value.trim().length() == 0) return null; 73 try { 74 //String[] parts = value.split("[,\\.\\s\\t\\n]+"); 75 StringTokenizer st = new StringTokenizer(value,",.+/ \t\n"); 76 int ids[]=new int[st.countTokens()]; 77 int j=0; String s; 78 while (st.hasMoreTokens()) { 79 s = st.nextToken(); 80 // convert tokens to int skipping v-words (version v2 etc) 81 if (s.charAt(0)!='v') ids[j++]=Integer.parseInt(s); 82 } 83 return Arrays.copyOf(ids, j); 84 } catch(NumberFormatException e) { 85 return null; 86 } 87 } 63 88 } 64 89 } -
org/openstreetmap/josm/actions/DownloadPrimitiveAction.java
92 92 Main.pref.putInteger("downloadprimitive.lasttype", cbType.getSelectedIndex()); 93 93 Main.pref.put("downloadprimitive.referrers", referrers.isSelected()); 94 94 Main.pref.put("download.newlayer", layer.isSelected()); 95 int id = tfId.getOsmId();96 if(id <= 0)95 int ids[] = tfId.getOsmIds(); 96 if(ids == null) 97 97 JOptionPane.showMessageDialog( 98 98 Main.parent, 99 tr("Invalid ID specified. Cannot download object."), 99 tr("Invalid ID specified. Single ID or any list can be entered\n" 100 + " Cannot download object."), 100 101 tr("Information"), 101 102 JOptionPane.INFORMATION_MESSAGE 102 103 ); 103 else 104 download(layer.isSelected(), cbType.getType(), id, referrers.isSelected()); 104 else for (int i=0;i<ids.length;i++) { 105 download(layer.isSelected(), cbType.getType(), ids[i], referrers.isSelected()); 106 } 105 107 } 106 108 107 109 /**
