Changeset 7100 in josm for trunk/src/org/openstreetmap/josm/tools
- Timestamp:
- 2014-05-11T01:01:33+02:00 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/tools/TaggingPresetNameTemplateList.java
r7005 r7100 7 7 import java.util.List; 8 8 9 import org.openstreetmap.josm.Main; 9 10 import org.openstreetmap.josm.data.osm.OsmPrimitive; 10 import org.openstreetmap.josm.gui.preferences.map.TaggingPresetPreference;11 11 import org.openstreetmap.josm.gui.tagging.TaggingPreset; 12 import org.openstreetmap.josm.gui.tagging.TaggingPresetListener; 12 13 import org.openstreetmap.josm.gui.tagging.TaggingPresetType; 14 import org.openstreetmap.josm.gui.tagging.TaggingPresets; 13 15 14 16 /** 15 17 * List of tagging presets with name templates, allows to find appropriate template based on existing primitive 16 18 */ 17 public final class TaggingPresetNameTemplateList { 19 public final class TaggingPresetNameTemplateList implements TaggingPresetListener { 18 20 19 21 private static TaggingPresetNameTemplateList instance; 20 22 23 /** 24 * Replies the unique instance. 25 * @return the unique instance 26 */ 21 27 public static TaggingPresetNameTemplateList getInstance() { 22 28 if (instance == null) { 23 29 instance = new TaggingPresetNameTemplateList(); 30 TaggingPresets.addListener(instance); 24 31 } 25 32 return instance; 26 33 } 34 27 35 private final List<TaggingPreset> presetsWithPattern = new LinkedList<>(); 28 36 29 37 private TaggingPresetNameTemplateList() { 30 if (TaggingPresetPreference.taggingPresets != null) { 31 for (TaggingPreset tp : TaggingPresetPreference.taggingPresets) { 38 buildPresetsWithPattern(); 39 } 40 41 private void buildPresetsWithPattern() { 42 synchronized(this) { 43 Main.debug("Building list of presets with name template"); 44 presetsWithPattern.clear(); 45 for (TaggingPreset tp : TaggingPresets.getTaggingPresets()) { 32 46 if (tp.nameTemplate != null) { 33 47 presetsWithPattern.add(tp); … … 37 51 } 38 52 53 /** 54 * Finds and returns the first occurence of preset with template name matching the given primitive 55 * @param primitive The primitive to match 56 * @return the first occurence of preset with template name matching the primitive 57 */ 39 58 public TaggingPreset findPresetTemplate(OsmPrimitive primitive) { 40 41 for (TaggingPreset t : presetsWithPattern) { 42 Collection<TaggingPresetType> type = Collections.singleton(TaggingPresetType.forPrimitive(primitive)); 43 if (t.typeMatches(type)) { 44 if (t.nameTemplateFilter != null) { 45 if (t.nameTemplateFilter.match(primitive)) 59 synchronized(this) { 60 for (TaggingPreset t : presetsWithPattern) { 61 Collection<TaggingPresetType> type = Collections.singleton(TaggingPresetType.forPrimitive(primitive)); 62 if (t.typeMatches(type)) { 63 if (t.nameTemplateFilter != null) { 64 if (t.nameTemplateFilter.match(primitive)) 65 return t; 66 else { 67 continue; 68 } 69 } else if (t.matches(type, primitive.getKeys(), false)) { 46 70 return t; 47 else {48 continue;49 71 } 50 } else if (t.matches(type, primitive.getKeys(), false)) {51 return t;52 72 } 53 73 } … … 55 75 return null; 56 76 } 77 78 @Override 79 public void taggingPresetsModified() { 80 buildPresetsWithPattern(); 81 } 57 82 }
Note:
See TracChangeset
for help on using the changeset viewer.