Ignore:
Timestamp:
2011-05-15T16:12:43+02:00 (13 years ago)
Author:
bastiK
Message:

applied #6251 (patch by akks) - Download multiple objects on Ctrl-Shift-O

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/widgets/OsmIdTextField.java

    r3083 r4081  
    44import static org.openstreetmap.josm.tools.I18n.tr;
    55
     6import java.util.ArrayList;
     7import java.util.List;
     8import java.util.StringTokenizer;
     9
    610import javax.swing.JTextField;
    711import javax.swing.text.JTextComponent;
     12
     13import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
     14import org.openstreetmap.josm.data.osm.PrimitiveId;
     15import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
    816
    917/**
     
    1826    }
    1927
    20     public int getOsmId() {
     28    public void setType(OsmPrimitiveType type) {
     29        validator.type = type;
     30    }
     31
     32    public long getOsmId() {
    2133        return validator.getOsmId();
    2234    }
     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
    2348
    2449    /**
     
    3257        }
    3358
     59        private List<PrimitiveId> ids = new ArrayList<PrimitiveId>();
     60        private OsmPrimitiveType type;
     61
    3462        public OsmIdValidator(JTextComponent tc) {
    3563            super(tc, false);
     
    3866        @Override
    3967        public boolean isValid() {
    40             return getOsmId() > 0;
     68            return getOsmId() > 0 || readOsmIds() != false;
    4169        }
    4270
     
    5078        }
    5179
    52         public int getOsmId() {
     80        public long getOsmId() {
    5381            String value  = getComponent().getText();
    5482            if (value == null || value.trim().length() == 0) return 0;
    5583            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;
    5887                return 0;
    5988            } catch(NumberFormatException e) {
     
    6190            }
    6291        }
     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        }
    63127    }
    64128}
Note: See TracChangeset for help on using the changeset viewer.