001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.gui.tagging.presets.items; 003 004import java.awt.event.MouseAdapter; 005import java.awt.event.MouseEvent; 006import java.util.Collection; 007import java.util.List; 008 009import javax.swing.JLabel; 010import javax.swing.JPanel; 011 012import org.openstreetmap.josm.data.osm.OsmPrimitive; 013import org.openstreetmap.josm.data.osm.Tag; 014import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset; 015import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItem; 016import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetLabel; 017import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets; 018import org.openstreetmap.josm.tools.GBC; 019import org.openstreetmap.josm.tools.Predicate; 020import org.openstreetmap.josm.tools.Utils; 021 022/** 023 * Adds a link to an other preset. 024 * @since 8863 025 */ 026public class PresetLink extends TaggingPresetItem { 027 028 /** The exact name of the preset to link to. Required. */ 029 public String preset_name = ""; // NOSONAR 030 031 @Override 032 public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) { 033 final String presetName = preset_name; 034 final TaggingPreset t = Utils.filter(TaggingPresets.getTaggingPresets(), new Predicate<TaggingPreset>() { 035 @Override 036 public boolean evaluate(TaggingPreset object) { 037 return presetName.equals(object.name); 038 } 039 }).iterator().next(); 040 if (t == null) 041 return false; 042 JLabel lbl = new TaggingPresetLabel(t); 043 lbl.addMouseListener(new MouseAdapter() { 044 @Override 045 public void mouseClicked(MouseEvent arg0) { 046 t.actionPerformed(null); 047 } 048 }); 049 p.add(lbl, GBC.eol().fill(GBC.HORIZONTAL)); 050 return false; 051 } 052 053 @Override 054 public void addCommands(List<Tag> changedTags) { 055 // Do nothing 056 } 057}