Index: /trunk/resources/data/tagging-preset.xsd
===================================================================
--- /trunk/resources/data/tagging-preset.xsd	(revision 17604)
+++ /trunk/resources/data/tagging-preset.xsd	(revision 17605)
@@ -271,4 +271,5 @@
         <attribute name="href" type="string" />
         <attributeGroup ref="tns:attributes.text" />
+        <attributeGroup ref="tns:attributes.icon" />
 
         <attribute name="name" use="prohibited" />
@@ -317,4 +318,5 @@
         <attributeGroup ref="tns:attributes.key" />
         <attributeGroup ref="tns:attributes.text" />
+        <attributeGroup ref="tns:attributes.icon" />
         <attribute name="use_last_as_default" type="tns:last_default" />
         <attribute name="auto_increment" type="string">
@@ -382,4 +384,5 @@
         <attributeGroup ref="tns:attributes.key" />
         <attributeGroup ref="tns:attributes.text" />
+        <attributeGroup ref="tns:attributes.icon" />
         <attributeGroup ref="tns:attributes.values" />
         <attribute name="use_last_as_default" type="tns:last_default" />
@@ -409,4 +412,5 @@
         <attributeGroup ref="tns:attributes.key" />
         <attributeGroup ref="tns:attributes.text" />
+        <attributeGroup ref="tns:attributes.icon" />
         <attributeGroup ref="tns:attributes.values" />
         <attribute name="use_last_as_default" type="tns:last_default" />
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Check.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Check.java	(revision 17604)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Check.java	(revision 17605)
@@ -10,13 +10,10 @@
 import java.util.List;
 
-import javax.swing.ImageIcon;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
-import javax.swing.SwingConstants;
 
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmUtils;
 import org.openstreetmap.josm.data.osm.Tag;
-import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetReader;
 import org.openstreetmap.josm.gui.widgets.QuadStateCheckBox;
 import org.openstreetmap.josm.tools.GBC;
@@ -96,5 +93,6 @@
             JPanel checkPanel = new JPanel(new GridBagLayout());
             checkPanel.add(check, GBC.std());
-            JLabel label = new JLabel(locale_text, getIcon(), SwingConstants.LEFT);
+            JLabel label = new JLabel(locale_text);
+            addIcon(label);
             label.addMouseListener(new MouseAdapter() {
                 @Override
@@ -129,13 +127,4 @@
     }
 
-    /**
-     * Returns the entry icon, if any.
-     * @return the entry icon, or {@code null}
-     * @since 15437
-     */
-    public ImageIcon getIcon() {
-        return icon == null ? null : loadImageIcon(icon, TaggingPresetReader.getZipIcons(), (int) icon_size);
-    }
-
     @Override
     public Collection<String> getValues() {
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java	(revision 17604)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/ComboMultiSelect.java	(revision 17605)
@@ -216,4 +216,5 @@
 
         final JLabel label = new JLabel(tr("{0}:", locale_text));
+        addIcon(label);
         label.setToolTipText(getKeyTooltipText());
         label.setComponentPopupMenu(getPopupMenu());
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Label.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Label.java	(revision 17604)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Label.java	(revision 17605)
@@ -4,11 +4,8 @@
 import java.util.Collection;
 
-import javax.swing.Icon;
-import javax.swing.ImageIcon;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetReader;
 import org.openstreetmap.josm.tools.GBC;
 
@@ -18,32 +15,12 @@
 public class Label extends TextItem {
 
-    /** The location of icon file to display (optional) */
-    public String icon; // NOSONAR
-    /** The size of displayed icon. If not set, default is 16px */
-    public short icon_size = 16; // NOSONAR
-
     @Override
     public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel, boolean presetInitiallyMatches) {
         initializeLocaleText(null);
-        addLabel(p, getIcon(), locale_text);
+        JLabel label = new JLabel(locale_text);
+        addIcon(label);
+        p.add(label, GBC.eol().fill(GBC.HORIZONTAL));
         return true;
     }
 
-    /**
-     * Adds a new {@code JLabel} to the given panel.
-     * @param p The panel
-     * @param icon the icon (optional, can be null)
-     * @param label The text label
-     */
-    public static void addLabel(JPanel p, Icon icon, String label) {
-        p.add(new JLabel(label, icon, JLabel.LEADING), GBC.eol().fill(GBC.HORIZONTAL));
-    }
-
-    /**
-     * Returns the label icon, if any.
-     * @return the label icon, or {@code null}
-     */
-    public ImageIcon getIcon() {
-        return icon == null ? null : loadImageIcon(icon, TaggingPresetReader.getZipIcons(), (int) icon_size);
-    }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Link.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Link.java	(revision 17604)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Link.java	(revision 17605)
@@ -44,5 +44,5 @@
         final String url = getUrl();
         if (wiki != null) {
-            return new UrlLabel(url, locale_text, 2) {
+            UrlLabel urlLabel = new UrlLabel(url, locale_text, 2) {
                 @Override
                 public void mouseClicked(MouseEvent e) {
@@ -57,6 +57,10 @@
                 }
             };
+            addIcon(urlLabel);
+            return urlLabel;
         } else if (href != null || locale_href != null) {
-            return new UrlLabel(url, locale_text, 2);
+            UrlLabel urlLabel = new UrlLabel(url, locale_text, 2);
+            addIcon(urlLabel);
+            return urlLabel;
         }
         return null;
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Text.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Text.java	(revision 17604)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/Text.java	(revision 17605)
@@ -164,5 +164,6 @@
             value = pnl;
         }
-        final JLabel label = new JLabel(locale_text + ':');
+        final JLabel label = new JLabel(tr("{0}:", locale_text));
+        addIcon(label);
         label.setToolTipText(getKeyTooltipText());
         label.setComponentPopupMenu(getPopupMenu());
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/TextItem.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/TextItem.java	(revision 17604)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/TextItem.java	(revision 17605)
@@ -6,4 +6,9 @@
 import org.openstreetmap.josm.data.osm.Tag;
 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItem;
+import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetReader;
+
+import javax.swing.ImageIcon;
+import javax.swing.JLabel;
+import javax.swing.SwingConstants;
 
 /**
@@ -21,4 +26,10 @@
     /** The localized version of {@link #text} */
     public String locale_text; // NOSONAR
+
+    /** The location of icon file to display */
+    public String icon; // NOSONAR
+    /** The size of displayed icon. If not set, default is 16px */
+    public short icon_size = 16; // NOSONAR
+
 
     protected final void initializeLocaleText(String defaultText) {
@@ -39,4 +50,23 @@
     }
 
+    /**
+     * Defines the label icon from this entry's icon
+     * @param label the component
+     * @since 17605
+     */
+    protected void addIcon(JLabel label) {
+        label.setIcon(getIcon());
+        label.setHorizontalAlignment(SwingConstants.LEADING);
+    }
+
+    /**
+     * Returns the entry icon, if any.
+     * @return the entry icon, or {@code null}
+     * @since 17605
+     */
+    public ImageIcon getIcon() {
+        return icon == null ? null : loadImageIcon(icon, TaggingPresetReader.getZipIcons(), (int) icon_size);
+    }
+
     @Override
     public String toString() {
Index: /trunk/src/org/openstreetmap/josm/gui/widgets/UrlLabel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/widgets/UrlLabel.java	(revision 17604)
+++ /trunk/src/org/openstreetmap/josm/gui/widgets/UrlLabel.java	(revision 17605)
@@ -60,5 +60,5 @@
 
     /**
-     * Constructs a new {@code UrlLabel} for the given URL, description and font increase.
+     * Constructs a new {@code UrlLabel} for the given URL, description and image.
      * @param url The URL to use
      * @param description The description to display
