// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.gui.tagging.presets.items; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.Collection; import java.util.List; import java.util.Optional; import javax.swing.JLabel; import javax.swing.JPanel; import org.openstreetmap.josm.data.osm.OsmPrimitive; import org.openstreetmap.josm.data.osm.Tag; import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset; import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItem; import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetLabel; import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets; import org.openstreetmap.josm.tools.GBC; /** * Adds a link to an other preset. * @since 8863 */ public class PresetLink extends TaggingPresetItem { static final class TaggingPresetMouseAdapter extends MouseAdapter { private final TaggingPreset t; TaggingPresetMouseAdapter(TaggingPreset t) { this.t = t; } @Override public void mouseClicked(MouseEvent e) { t.actionPerformed(null); } } /** The exact name of the preset to link to. Required. */ public String preset_name = ""; // NOSONAR @Override public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) { final String presetName = preset_name; Optional<TaggingPreset> found = TaggingPresets.getTaggingPresets().stream().filter(preset -> presetName.equals(preset.name)).findFirst(); if (!found.isPresent()) return false; TaggingPreset t = found.get(); JLabel lbl = new TaggingPresetLabel(t); lbl.addMouseListener(new TaggingPresetMouseAdapter(t)); p.add(lbl, GBC.eol().fill(GBC.HORIZONTAL)); return false; } @Override public void addCommands(List<Tag> changedTags) { // Do nothing } }