Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java	(revision 10848)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java	(revision 10849)
@@ -50,5 +50,4 @@
 import org.openstreetmap.josm.gui.preferences.ToolbarPreferences;
 import org.openstreetmap.josm.gui.tagging.presets.items.Key;
-import org.openstreetmap.josm.gui.tagging.presets.items.Label;
 import org.openstreetmap.josm.gui.tagging.presets.items.Link;
 import org.openstreetmap.josm.gui.tagging.presets.items.Optional;
@@ -174,10 +173,20 @@
 
     /**
-     * Returns the preset icon.
+     * Returns the preset icon (16px).
      * @return The preset icon, or {@code null} if none defined
      * @since 6403
      */
     public final ImageIcon getIcon() {
-        Object icon = getValue(Action.SMALL_ICON);
+        return getIcon(Action.SMALL_ICON);
+    }
+
+    /**
+     * Returns the preset icon (16 or 24px).
+     * @param key Key determining icon size: {@code Action.SMALL_ICON} for 16x, {@code Action.LARGE_ICON_KEY} for 24px
+     * @return The preset icon, or {@code null} if none defined
+     * @since 10849
+     */
+    public final ImageIcon getIcon(String key) {
+        Object icon = getValue(key);
         if (icon instanceof ImageIcon) {
             return (ImageIcon) icon;
@@ -289,9 +298,13 @@
             pp.add(label);
         }
-        if (pp.getComponentCount() > 0) {
-            p.add(pp, GBC.eol());
-        }
+        final int count = pp.getComponentCount();
         if (preset_name_label) {
-            Label.addLabel(p, getIcon(), getName());
+            p.add(new JLabel(getIcon(Action.LARGE_ICON_KEY)), GBC.std(0, 0).span(1, count > 0 ? 2 : 1).insets(0, 0, 5, 0));
+        }
+        if (count > 0) {
+            p.add(pp, GBC.std(1, 0).span(GBC.REMAINDER));
+        }
+        if (preset_name_label) {
+            p.add(new JLabel(getName()), GBC.std(1, count > 0 ? 1 : 0).insets(5, 0, 0, 0).span(GBC.REMAINDER).fill(GBC.HORIZONTAL));
         }
 
@@ -331,5 +344,5 @@
         JToggleButton tb = new JToggleButton(new ToolbarButtonAction());
         tb.setFocusable(false);
-        p.add(tb, GBC.std(0, 0).anchor(GBC.LINE_END));
+        p.add(tb, GBC.std(1, 0).anchor(GBC.LINE_END));
         return p;
     }
@@ -402,10 +415,19 @@
 
     private static class PresetDialog extends ExtendedDialog {
+
+        /**
+         * Constructs a new {@code PresetDialog}.
+         * @param content the content that will be displayed in this dialog
+         * @param title the text that will be shown in the window titlebar
+         * @param icon the image to be displayed as the icon for this window
+         * @param disableApply whether to disable "Apply" button
+         * @param showNewRelation whether to display "New relation" button
+         */
         PresetDialog(Component content, String title, ImageIcon icon, boolean disableApply, boolean showNewRelation) {
             super(Main.parent, title,
                     showNewRelation ?
-                            new String[] {tr("Apply Preset"), tr("New relation"), tr("Cancel")} :
-                                new String[] {tr("Apply Preset"), tr("Cancel")},
-                                true);
+                            (new String[] {tr("Apply Preset"), tr("New relation"), tr("Cancel")}) :
+                            (new String[] {tr("Apply Preset"), tr("Cancel")}),
+                    true);
             if (icon != null)
                 setIconImage(icon.getImage());
@@ -427,12 +449,16 @@
                 setSize(d);
             }
-            showDialog();
-        }
-    }
-
+            super.showDialog();
+        }
+    }
+
+    /**
+     * Shows the preset dialog.
+     * @param sel selection
+     * @param showNewRelation whether to display "New relation" button
+     * @return the user choice after the dialog has been closed
+     */
     public int showDialog(Collection<OsmPrimitive> sel, boolean showNewRelation) {
         PresetPanel p = createPanel(sel);
-        if (p == null)
-            return DIALOG_ANSWER_CANCEL;
 
         int answer = 1;
