Changeset 5614 in josm for trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
- Timestamp:
- 2012-12-06T22:54:00+01:00 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
r5606 r5614 67 67 import org.openstreetmap.josm.gui.layer.OsmDataLayer; 68 68 import org.openstreetmap.josm.gui.preferences.SourceEntry; 69 import org.openstreetmap.josm.gui.preferences.map.TaggingPresetPreference; 69 70 import org.openstreetmap.josm.gui.preferences.map.TaggingPresetPreference.PresetPrefHelper; 70 71 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField; … … 76 77 import org.openstreetmap.josm.tools.GBC; 77 78 import org.openstreetmap.josm.tools.ImageProvider; 79 import org.openstreetmap.josm.tools.Predicate; 78 80 import org.openstreetmap.josm.tools.UrlLabel; 79 81 import org.openstreetmap.josm.tools.Utils; … … 1094 1096 public String text_context; 1095 1097 public String locale_text; 1098 public Match memberExpression; 1096 1099 1097 1100 public boolean required = false; … … 1107 1110 } else if(!"optional".equals(str)) 1108 1111 throw new SAXException(tr("Unknown requisite: {0}", str)); 1112 } 1113 1114 public void setMember_expression(String member_expression) throws SAXException { 1115 try { 1116 this.memberExpression = SearchCompiler.compile(member_expression, true, true); 1117 } catch (SearchCompiler.ParseError ex) { 1118 throw new SAXException(tr("Illegal member expression: {0}", ex.getMessage()), ex); 1119 } 1109 1120 } 1110 1121 … … 1158 1169 public static class Roles extends Item { 1159 1170 1160 public List<Role> roles = new LinkedList<Role>();1171 public final List<Role> roles = new LinkedList<Role>(); 1161 1172 1162 1173 @Override … … 1241 1252 public EnumSet<PresetType> types; 1242 1253 public List<Item> data = new LinkedList<Item>(); 1254 public Roles roles; 1243 1255 public TemplateEntry nameTemplate; 1244 1256 public Match nameTemplateFilter; … … 1428 1440 if (o instanceof Roles) { 1429 1441 all.getLast().data.add((Item) o); 1442 if (all.getLast().roles != null) { 1443 throw new SAXException(tr("Roles cannot appear more than once")); 1444 } 1445 all.getLast().roles = (Roles) o; 1430 1446 lastrole = (Roles) o; 1431 1447 } else if (o instanceof Role) { … … 1572 1588 } 1573 1589 1590 public String suggestRoleForOsmPrimitive(OsmPrimitive osm) { 1591 if (roles == null) { 1592 return null; 1593 } 1594 for (Role i : roles.roles) { 1595 if (i.memberExpression != null && i.memberExpression.match(osm)) { 1596 return i.key; 1597 } 1598 } 1599 return null; 1600 } 1601 1574 1602 public void actionPerformed(ActionEvent e) { 1575 1603 if (Main.main == null) return; … … 1590 1618 r.put(t.getKey(), t.getValue()); 1591 1619 } 1592 for(OsmPrimitive osm : Main.main.getCurrentDataSet().getSelected()) { 1593 RelationMember rm = new RelationMember("", osm); 1620 for (OsmPrimitive osm : Main.main.getCurrentDataSet().getSelected()) { 1621 String role = suggestRoleForOsmPrimitive(osm); 1622 RelationMember rm = new RelationMember(role == null ? "" : role, osm); 1594 1623 r.addMember(rm); 1595 1624 members.add(rm); … … 1773 1802 return atLeastOnePositiveMatch; 1774 1803 } 1804 1805 public static Collection<TaggingPreset> getMatchingPresets(final Collection<PresetType> t, final Map<String, String> tags, final boolean onlyShowable) { 1806 return Utils.filter(TaggingPresetPreference.taggingPresets, new Predicate<TaggingPreset>() { 1807 @Override 1808 public boolean evaluate(TaggingPreset object) { 1809 return object.matches(t, tags, onlyShowable); 1810 } 1811 }); 1812 } 1775 1813 }
Note:
See TracChangeset
for help on using the changeset viewer.