Changeset 15889 in josm for trunk/src/org/openstreetmap/josm/gui
- Timestamp:
- 2020-02-21T21:19:34+01:00 (5 years ago)
- Location:
- trunk/src/org/openstreetmap/josm/gui
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java
r15885 r15889 32 32 import java.util.Collections; 33 33 import java.util.Comparator; 34 import java.util.EnumSet; 35 import java.util.Iterator; 34 36 import java.util.List; 35 37 import java.util.Map; … … 72 74 import org.openstreetmap.josm.data.osm.OsmDataManager; 73 75 import org.openstreetmap.josm.data.osm.OsmPrimitive; 76 import org.openstreetmap.josm.data.osm.OsmPrimitiveType; 74 77 import org.openstreetmap.josm.data.osm.Tag; 75 78 import org.openstreetmap.josm.data.osm.search.SearchCompiler; … … 86 89 import org.openstreetmap.josm.gui.MainApplication; 87 90 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils; 88 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;89 91 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingComboBox; 90 92 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager; 91 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;92 93 import org.openstreetmap.josm.gui.util.GuiHelper; 93 94 import org.openstreetmap.josm.gui.util.WindowGeometry; … … 684 685 return; 685 686 } 686 final Tag tag = new Tag(keys.getSelectedOrEditItem(), values.getSelectedOrEditItem()); 687 buttons.get(0).setIcon(findIcon(tag) 687 buttons.get(0).setIcon(findIcon(keys.getSelectedOrEditItem(), values.getSelectedOrEditItem()) 688 688 .orElse(ImageProvider.get("ok", ImageProvider.ImageSizes.LARGEICON))); 689 689 } 690 690 691 protected Optional<ImageIcon> findIcon(Tag tag) { 692 final Optional<ImageIcon> taggingPresetIcon = TaggingPresets.getMatchingPresets(null, tag.getKeys(), false).stream() 693 .map(preset -> preset.getIcon(Action.LARGE_ICON_KEY)) 694 .filter(Objects::nonNull) 695 .findFirst(); 696 // Java 9: use Optional.or 697 return taggingPresetIcon.isPresent() ? taggingPresetIcon : Optional.ofNullable(MapPaintStyles.getNodeIcon(tag, false)); 691 protected Optional<ImageIcon> findIcon(String key, String value) { 692 final Iterator<OsmPrimitive> osmPrimitiveIterator = sel.iterator(); 693 final OsmPrimitive virtual = (osmPrimitiveIterator.hasNext() ? osmPrimitiveIterator.next().getType() : OsmPrimitiveType.NODE) 694 .newInstance(0, false); 695 virtual.put(key, value); 696 final ImageIcon padded = ImageProvider.getPadded(virtual, ImageProvider.ImageSizes.LARGEICON.getImageDimension(), 697 EnumSet.of(ImageProvider.GetPaddedOptions.NO_DEFAULT, ImageProvider.GetPaddedOptions.NO_DEPRECATED)); 698 return Optional.ofNullable(padded); 698 699 } 699 700 … … 963 964 action.setEnabled(false); 964 965 } 965 ImageIcon icon = findIcon(t )966 ImageIcon icon = findIcon(t.getKey(), t.getValue()) 966 967 // If still nothing display an empty icon 967 968 -
trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java
r15755 r15889 7 7 import java.util.Arrays; 8 8 import java.util.Collection; 9 import java.util.EnumSet; 9 10 import java.util.LinkedList; 10 11 import java.util.List; … … 20 21 import org.openstreetmap.josm.data.preferences.sources.SourceEntry; 21 22 import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource; 22 import org.openstreetmap.josm.gui.mappaint.styleelement.MapImage;23 import org.openstreetmap.josm.gui.mappaint.styleelement.NodeElement;24 import org.openstreetmap.josm.gui.mappaint.styleelement.StyleElement;25 23 import org.openstreetmap.josm.io.CachedFile; 26 24 import org.openstreetmap.josm.io.FileWatcher; … … 215 213 * @param tag The tag to look an icon for 216 214 * @return {@code null} if no icon found 217 */ 215 * @deprecated use {@link ImageProvider#getPadded} 216 */ 217 @Deprecated 218 218 public static ImageIcon getNodeIcon(Tag tag) { 219 return getNodeIcon(tag, true);220 }221 222 /**223 * Returns the node icon that would be displayed for the given tag.224 * @param tag The tag to look an icon for225 * @param includeDeprecatedIcon if {@code true}, the special deprecated icon will be returned if applicable226 * @return {@code null} if no icon found, or if the icon is deprecated and not wanted227 */228 public static ImageIcon getNodeIcon(Tag tag, boolean includeDeprecatedIcon) {229 219 if (tag != null) { 230 220 DataSet ds = new DataSet(); 231 221 Node virtualNode = new Node(LatLon.ZERO); 232 222 virtualNode.put(tag.getKey(), tag.getValue()); 233 StyleElementList styleList;234 223 MapCSSStyleSource.STYLE_SOURCE_LOCK.readLock().lock(); 235 224 try { 236 225 // Add primitive to dataset to avoid DataIntegrityProblemException when evaluating selectors 237 226 ds.addPrimitive(virtualNode); 238 styleList = getStyles().generateStyles(virtualNode, 0.5, false).a; 227 return ImageProvider.getPadded(virtualNode, ImageProvider.ImageSizes.SMALLICON.getImageDimension(), 228 EnumSet.of(ImageProvider.GetPaddedOptions.NO_PRESETS, ImageProvider.GetPaddedOptions.NO_DEFAULT)); 229 } finally { 239 230 ds.removePrimitive(virtualNode); 240 } finally {241 231 MapCSSStyleSource.STYLE_SOURCE_LOCK.readLock().unlock(); 242 }243 if (styleList != null) {244 for (StyleElement style : styleList) {245 if (style instanceof NodeElement) {246 MapImage mapImage = ((NodeElement) style).mapImage;247 if (mapImage != null) {248 if (includeDeprecatedIcon || mapImage.name == null || !DEPRECATED_IMAGE_NAMES.contains(mapImage.name)) {249 return new ImageIcon(mapImage.getImage(false));250 } else {251 return null; // Deprecated icon found but not wanted252 }253 }254 }255 }256 232 } 257 233 }
Note:
See TracChangeset
for help on using the changeset viewer.