Index: /trunk/src/org/openstreetmap/josm/actions/RedoAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/RedoAction.java	(revision 4917)
+++ /trunk/src/org/openstreetmap/josm/actions/RedoAction.java	(revision 4918)
@@ -49,5 +49,5 @@
             putValue(NAME, tr("Redo ..."));
             setTooltip(tr("Redo {0}",
-                    Main.main.undoRedo.redoCommands.getFirst().getDescrpitionText()));
+                    Main.main.undoRedo.redoCommands.getFirst().getDescriptionText()));
         }
     }
Index: /trunk/src/org/openstreetmap/josm/actions/UndoAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/UndoAction.java	(revision 4917)
+++ /trunk/src/org/openstreetmap/josm/actions/UndoAction.java	(revision 4918)
@@ -49,5 +49,5 @@
             putValue(NAME, tr("Undo ..."));
             setTooltip(tr("Undo {0}",
-                    Main.main.undoRedo.commands.getFirst().getDescrpitionText()));
+                    Main.main.undoRedo.commands.getFirst().getDescriptionText()));
         }
     }
Index: /trunk/src/org/openstreetmap/josm/command/AddCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/AddCommand.java	(revision 4917)
+++ /trunk/src/org/openstreetmap/josm/command/AddCommand.java	(revision 4918)
@@ -8,5 +8,5 @@
 import java.util.Collections;
 
-import javax.swing.JLabel;
+import javax.swing.Icon;
 
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -60,5 +60,6 @@
     }
 
-    @Override public JLabel getDescription() {
+    @Override
+    public String getDescriptionText() {
         String msg;
         switch(OsmPrimitiveType.from(osm)) {
@@ -68,9 +69,10 @@
         default: /* should not happen */msg = ""; break;
         }
+        return tr(msg, osm.getDisplayName(DefaultNameFormatter.getInstance()));
+    }
 
-        return new JLabel(
-                tr(msg, osm.getDisplayName(DefaultNameFormatter.getInstance())),
-                ImageProvider.get(OsmPrimitiveType.from(osm)),
-                JLabel.HORIZONTAL);
+    @Override
+    public Icon getDescriptionIcon() {
+        return ImageProvider.get(OsmPrimitiveType.from(osm));
     }
 
Index: /trunk/src/org/openstreetmap/josm/command/AddPrimitivesCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/AddPrimitivesCommand.java	(revision 4917)
+++ /trunk/src/org/openstreetmap/josm/command/AddPrimitivesCommand.java	(revision 4918)
@@ -8,4 +8,5 @@
 import java.util.HashSet;
 import java.util.List;
+import javax.swing.Icon;
 
 import javax.swing.JLabel;
@@ -101,9 +102,13 @@
     }
 
-    @Override public JLabel getDescription() {
+    @Override
+    public String getDescriptionText() {
         int size = data != null ? data.size() : createdPrimitives.size();
-        return new JLabel(trn("Added {0} object", "Added {0} objects", size, size), null,
-                JLabel.HORIZONTAL
-        );
+        return trn("Added {0} object", "Added {0} objects", size, size);
+    }
+
+    @Override
+    public Icon getDescriptionIcon() {
+        return null;
     }
 
Index: /trunk/src/org/openstreetmap/josm/command/ChangeCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/ChangeCommand.java	(revision 4917)
+++ /trunk/src/org/openstreetmap/josm/command/ChangeCommand.java	(revision 4918)
@@ -6,6 +6,5 @@
 
 import java.util.Collection;
-
-import javax.swing.JLabel;
+import javax.swing.Icon;
 
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -50,5 +49,6 @@
     }
 
-    @Override public JLabel getDescription() {
+    @Override
+    public String getDescriptionText() {
         String msg = "";
         switch(OsmPrimitiveType.from(osm)) {
@@ -57,8 +57,10 @@
         case RELATION: msg = marktr("Change relation {0}"); break;
         }
-        return new JLabel(tr(msg,
-                    osm.getDisplayName(DefaultNameFormatter.getInstance())),
-                    ImageProvider.get(OsmPrimitiveType.from(osm)),
-                    JLabel.HORIZONTAL);
+        return tr(msg, osm.getDisplayName(DefaultNameFormatter.getInstance()));
+    }
+
+    @Override
+    public Icon getDescriptionIcon() {
+        return ImageProvider.get(OsmPrimitiveType.from(osm));
     }
 }
Index: /trunk/src/org/openstreetmap/josm/command/ChangeNodesCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/ChangeNodesCommand.java	(revision 4917)
+++ /trunk/src/org/openstreetmap/josm/command/ChangeNodesCommand.java	(revision 4918)
@@ -6,6 +6,5 @@
 import java.util.Collection;
 import java.util.List;
-
-import javax.swing.JLabel;
+import javax.swing.Icon;
 
 import org.openstreetmap.josm.data.osm.Node;
@@ -46,9 +45,12 @@
     }
 
-    @Override public JLabel getDescription() {
-        String msg = tr("Changed nodes of {0}", way.getDisplayName(DefaultNameFormatter.getInstance()));
-        return new JLabel(msg,
-                        ImageProvider.get(OsmPrimitiveType.WAY),
-                        JLabel.HORIZONTAL);
+    @Override
+    public String getDescriptionText() {
+        return tr("Changed nodes of {0}", way.getDisplayName(DefaultNameFormatter.getInstance()));
+    }
+
+    @Override
+    public Icon getDescriptionIcon() {
+        return ImageProvider.get(OsmPrimitiveType.WAY);
     }
 }
Index: /trunk/src/org/openstreetmap/josm/command/ChangePropertyCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/ChangePropertyCommand.java	(revision 4917)
+++ /trunk/src/org/openstreetmap/josm/command/ChangePropertyCommand.java	(revision 4918)
@@ -14,6 +14,5 @@
 import java.util.List;
 import java.util.Map;
-
-import javax.swing.JLabel;
+import javax.swing.Icon;
 
 import org.openstreetmap.josm.Main;
@@ -145,5 +144,6 @@
     }
 
-    @Override public JLabel getDescription() {
+    @Override
+    public String getDescriptionText() {
         String text;
         if (objects.size() == 1 && tags.size() == 1) {
@@ -187,5 +187,10 @@
                 text = tr("Set {0} properties for {1} objects", tags.size(), objects.size());
         }
-        return new JLabel(text, ImageProvider.get("data", "key"), JLabel.HORIZONTAL);
+        return text;
+    }
+
+    @Override
+    public Icon getDescriptionIcon() {
+        return ImageProvider.get("data", "key");
     }
 
@@ -196,11 +201,12 @@
         for (final OsmPrimitive osm : objects) {
             children.add(new PseudoCommand() {
-                @Override public JLabel getDescription() {
-                    return new JLabel(
-                                osm.getDisplayName(DefaultNameFormatter.getInstance()),
-                                ImageProvider.get(OsmPrimitiveType.from(osm)),
-                                JLabel.HORIZONTAL);
-
-                }
+                @Override public String getDescriptionText() {
+                    return osm.getDisplayName(DefaultNameFormatter.getInstance());
+                }
+
+                @Override public Icon getDescriptionIcon() {
+                    return ImageProvider.get(OsmPrimitiveType.from(osm));
+                }
+
                 @Override public Collection<? extends OsmPrimitive> getParticipatingPrimitives() {
                     return Collections.singleton(osm);
Index: /trunk/src/org/openstreetmap/josm/command/ChangePropertyKeyCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/ChangePropertyKeyCommand.java	(revision 4917)
+++ /trunk/src/org/openstreetmap/josm/command/ChangePropertyKeyCommand.java	(revision 4918)
@@ -10,9 +10,6 @@
 import java.util.LinkedList;
 import java.util.List;
+import javax.swing.Icon;
 
-import javax.swing.JLabel;
-
-import org.openstreetmap.josm.command.Command;
-import org.openstreetmap.josm.command.PseudoCommand;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.validation.util.NameVisitor;
@@ -71,5 +68,5 @@
 
     @Override
-    public JLabel getDescription() {
+    public String getDescriptionText() {
         String text = tr( "Replace \"{0}\" by \"{1}\" for", key, newKey);
         if (objects.size() == 1) {
@@ -80,5 +77,10 @@
             text += " "+objects.size()+" "+trn("object","objects",objects.size());
         }
-        return new JLabel(text, ImageProvider.get("data", "key"), JLabel.HORIZONTAL);
+        return text;
+    }
+
+    @Override
+    public Icon getDescriptionIcon() {
+        return ImageProvider.get("data", "key");
     }
 
@@ -94,6 +96,10 @@
             children.add(new PseudoCommand() {
                 @Override
-                public JLabel getDescription() {
-                    return v.toLabel();
+                public String getDescriptionText() {
+                    return v.name;
+                }
+                @Override
+                public Icon getDescriptionIcon() {
+                    return v.icon;
                 }
                 @Override
Index: /trunk/src/org/openstreetmap/josm/command/ChangeRelationMemberRoleCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/ChangeRelationMemberRoleCommand.java	(revision 4917)
+++ /trunk/src/org/openstreetmap/josm/command/ChangeRelationMemberRoleCommand.java	(revision 4918)
@@ -6,7 +6,5 @@
 import java.util.Collection;
 
-import javax.swing.JLabel;
-
-import org.openstreetmap.josm.Main;
+import javax.swing.Icon;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
@@ -64,13 +62,14 @@
     }
 
-    @Override public JLabel getDescription() {
-        return new JLabel(
-                        tr("Change relation member role for {0} {1}",
-                                OsmPrimitiveType.from(relation),
-                                relation.getDisplayName(DefaultNameFormatter.getInstance())
-                        ),
-                        ImageProvider.get(OsmPrimitiveType.from(relation)),
-                        JLabel.HORIZONTAL
-        );
+    @Override
+    public String getDescriptionText() {
+        return tr("Change relation member role for {0} {1}",
+                OsmPrimitiveType.from(relation),
+                relation.getDisplayName(DefaultNameFormatter.getInstance()));
+    }
+
+    @Override
+    public Icon getDescriptionIcon() {
+        return ImageProvider.get(OsmPrimitiveType.from(relation));
     }
 }
Index: /trunk/src/org/openstreetmap/josm/command/Command.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/Command.java	(revision 4917)
+++ /trunk/src/org/openstreetmap/josm/command/Command.java	(revision 4918)
@@ -160,13 +160,4 @@
     @Override public Collection<? extends OsmPrimitive> getParticipatingPrimitives() {
         return cloneMap.keySet();
-    }
-
-    public String getDescrpitionText() {
-        Object o = getDescription();
-        if (o instanceof JLabel) {
-            return ((JLabel) o).getText();
-        } else {
-            return o.toString();
-        }
     }
 
Index: /trunk/src/org/openstreetmap/josm/command/ConflictAddCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/ConflictAddCommand.java	(revision 4917)
+++ /trunk/src/org/openstreetmap/josm/command/ConflictAddCommand.java	(revision 4918)
@@ -5,6 +5,5 @@
 
 import java.util.Collection;
-
-import javax.swing.JLabel;
+import javax.swing.Icon;
 import javax.swing.JOptionPane;
 
@@ -63,12 +62,13 @@
     }
 
-    @Override public JLabel getDescription() {
-        return new JLabel(
-                tr("Add conflict for ''{0}''",
-                        conflict.getMy().getDisplayName(DefaultNameFormatter.getInstance())
-                ),
-                ImageProvider.get(OsmPrimitiveType.from(conflict.getMy())),
-                JLabel.HORIZONTAL
-        );
+    @Override
+    public String getDescriptionText() {
+        return tr("Add conflict for ''{0}''",
+                conflict.getMy().getDisplayName(DefaultNameFormatter.getInstance()));
+    }
+
+    @Override
+    public Icon getDescriptionIcon() {
+        return ImageProvider.get(OsmPrimitiveType.from(conflict.getMy()));
     }
 }
Index: /trunk/src/org/openstreetmap/josm/command/CoordinateConflictResolveCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/CoordinateConflictResolveCommand.java	(revision 4917)
+++ /trunk/src/org/openstreetmap/josm/command/CoordinateConflictResolveCommand.java	(revision 4918)
@@ -5,6 +5,5 @@
 
 import java.util.Collection;
-
-import javax.swing.JLabel;
+import javax.swing.Icon;
 
 import org.openstreetmap.josm.data.conflict.Conflict;
@@ -38,10 +37,12 @@
     }
 
-    @Override public JLabel getDescription() {
-        return new JLabel(
-                        tr("Resolve conflicts in coordinates in {0}",conflict.getMy().getId()),
-                        ImageProvider.get("data", "object"),
-                        JLabel.HORIZONTAL
-        );
+    @Override
+    public String getDescriptionText() {
+        return tr("Resolve conflicts in coordinates in {0}", conflict.getMy().getId());
+    }
+
+    @Override
+    public Icon getDescriptionIcon() {
+        return ImageProvider.get("data", "object");
     }
 
Index: /trunk/src/org/openstreetmap/josm/command/DeleteCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/DeleteCommand.java	(revision 4917)
+++ /trunk/src/org/openstreetmap/josm/command/DeleteCommand.java	(revision 4918)
@@ -19,4 +19,5 @@
 import java.util.Set;
 import java.util.Map.Entry;
+import javax.swing.Icon;
 
 import javax.swing.JLabel;
@@ -149,6 +150,15 @@
     }
 
-    @Override public JLabel getDescription() {
-        if (toDelete.size() == 1) {
+    private Set<OsmPrimitiveType> getTypesToDelete() {
+        Set<OsmPrimitiveType> typesToDelete = new HashSet<OsmPrimitiveType>();
+        for (OsmPrimitive osm : toDelete) {
+            typesToDelete.add(OsmPrimitiveType.from(osm));
+        }
+        return typesToDelete;
+    }
+
+    @Override
+    public String getDescriptionText() {
+           if (toDelete.size() == 1) {
             OsmPrimitive primitive = toDelete.iterator().next();
             String msg = "";
@@ -159,18 +169,12 @@
             }
 
-            return new JLabel(tr(msg, primitive.getDisplayName(DefaultNameFormatter.getInstance())),
-                    ImageProvider.get(OsmPrimitiveType.from(primitive)), JLabel.HORIZONTAL);
+            return tr(msg, primitive.getDisplayName(DefaultNameFormatter.getInstance()));
         } else {
-            Set<OsmPrimitiveType> typesToDelete = new HashSet<OsmPrimitiveType>();
-            for (OsmPrimitive osm : toDelete) {
-                typesToDelete.add(OsmPrimitiveType.from(osm));
-            }
+            Set<OsmPrimitiveType> typesToDelete = getTypesToDelete();
             String msg = "";
-            String apiname = "object";
             if (typesToDelete.size() > 1) {
                 msg = trn("Delete {0} object", "Delete {0} objects", toDelete.size(), toDelete.size());
             } else {
                 OsmPrimitiveType t = typesToDelete.iterator().next();
-                apiname = t.getAPIName();
                 switch(t) {
                 case NODE: msg = trn("Delete {0} node", "Delete {0} nodes", toDelete.size(), toDelete.size()); break;
@@ -179,5 +183,18 @@
                 }
             }
-            return  new JLabel(msg, ImageProvider.get("data", apiname), JLabel.HORIZONTAL);
+            return msg;
+        }
+    }
+
+    @Override
+    public Icon getDescriptionIcon() {
+        if (toDelete.size() == 1) {
+            return ImageProvider.get(OsmPrimitiveType.from(toDelete.iterator().next()));
+        }
+        Set<OsmPrimitiveType> typesToDelete = getTypesToDelete();
+        if (typesToDelete.size() > 1) {
+            return ImageProvider.get("data", "object");
+        } else {
+            return ImageProvider.get(typesToDelete.iterator().next());
         }
     }
@@ -190,10 +207,13 @@
             for (final OsmPrimitive osm : toDelete) {
                 children.add(new PseudoCommand() {
-                    @Override public JLabel getDescription() {
-                        return new JLabel(
-                                tr("Deleted ''{0}''",
-                                        osm.getDisplayName(DefaultNameFormatter.getInstance())),
-                                        ImageProvider.get(OsmPrimitiveType.from(osm)), JLabel.HORIZONTAL);
+
+                    @Override public String getDescriptionText() {
+                        return tr("Deleted ''{0}''", osm.getDisplayName(DefaultNameFormatter.getInstance()));
                     }
+
+                    @Override public Icon getDescriptionIcon() {
+                        return ImageProvider.get(OsmPrimitiveType.from(osm));
+                    }
+
                     @Override public Collection<? extends OsmPrimitive> getParticipatingPrimitives() {
                         return Collections.singleton(osm);
Index: /trunk/src/org/openstreetmap/josm/command/DeletedStateConflictResolveCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/DeletedStateConflictResolveCommand.java	(revision 4917)
+++ /trunk/src/org/openstreetmap/josm/command/DeletedStateConflictResolveCommand.java	(revision 4918)
@@ -6,7 +6,8 @@
 import java.util.Collection;
 
-import javax.swing.JLabel;
+import javax.swing.Icon;
 
 import org.openstreetmap.josm.data.conflict.Conflict;
+import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.conflict.pair.MergeDecisionType;
@@ -38,10 +39,12 @@
     }
 
-    @Override public JLabel getDescription() {
-        return new JLabel(
-                        tr("Resolve conflicts in deleted state in {0}",conflict.getMy().getId()),
-                        ImageProvider.get("data", "object"),
-                        JLabel.HORIZONTAL
-        );
+    @Override
+    public String getDescriptionText() {
+        return tr("Resolve conflicts in deleted state in {0}", conflict.getMy().getId());
+    }
+
+    @Override
+    public Icon getDescriptionIcon() {
+        return ImageProvider.get("data", "object");
     }
 
Index: /trunk/src/org/openstreetmap/josm/command/ModifiedConflictResolveCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/ModifiedConflictResolveCommand.java	(revision 4917)
+++ /trunk/src/org/openstreetmap/josm/command/ModifiedConflictResolveCommand.java	(revision 4918)
@@ -6,4 +6,5 @@
 
 import java.util.Collection;
+import javax.swing.Icon;
 
 import javax.swing.JLabel;
@@ -33,5 +34,6 @@
     }
 
-    @Override public JLabel getDescription() {
+    @Override
+    public String getDescriptionText() {
         String msg = "";
         switch(OsmPrimitiveType.from(conflict.getMy())) {
@@ -40,9 +42,10 @@
         case RELATION: msg = marktr("Set the ''modified'' flag for relation {0}"); break;
         }
-        return new JLabel(
-                        tr(msg,conflict.getMy().getId()),
-                        ImageProvider.get("data", "object"),
-                        JLabel.HORIZONTAL
-        );
+        return tr(msg,conflict.getMy().getId());
+    }
+
+    @Override
+    public Icon getDescriptionIcon() {
+        return ImageProvider.get("data", "object");
     }
 
Index: /trunk/src/org/openstreetmap/josm/command/MoveCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/MoveCommand.java	(revision 4917)
+++ /trunk/src/org/openstreetmap/josm/command/MoveCommand.java	(revision 4918)
@@ -9,4 +9,5 @@
 import java.util.LinkedList;
 import java.util.List;
+import javax.swing.Icon;
 
 import javax.swing.JLabel;
@@ -131,6 +132,12 @@
     }
 
-    @Override public JLabel getDescription() {
-        return new JLabel(trn("Move {0} node", "Move {0} nodes", nodes.size(), nodes.size()), ImageProvider.get("data", "node"), JLabel.HORIZONTAL);
+    @Override
+    public String getDescriptionText() {
+        return trn("Move {0} node", "Move {0} nodes", nodes.size(), nodes.size());
+    }
+
+    @Override
+    public Icon getDescriptionIcon() {
+        return ImageProvider.get("data", "node");
     }
 
Index: /trunk/src/org/openstreetmap/josm/command/PseudoCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/PseudoCommand.java	(revision 4917)
+++ /trunk/src/org/openstreetmap/josm/command/PseudoCommand.java	(revision 4918)
@@ -3,4 +3,6 @@
 
 import java.util.Collection;
+import javax.swing.Icon;
+import javax.swing.JLabel;
 
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -14,6 +16,40 @@
     /**
      * Provide a description that can be presented in a list or tree view.
+     * @deprecated This abstract method is deprecated.
+     * On 2012-03-01, this abstract method will be removed.
+     * At the same moment, the methods {@link #getDescrpitionText()} and {@link #getDescrpitionIcon()}
+     * will be made abstract.
+     * For a smooth transition, replace {@link #getDescription()} by implementations of
+     * {@link #getDescrpitionText()} and {@link #getDescrpitionIcon()} as early as possible.
+     * {@link #getDescription()} is no longer abstract and can therefore be removed.
      */
-    abstract public Object getDescription();
+    @Deprecated
+    public Object getDescription() {
+        return null;
+    }
+
+    /**
+     * Provides a description text representing this command.
+     */
+    public String getDescriptionText() {
+        Object o = getDescription();
+        if (o instanceof JLabel) {
+            return ((JLabel) o).getText();
+        } else {
+            return o.toString();
+        }
+    }
+
+    /**
+     * Provides a descriptive icon of this command.
+     */
+    public Icon getDescriptionIcon() {
+        Object o = getDescription();
+        if (o instanceof JLabel) {
+            return ((JLabel) o).getIcon();
+        } else {
+            return null;
+        }
+    }
 
     /**
Index: /trunk/src/org/openstreetmap/josm/command/PurgeCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/PurgeCommand.java	(revision 4917)
+++ /trunk/src/org/openstreetmap/josm/command/PurgeCommand.java	(revision 4918)
@@ -13,5 +13,5 @@
 import java.util.Set;
 
-import javax.swing.JLabel;
+import javax.swing.Icon;
 
 import org.openstreetmap.josm.data.osm.DataSet;
@@ -252,6 +252,11 @@
 
     @Override
-    public Object getDescription() {
-        return new JLabel(trn("Purged {0} object", "Purged {0} objects", toPurge.size(), toPurge.size()), ImageProvider.get("data", "purge"), JLabel.HORIZONTAL);
+    public String getDescriptionText() {
+        return trn("Purged {0} object", "Purged {0} objects", toPurge.size(), toPurge.size());
+    }
+
+    @Override
+    public Icon getDescriptionIcon() {
+        return ImageProvider.get("data", "purge");
     }
 
Index: /trunk/src/org/openstreetmap/josm/command/RelationMemberConflictResolverCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/RelationMemberConflictResolverCommand.java	(revision 4917)
+++ /trunk/src/org/openstreetmap/josm/command/RelationMemberConflictResolverCommand.java	(revision 4918)
@@ -7,5 +7,5 @@
 import java.util.List;
 
-import javax.swing.JLabel;
+import javax.swing.Icon;
 
 import org.openstreetmap.josm.Main;
@@ -46,10 +46,12 @@
     }
 
-    @Override public JLabel getDescription() {
-        return new JLabel(
-                        tr("Resolve conflicts in member list of relation {0}", my.getId()),
-                        ImageProvider.get("data", "object"),
-                        JLabel.HORIZONTAL
-        );
+    @Override
+    public String getDescriptionText() {
+        return tr("Resolve conflicts in member list of relation {0}", my.getId());
+    }
+
+    @Override
+    public Icon getDescriptionIcon() {
+        return ImageProvider.get("data", "object");
     }
 
Index: /trunk/src/org/openstreetmap/josm/command/RotateCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/RotateCommand.java	(revision 4917)
+++ /trunk/src/org/openstreetmap/josm/command/RotateCommand.java	(revision 4918)
@@ -6,5 +6,5 @@
 import java.util.Collection;
 
-import javax.swing.JLabel;
+import javax.swing.Icon;
 
 import org.openstreetmap.josm.data.coor.EastNorth;
@@ -99,6 +99,11 @@
 
     @Override
-    public JLabel getDescription() {
-        return new JLabel(trn("Rotate {0} node", "Rotate {0} nodes", nodes.size(), nodes.size()), ImageProvider.get("data", "node"), JLabel.HORIZONTAL);
+    public String getDescriptionText() {
+        return trn("Rotate {0} node", "Rotate {0} nodes", nodes.size(), nodes.size());
+    }
+
+    @Override
+    public Icon getDescriptionIcon() {
+        return ImageProvider.get("data", "node");
     }
 }
Index: /trunk/src/org/openstreetmap/josm/command/ScaleCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/ScaleCommand.java	(revision 4917)
+++ /trunk/src/org/openstreetmap/josm/command/ScaleCommand.java	(revision 4918)
@@ -6,5 +6,5 @@
 import java.util.Collection;
 
-import javax.swing.JLabel;
+import javax.swing.Icon;
 
 import org.openstreetmap.josm.data.coor.EastNorth;
@@ -81,7 +81,11 @@
 
     @Override
-    public JLabel getDescription() {
-        return new JLabel(trn("Scale {0} node", "Scale {0} nodes", nodes.size(), nodes.size()), ImageProvider.get("data", "node"), JLabel.HORIZONTAL);
+    public String getDescriptionText() {
+        return trn("Scale {0} node", "Scale {0} nodes", nodes.size(), nodes.size());
     }
 
+    @Override
+    public Icon getDescriptionIcon() {
+        return ImageProvider.get("data", "node");
+    }
 }
Index: /trunk/src/org/openstreetmap/josm/command/SequenceCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/SequenceCommand.java	(revision 4917)
+++ /trunk/src/org/openstreetmap/josm/command/SequenceCommand.java	(revision 4918)
@@ -8,4 +8,5 @@
 import java.util.HashSet;
 import java.util.List;
+import javax.swing.Icon;
 
 import javax.swing.JLabel;
@@ -87,6 +88,12 @@
     }
 
-    @Override public JLabel getDescription() {
-        return new JLabel(tr("Sequence")+": "+name, ImageProvider.get("data", "sequence"), JLabel.HORIZONTAL);
+    @Override
+    public String getDescriptionText() {
+        return tr("Sequence: {0}", name);
+    }
+
+    @Override
+    public Icon getDescriptionIcon() {
+        return ImageProvider.get("data", "sequence");
     }
 
Index: /trunk/src/org/openstreetmap/josm/command/TagConflictResolveCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/TagConflictResolveCommand.java	(revision 4917)
+++ /trunk/src/org/openstreetmap/josm/command/TagConflictResolveCommand.java	(revision 4918)
@@ -7,6 +7,6 @@
 import java.util.Collection;
 import java.util.List;
+import javax.swing.Icon;
 
-import javax.swing.JLabel;
 
 import org.openstreetmap.josm.data.conflict.Conflict;
@@ -55,5 +55,6 @@
     }
 
-    @Override public JLabel getDescription() {
+    @Override
+    public String getDescriptionText() {
         String msg = "";
         switch(OsmPrimitiveType.from(conflict.getMy())) {
@@ -62,9 +63,10 @@
         case RELATION: msg = marktr("Resolve {0} tag conflicts in relation {1}"); break;
         }
-        return new JLabel(
-                        tr(msg,getNumDecidedConflicts(), conflict.getMy().getId()),
-                        ImageProvider.get("data", "object"),
-                        JLabel.HORIZONTAL
-        );
+        return tr(msg,getNumDecidedConflicts(), conflict.getMy().getId());
+    }
+
+    @Override
+    public Icon getDescriptionIcon() {
+        return ImageProvider.get("data", "object");
     }
 
Index: /trunk/src/org/openstreetmap/josm/command/TransformNodesCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/TransformNodesCommand.java	(revision 4917)
+++ /trunk/src/org/openstreetmap/josm/command/TransformNodesCommand.java	(revision 4918)
@@ -9,5 +9,5 @@
 import java.util.Map;
 
-import javax.swing.JLabel;
+import javax.swing.Icon;
 
 import org.openstreetmap.josm.data.coor.EastNorth;
@@ -123,6 +123,11 @@
 
     @Override
-    public JLabel getDescription() {
-        return new JLabel(trn("Transform {0} node", "Transform {0} nodes", nodes.size(), nodes.size()), ImageProvider.get("data", "node"), JLabel.HORIZONTAL);
+    public String getDescriptionText() {
+        return trn("Transform {0} node", "Transform {0} nodes", nodes.size(), nodes.size());
+    }
+
+    @Override
+    public Icon getDescriptionIcon() {
+        return ImageProvider.get("data", "node");
     }
 
Index: /trunk/src/org/openstreetmap/josm/command/VersionConflictResolveCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/VersionConflictResolveCommand.java	(revision 4917)
+++ /trunk/src/org/openstreetmap/josm/command/VersionConflictResolveCommand.java	(revision 4918)
@@ -6,6 +6,5 @@
 
 import java.util.Collection;
-
-import javax.swing.JLabel;
+import javax.swing.Icon;
 
 import org.openstreetmap.josm.data.conflict.Conflict;
@@ -33,5 +32,6 @@
     }
 
-    @Override public JLabel getDescription() {
+    @Override
+    public String getDescriptionText() {
         String msg = "";
         switch(OsmPrimitiveType.from(conflict.getMy())) {
@@ -40,9 +40,10 @@
         case RELATION: msg = marktr("Resolve version conflict for relation {0}"); break;
         }
-        return new JLabel(
-                        tr(msg,conflict.getMy().getId()),
-                        ImageProvider.get("data", "object"),
-                        JLabel.HORIZONTAL
-        );
+        return tr(msg, conflict.getMy().getId());
+    }
+
+    @Override
+    public Icon getDescriptionIcon() {
+        return ImageProvider.get("data", "object");
     }
 
Index: /trunk/src/org/openstreetmap/josm/command/WayNodesConflictResolverCommand.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/command/WayNodesConflictResolverCommand.java	(revision 4917)
+++ /trunk/src/org/openstreetmap/josm/command/WayNodesConflictResolverCommand.java	(revision 4918)
@@ -7,5 +7,5 @@
 import java.util.List;
 
-import javax.swing.JLabel;
+import javax.swing.Icon;
 
 import org.openstreetmap.josm.data.conflict.Conflict;
@@ -40,11 +40,12 @@
         this.mergedNodeList = mergedNodeList;
     }
+    @Override
+    public String getDescriptionText() {
+        return tr("Resolve conflicts in node list of way {0}", conflict.getMy().getId());
+    }
 
-    @Override public JLabel getDescription() {
-        return new JLabel(
-                        tr("Resolve conflicts in node list of way {0}", conflict.getMy().getId()),
-                        ImageProvider.get("data", "object"),
-                        JLabel.HORIZONTAL
-        );
+    @Override
+    public Icon getDescriptionIcon() {
+        return ImageProvider.get("data", "object");
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/CommandListMutableTreeNode.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/CommandListMutableTreeNode.java	(revision 4917)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/CommandListMutableTreeNode.java	(revision 4918)
@@ -2,4 +2,5 @@
 package org.openstreetmap.josm.gui.dialogs;
 
+import javax.swing.JLabel;
 import javax.swing.tree.DefaultMutableTreeNode;
 
@@ -15,5 +16,5 @@
 
     public CommandListMutableTreeNode(PseudoCommand cmd, int idx) {
-        super(cmd.getDescription());
+        super(new JLabel(cmd.getDescriptionText(), cmd.getDescriptionIcon(), JLabel.HORIZONTAL));
         this.cmd = cmd;
         this.idx = idx;
