Changeset 4081 in josm for trunk/src/org/openstreetmap/josm/gui/widgets/OsmIdTextField.java
- Timestamp:
- 2011-05-15T16:12:43+02:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/widgets/OsmIdTextField.java
r3083 r4081 4 4 import static org.openstreetmap.josm.tools.I18n.tr; 5 5 6 import java.util.ArrayList; 7 import java.util.List; 8 import java.util.StringTokenizer; 9 6 10 import javax.swing.JTextField; 7 11 import javax.swing.text.JTextComponent; 12 13 import org.openstreetmap.josm.data.osm.OsmPrimitiveType; 14 import org.openstreetmap.josm.data.osm.PrimitiveId; 15 import org.openstreetmap.josm.data.osm.SimplePrimitiveId; 8 16 9 17 /** … … 18 26 } 19 27 20 public int getOsmId() { 28 public void setType(OsmPrimitiveType type) { 29 validator.type = type; 30 } 31 32 public long getOsmId() { 21 33 return validator.getOsmId(); 22 34 } 35 36 /** 37 * Get entered ID list - supports "1,2,3" "1 2 ,3" or even "1 2 3 v2 6 v8" 38 * @return list of id's 39 */ 40 public List<PrimitiveId> getIds() { 41 return validator.ids; 42 } 43 44 public boolean readOsmIds() { 45 return validator.readOsmIds(); 46 } 47 23 48 24 49 /** … … 32 57 } 33 58 59 private List<PrimitiveId> ids = new ArrayList<PrimitiveId>(); 60 private OsmPrimitiveType type; 61 34 62 public OsmIdValidator(JTextComponent tc) { 35 63 super(tc, false); … … 38 66 @Override 39 67 public boolean isValid() { 40 return getOsmId() > 0 ;68 return getOsmId() > 0 || readOsmIds() != false; 41 69 } 42 70 … … 50 78 } 51 79 52 public intgetOsmId() {80 public long getOsmId() { 53 81 String value = getComponent().getText(); 54 82 if (value == null || value.trim().length() == 0) return 0; 55 83 try { 56 int osmId = Integer.parseInt(value.trim()); 57 if (osmId > 0) return osmId; 84 long osmId = Long.parseLong(value.trim()); 85 if (osmId > 0) 86 return osmId; 58 87 return 0; 59 88 } catch(NumberFormatException e) { … … 61 90 } 62 91 } 92 93 public boolean readOsmIds() { 94 String value = getComponent().getText(); 95 char c; 96 if (value == null || value.trim().length() == 0) return false; 97 try { 98 ids.clear(); 99 StringTokenizer st = new StringTokenizer(value,",.+/ \t\n"); 100 String s; 101 while (st.hasMoreTokens()) { 102 s = st.nextToken(); 103 // convert tokens to int skipping v-words (version v2 etc) 104 c = s.charAt(0); 105 if (c=='v') { 106 continue; 107 } 108 else if (c=='n') { 109 ids.add(new SimplePrimitiveId(Long.parseLong(s.substring(1)), OsmPrimitiveType.NODE)); 110 } else if (c=='w') { 111 ids.add(new SimplePrimitiveId(Long.parseLong(s.substring(1)), OsmPrimitiveType.WAY)); 112 } else if (c=='r') { 113 ids.add(new SimplePrimitiveId(Long.parseLong(s.substring(1)), OsmPrimitiveType.RELATION)); 114 } else if (type==OsmPrimitiveType.NODE) { 115 ids.add(new SimplePrimitiveId(Long.parseLong(s), OsmPrimitiveType.NODE)); 116 } else if (type==OsmPrimitiveType.WAY) { 117 ids.add(new SimplePrimitiveId(Long.parseLong(s), OsmPrimitiveType.WAY)); 118 } else if (type==OsmPrimitiveType.RELATION) { 119 ids.add(new SimplePrimitiveId(Long.parseLong(s), OsmPrimitiveType.RELATION)); 120 } 121 } 122 return true; 123 } catch(NumberFormatException e) { 124 return false; 125 } 126 } 63 127 } 64 128 }
Note:
See TracChangeset
for help on using the changeset viewer.